以下示例在使用 pdflatex 编译时出现错误
! Text line contains an invalid character.
\documentclass{article}
\usepackage{ifluatex}
\ifluatex
\usepackage{fontspec}
\fi
\begin{document}
abc
\ifluatex ^^^^20ac\fi
\end{document}
可以通过使用另一个字符并更改其 catcode 来解决该问题,例如在内部ifluatex
:
\ifluatex{\catcode`\!=7 !!!!20ac}\fi
但我想知道:有没有办法^^^^
在 pdflatex 中以某种方式全局隐藏-notation 中的无效字符?
答案1
无效字符是^^^
,即0x1E
;默认情况下,LaTeX 会使从0x01
到 的所有字符0x1F
无效,但以下字符除外
0x09 0x0C 0x0D
即制表符、换行符和回车符(类别代码 10、13 和 5)。
解决方法是忽略这个字符:
\documentclass{article}
\usepackage{ifluatex}
\ifluatex
\usepackage{fontspec}
\else
\catcode`\^^^=9
\fi
\begin{document}
abc
\ifluatex ^^^^20ac\fi
\end{document}
假设您不需要代码^^^
中的任何地方pdflatex
,这应该可以让 TeX 满意。