![当注释包含变音字符时,注释包会出现问题](https://linux22.com/image/319307/%E5%BD%93%E6%B3%A8%E9%87%8A%E5%8C%85%E5%90%AB%E5%8F%98%E9%9F%B3%E5%AD%97%E7%AC%A6%E6%97%B6%EF%BC%8C%E6%B3%A8%E9%87%8A%E5%8C%85%E4%BC%9A%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
我经常使用注释包来包含各种注释,以便可以创建省略各种临时注释的输出
然而,最近我发现当注释包含变音符号时,我会遇到问题。(我以前安装的 MikTeX 时没有遇到这些问题。)
\documentclass{article}
\usepackage[cp1250]{inputenc}
\usepackage[slovak]{babel}
\usepackage{comment}
\includecomment{mine}
\begin{document}
Normálny text.
Deliteľnosť.
\begin{mine}
Komentár.
\end{mine}
\end{document}
此文件无法编译。(如果相关的话,我使用 pdflatex。)日志文件中的第一个错误是:
! Undefined control sequence.
l.1 Koment\unhbox \voidb
@x \bgroup \let \unhbox \voidb@x \setbox \@tempboxa ...
我改为之后Komentár
,Koment\'ar
一切都正常。
如果我将其添加\usepackage[T1]{fontenc}
到序言中,文件就可以正常编译。(但输出看起来有点不同。这似乎是一个完全不相关的问题,似乎与根据字体的选择有关这个问题的答案。
对我来说,这有点奇怪,如果我不使用注释(或者我使用\excludecomment{mine}
),那么即使没有 fontenc 包,一切都可以正常工作。
答案1
该comment
包在辅助文件中写出环境的内容mine
,但是 的扩展á
(由 定义)cp1250
很脆弱,无法在写出后保留下来。
使用选项 T1时情况会发生变化fontenc
,因为在这种情况下字符会以自身形式写出。但是,T1 编码与 cp1250 不同,因此不能保证所有字符都能正常运行。例如,ř
不会。
简而言之,comment
与七位 ASCII 范围之外的字符不兼容。并非一切都丢失了:该包是在\unexpanded
不可用时编写的。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[cp1250]{inputenc}
\usepackage[slovak]{babel}
\usepackage{comment}
\long\def\WriteCommentLine#1{\immediate\write\CommentStream{\unexpanded{#1}}}
\let\ThisComment\WriteCommentLine
\includecomment{mine}
\begin{document}
Normálny text.
Deliteľnosť.
\begin{mine}
Komentár. ř
\end{mine}
\end{document}