在 Babel 中读取法语文件时出现问题

在 Babel 中读取法语文件时出现问题

读取临时文件时,切换到法语(注释/取消注释文档类)时出现错误:

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}

相关内容