我试图将内核版本信息(即\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}
会给出与之前相同的结果。使用伟大的关心。