读取临时文件时,切换到法语(注释/取消注释文档类)时出现错误:
Runaway argument?
testcolor;testtext \\\textbf {\ChangesIncolor \ -- \ChangesIntext }\fi \ETC.
! Paragraph ended before \changeschopline was complete.
我假设法语使用;
不同,因此出现错误,但我不确定并且不知道如何解决这个问题。
感谢您的知识。
梅威瑟:
\begin{filecontents*}{\jobname.soc}
testcolor;testtext
\end{filecontents*}
% \documentclass[english]{article}
\documentclass[french]{article} % error reading file
\usepackage{babel}
\def\changeschopline#1;#2 \\{%
\def\ChangesIncolor{#1}%
\def\ChangesIntext{#2}%
}
\newcommand{\listofchanges}{
\newread\ChangesInFile%
\openin\ChangesInFile = \jobname.soc%
\loop\unless\ifeof\ChangesInFile%
\read\ChangesInFile to \ChangesLine%
\ifeof\ChangesInFile\else%
\expandafter\changeschopline\ChangesLine\\%
\textbf{\ChangesIncolor\ -- \ChangesIntext}%
\fi%
\repeat
\closein\ChangesInFile%
}
\begin{document}
\listofchanges
\end{document}
免责声明:我使用此变化包,请参阅此处的问题和测试文件:
答案1
;
感谢您的有益评论,我的解决方案是在读取文件之前关闭速记字符,然后再打开它。
到目前为止还没有副作用,而且巴别塔文档:几乎每一个我认为可以替代的字符在至少一种语言中都是简写字符 :D
\begin{filecontents*}{\jobname.soc}
testcolor;testtext
\end{filecontents*}
\documentclass[french]{article}
\usepackage{babel}
\def\changeschopline#1;#2 \\{%
\def\ChangesIncolor{#1}%
\def\ChangesIntext{#2}%
}
\newcommand{\listofchanges}{
\ifbabelshorthand{;}{\shorthandoff{;}}{}
\newread\ChangesInFile%
\openin\ChangesInFile = \jobname.soc%
\loop\unless\ifeof\ChangesInFile%
\read\ChangesInFile to \ChangesLine%
\ifeof\ChangesInFile\else%
\expandafter\changeschopline\ChangesLine\\%
\textbf{\ChangesIncolor\ -- \ChangesIntext}%
\fi%
\repeat
\closein\ChangesInFile%
\ifbabelshorthand{;}{\shorthandon{;}}{}
}
\begin{document}
Qu'est-ce que c'est ? C'est; c'est: c'est! ...
\listofchanges
Qu'est-ce que c'est ? C'est; c'est: c'est! ...
\end{document}