\write 和 \\ 命令

\write 和 \\ 命令

为什么我使用下面的代码时会出现一些错误,我该如何修复这个问题?

\documentclass{article}

\begin{document}
\newwrite\indexist
\immediate\openout\indexist=classic.ist
\immediate\write\indexist{\\}
\immediate\write\indexist{\catcode`\{=11{\catcode`\{=2 text}
\immediate\write\indexist{other text\catcode`\}=11}\catcode`\}=2}
\immediate\closeout\indexist
\end{document}

答案1

的问题\\已由 egreg: 解决\string\\。这可以防止扩展并转换\\为两个\catcode 为 12 的标记(与数字相同的 catcode)。

{对于不匹配的和也需要同样的操作}。但是不匹配的括号在 内不起作用。一个技巧是使用通过(expanded def)\write定义的宏,然后将括号作为 catcode 为 12 的标记包含。\edef\leftbracechar\rightbracechar

\documentclass{article}

\edef\leftbracechar{\string{}
\edef\rightbracechar{\string}}

\begin{document}
\newwrite\indexist
\immediate\openout\indexist=classic.ist
\immediate\write\indexist{\string\\}
\immediate\write\indexist{\leftbracechar text}
\immediate\write\indexist{other text\rightbracechar}
\immediate\closeout\indexist
\end{document}

相关内容