
Для скрипта, который компилирует LaTeX для меня, мне нужно отправить строку \"
в командную строку, внутри строки, разделенной "
. Пример:
>pdflatex "\IeC{\" o}"
Как мне экранировать the "
в середине? Если я это сделаю pdflatex "\IeC{\\" o}"
, то "\" будет означать a \
и строка все равно будет завершена в середине "
. Есть ли способ обойти это?
Пояснение:Буквальная строка, которую я хочу отправить в pdflatex, это \IeC{\"o}
. После всех экранирований это то, что должно быть передано как аргумент командной строки.
решение1
\\\"
Чтобы избежать первого символа, это\\
Чтобы избежать второго символа, это\"
Так что просто склейте их вместе.\\\"
Итак, если говорить коротко,\\IeC{\\\"o}
Я никогда раньше не пользовался pdflatex, но обычно экранирования работают именно так.
...если только { и } тоже не нуждаются в экранировании
решение2
Используйте карат в качестве экранированного символа:
pdflatex "\IeC{^" o}"
Редактировать:
Попробуйте опустить внешние кавычки:
pdflatex \IeC{\" o}
Следует помнить, что Windows не обрабатывает аргументы командной строки так, как это делает оболочка Linux/Unix. Аргументы передаются в нетронутом виде (включая внешние кавычки) программе, которая должна решить, как ее обрабатывать. Поэтому вам может потребоваться экранировать пробел. Все зависит от того, как pdflatex видит аргументы.
решение3
Вам также необходимо экранировать обратные косые черты:
pdflatex "^\IeC{^\^" o}"
...но я не уверен, что знаки вставки что-то значат для LaTeX, хотя, по-моему, они, скорее всего, значат.
В качестве альтернативы можно попробовать использовать двойные кавычки, чтобы заключить весь параметр в двойные кавычки, но я сомневаюсь, что это сработает.
Однако, что определенно сработает, так это изменение вашего скрипта pdflatex для объединения параметров %1 и %2 (до %n, если необходимо), которые вы затем можете передать скрипту без каких-либо кавычек.