在 beamer 类中,当我使用 LaTeX 进行编译时,输出的 pdf 结果与我预期的完全一致。但是当我将其更改为 XeLaTeX 时,在 lstlisting 环境中,代码中的每个选项卡都会产生一个“^^I”占位符(请参阅下面的 output-pdf)。我该如何解决这个问题?
if( Bedingung ) {
^^I//Code, der nur ausgefuehrt wird, wenn die Bedingung wahr ist
}
^^I^^I
LaTeX 代码(精简到最小,以一帧为例):
\begin{document}
\begin{frame}[fragile]{if-Statements}
\begin{block}{Syntax}
\begin{lstlisting}
if( Bedingung ) {
//Code, der nur ausgefuehrt wird, wenn die Bedingung wahr ist
}
\end{lstlisting}
\end{block}
\begin{block}{Logik}
\begin{itemize}
\item Alles innerhalb eines if-Blocks wird nur ausgeführt, wenn die Bedingung (in Klammern) wahr ist.
\end{itemize}
\end{block}
\end{frame}
\end{document}
答案1
已经可以用逐字文本实现该效果的小测试文件:
\documentclass{beamer}
\begin{document}
\begin{frame}[fragile]
\verb|a b|
\end{frame}
\end{document}
如果fragile
给出了选项,则将beamer
框架写入辅助文件\jobname.vrb
。XeTeX 的问题就发生在这一步,\jobname.vrb
包含:
\verb|a^^Ib|
Classbeamer
通过将许多字母的类别代码更改为 12(“其他”,如数字)以逐字方式读取框架。否则,使用通常的类别代码,制表符将被打印为空格字符。然后,当文件由 XeTeX 写入时,它会看到一个“不可打印”的 ASCII 字符(ASCII 代码小于空格字符的“控制”字符),并使用可打印 ASCII 字符的替代符号^^I
。pdfTeX 的行为在这方面有所不同。
可以通过使用 XeTeX 的选项来解决此问题-8bit
,在帮助屏幕上:
-8bit make all characters printable, don't use ^^X sequences