Юлия - Печать или запись в файл обратной косой черты в строке - PullRequest
0 голосов
/ 15 декабря 2018

Мне нужно, чтобы Джулия записала в файл команду LaTeX, вот минимальный пример:

open("./file.tex", "w") do f
   foo::Int = 5
   # write(f, "$foo\hline \n")        - This is what I would like to do
   # write(f, "$foo \\ \n")           - This is another thing I want to do, and it works
   # write(f, "$foo \\\hline \n")     - My final goal is this -> 
                                        leads to ERROR: syntax: invalid escape sequence
end

Вы поняли, что я хочу, я хотел бы получить строку собратная косая черта в нем, но не как побег характер.Это не работает:

julia> "\"  # Error

и это

julia> "\\\hline"

1 Ответ

0 голосов
/ 15 декабря 2018

Вы можете написать "\\hline", чтобы получить то, что вы хотите.В общем случае правило состоит в том, что два \ преобразуются в один \ в результирующей строке, поэтому "\\\h" является ошибкой, поскольку она анализируется как "\\", а затем "\h" и \h является недопустимымпоследовательность, но, например, "\\\r" будет принято, поскольку \r является действительной последовательностью пробелов (так что на самом деле вам повезло, что \h недействителен, поскольку это позволило вам обнаружить ошибку).

Также это означаетчто если вы хотите иметь something\\ + символ новой строки на выходе, вы должны написать ""something \\\\\n"" (пять \ - четыре, чтобы получить "\\", и пятый, чтобы получить новую строку с \n).

Вы можете использовать необработанный строковый литерал, чтобы избежать экранирования \, например: raw"\hline" (но тогда вы теряете возможность интерполировать).,Смотрите https://docs.julialang.org/en/latest/manual/strings/#man-raw-string-literals-1 для углового случая с \ в конце строки.

Вам также может быть интересен этот пакет https://github.com/stevengj/LaTeXStrings.jl, если вы много работаете с LaTeX.

...