\lstMakeShortInline 带 @ 分隔符

\lstMakeShortInline 带 @ 分隔符

我在制作的 Beamer 演示文稿中包含了大量内联 C++ 代码,并且我希望能够使用 \lstinline 的简短语法。如果我使用 ! 字符作为分隔符,我的代码可以正常显示,例如

\lstMakeShortInline!
!cout << "This C++ displays fine";!

但是当我尝试使用 @ 字符作为分隔符时,由于它几乎不会出现在 C++ 代码中,因此行显示为未格式化,周围是文字 @。据我所知,@ 不是 LaTeX 中的特殊字符,那么为什么会发生这种情况?

编辑:我没有测试我给出的例子,经过进一步检查,仅有的我可以用作分隔符的字符是 ~,如下例所示:

\documentclass{beamer}
\usepackage{listings}
\lstMakeShortInline[language=C++,basicstyle=\ttfamily]~
\begin{document}
\begin{frame}
~cout << "This C++ displays fine";~
\end{frame}
\end{document}

但是,其他分隔符(例如 |)似乎在文章文档类中起作用,这是 beamer 的问题吗?

答案1

如果你试试

\documentclass{beamer}
\usepackage{listings}
\lstMakeShortInline[language=C++,basicstyle=\ttfamily]@
\lstMakeShortInline[language=C++,basicstyle=\ttfamily]|
\begin{document}

\begin{frame}
\show @
\show |
\end{frame}

\end{document}

编译停止于

> the character @.

然后

> |=macro:
->\lstinline [language=C++,basicstyle=\ttfamily ]|.

显示两种情况之间的根本区别:@被规范化为类别代码 12。这发生在文档开始处,因此您可以推迟声明:

\documentclass{beamer}
\usepackage{listings}
\lstMakeShortInline[language=C++,basicstyle=\ttfamily]|
\begin{document}
\lstMakeShortInline[language=C++,basicstyle=\ttfamily]@

\begin{frame}[fragile]
|cout << "This C++ displays fine";|

@cout << "This C++ displays fine";@
\end{frame}
\end{document}

将以相同的方式显示两行。请记住声明fragile所有逐字排版材料的框架。

在此处输入图片描述

相关内容