有什么我可以轻松在 Latex 中显示的命令吗?我目前正在使用:
\indent\indent\footnotesize{\# apt-get --purge remove rubygems} \\
但这并没有很好地区分命令和文本。我还能做些什么来更好地展示它。
答案1
通常使用打字机字体来格式化 shell 命令。\texttt
但是,从语义上讲,到处使用并不是很令人满意。此外,如果您想更改 shell 命令的排版方式,则必须检查代码并检查每次出现的\texttt
,确定它是否用于排版 shell 命令,然后可能更改它。更好的方法是为此特定目的定义一个新命令。它可以轻松查看您正在排版的内容,并允许您在以后轻松改变对排版的想法。要定义新命令,我们可以使用 LaTeX 命令\newcommand{cmd}[num of args]{definition}
。这种方法还允许我们将额外的缩进和换行符包装在命令内。它看起来像这样:
\newcommand{\shellcmd}[1]{\\\indent\indent\texttt{\footnotesize\# #1}\\}
然后可以像这样使用它:
\documentclass{article}
\newcommand{\shellcmd}[1]{\\\indent\indent\texttt{\footnotesize\# #1}\\}
\begin{document}
\noindent Consider the following command:
\shellcmd{apt-get --purge remove rubygems}
This removes the \texttt{rubygems} package.
\end{document}
效果如下:
您应该注意命令中的初始换行符。如果您想在行首使用它,您可以定义一个没有初始换行符的带星号的版本。为此后缀pacakge 最适合。然后,您可以定义一个没有初始换行符的带星号的版本,如下所示:
\WithSuffix\def\shellcmd*#1{\indent\indent\texttt{\footnotesize\# #1}\\}
答案2
我建议你使用包裹listings
为此,它允许通过逐字宏格式化内联代码片段,\lstinline
并通过环境显示较长代码的样式代码lstlisting
。以下是两种样式的示例:
笔记:
- 我还建议定义自己的命令来强调文本的各个部分,就像我下面为 所做的那样
\Package
。这可以使您的 LaTeX 代码更有意义,还可以简化您以后可能想要做的更改。 - 如果您希望内联列表的背景颜色,请参阅如何重新定义 \lstinline 以自动突出显示或绘制所有内联代码片段周围的框架?。
- 使用此包还可以自动将 Unix 命令行会话输出包含在文档中?
代码:
\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\lstdefinestyle{BashInputStyle}{
language=bash,
basicstyle=\small\sffamily,
numbers=left,
numberstyle=\tiny,
numbersep=3pt,
frame=tb,
columns=fullflexible,
backgroundcolor=\color{yellow!20},
linewidth=0.9\linewidth,
xleftmargin=0.1\linewidth
}
\newcommand*{\Package}[1]{\texttt{#1}}%
\begin{document}
\noindent The command:
\lstinline[style=BashInputStyle]´# apt-get --purge remove rubygems´.
removes the \Package{rubygems} package.
\bigskip
\noindent Consider the following command:
\begin{lstlisting}[style=BashInputStyle]
# apt-get --purge remove rubygems
\end{lstlisting}
This removes the \Package{rubygems} package.
\end{document}