我想生成与目标受众的主要语言相匹配的投影仪幻灯片。最简单的方法似乎是简化comment
包装并将单个幻灯片打包到includecomment
/excludecomment
环境中...(如上一个问题)。
但是,当涉及非 ASCII 字符时,这种情况会根据所使用的位置和字符(甚至文档类)以各种方式中断,例如:
./comment.cut:2: Package inputenc Error: Keyboard character used is undefined
./comment.cut:1: Argument of \UTFviii@three@octets has an extra }.
./comment.cut:3: Package inputenc Error: Unicode char \Uffffffffifnum (U+2E7) not set up for use with LaTeX.
我如何使以下 MWE 工作以及潜在的问题是什么?
\documentclass{beamer}
\newcommand{\lvlang}{DE}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{comment}
\usepackage{ifthen}
\newcommand{\iflvlangde}[2]{%
\ifthenelse{\equal{\lvlang}{DE}}{#1}{#2}%
}
\makeatletter
\iflvlangde{
\usepackage[main=ngerman]{babel}
\includecomment{DE}
\excludecomment{EN}
}{
\usepackage[main=english]{babel}
\includecomment{EN}
\excludecomment{DE}
}
\makeatother
\begin{document}
\begin{DE}
\begin{frame}[fragile]{mäh}
föö
\end{frame}
\end{DE}
\end{document}
答案1
正如我在写这个问题时发现的那样,问题在于comment
包上,或者更具体地说,它将扩展的字符写入中间文件。请参阅原始答案更多细节。
解决方案是在加载后添加以下内容来修补和comment
命令:WriteCommentLine
ThisComment
comment
\long\def\WriteCommentLine#1{\immediate\write\CommentStream{\unexpanded{#1}}}
\let\ThisComment\WriteCommentLine
谢谢埃格尔!