在 latex 中“转义”Linux 内核版本

在 latex 中“转义”Linux 内核版本

我试图将内核版本信息(即\texttt{2.6.40.4-5.fc15.x86_64})包含到我的 LaTeX 文档中。但是,LaTeX 一直尝试将其放入“数学文本”(“缺少 $ 插入”等等)。

我如何转义此文本,以便可以将其作为文本而不是等式放置?

答案1

问题在于下划线。TeX 使用它作为特殊字符来表示下标,如x_1,x_2。TeX 假设,只要遇到下划线,作者就认为它是下标。

幸运的是,这种行为可以被覆盖。更幸运的是,你不需要知道这是如何做到的,因为它已经为你解决了!LaTeX 提供了\verb(“verbatim”的缩写)命令,它可以将其内容排版为\texttt并整理出所有“特殊”字符,以便它们显示照原样。您可以使用以下方法:

\verb+2.6.40.4-5.fc15.x86_64+

+您可以自己选择的分隔符,因此如果字符串+中有,那么您可以选择其他分隔符,例如*。只需确保分隔符不是您要排版的字符串中出现的内容即可。

答案2

为了完成其他答案,我应该提到,如果文本是手动输入的(不是以编程方式生成的),\_或者\textunderscore可以用来轻松获取下划线:

\texttt{2.6.40.4-5.fc15.x86\_64}
\texttt{2.6.40.4-5.fc15.x86\textunderscore 64}

\_我想逃跑正如你所得到的:-)

答案3

也可以从 LaTeX 内部运行 shell 命令;例如,下面是如何获取输出uname -a

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}

\def\uname{{\ttfamily\def\do##1{\catcode`##1=12 }\dospecials
  \catcode` =10 \pdfprimitive\input|"uname -a" }\unskip}

\begin{document}
\uname
\end{document}

为此,必须pdflatex使用该-shell-escape选项运行。

更通用的版本可能是:

\def\syscommand#1{{\ttfamily\def\do##1{\catcode`##1=12 }\dospecials
  \catcode` =10 \pdfprimitive\input|"#1" }\unskip}

\syscommand{uname -a}会给出与之前相同的结果。使用伟大的关心。

相关内容