В моем приложении я (с помощью латексной генерации) создаю таблицу, заполненную цифрами. Теперь, поскольку эти цифры могут иметь сложные названия, мне нужно убедиться, что генератор делает каждыйюридическое название windowsзаконный путь к файлу Latex.
Я начал со знака процента, поскольку я точно знаю, что он есть в некоторых файлах. (Это остаток от имени, содержащего знак «/», который преобразуется другой частью в «%2F»).
Теперь это сломало довольно много вещей, так как я, очевидно, часто использую % для читаемости кода, файл latex прямо сейчас:
\documentclass{article}
\usepackage[a4paper, portrait]{geometry}
\usepackage{graphicx}
\usepackage{tabu}
\catcode`\%=12
\begin{document}
\begin{table}
\centering
\begin{tabu}{c}
\includegraphics{{"testing %"}}
\\%
\includegraphics{test2}
\end{tabu}
\end{table}
\end{document}
Теперь (как и следовало ожидать) проблема в том, что знак процента больше не считается знаком "продолжение строки здесь", а является простым символом и печатается как таковой. Я попробовал включить внутрь \catcode
ячейки таблицы:
\begin{tabu}{c}
\catcode`\%=12
\includegraphics{{"testing %"}}
\catcode`\%=14
\\%
\includegraphics{test2}
\end{tabu}
Но это ломает компилятор latex с "файл закончил сканирование с использованием \tabu@collectbody". Так как же заставить это работать?
решение1
Вы можете создать команду, которая расширяется до безопасного процента
\documentclass{article}
\usepackage[a4paper, portrait]{geometry}
\usepackage{graphicx}
\usepackage{tabu}
\catcode`\%=12
\newcommand\pcnt{%}
\catcode`\%=14
\begin{document}
\begin{table}
\centering
\begin{tabu}{c}
\includegraphics{"testing \pcnt"}\\% this is a comment
\includegraphics{test2}
\end{tabu}
\end{table}
\end{document}