为什么我使用下面的代码时会出现一些错误,我该如何修复这个问题?
\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}