我正在排版一份包含 bash 代码示例的文档。如何让代码像
`pwd -P`
以相同类型的引号出现?我希望文档的读者能够将代码直接复制并粘贴到终端中。Latex 给了我开头的单引号符号 '。
答案1
您还可以使用literate
键来定义文字字符替换:
\documentclass{article}
\usepackage{listings}
\def\backtick{\char18}
\lstdefinestyle{mystyle}{literate={`}{\backtick}1, escapechar=@}
\begin{document}
\begin{lstlisting}[style=mystyle]
@\backtick@pwd -P@\backtick@
`pwd -P`
\end{lstlisting}
\end{document}
这使
对我来说,从 PDF 文件中复制/粘贴两行的结果相同。但是,请注意间距的细微差异。我不完全确定哪个间距是正确的,但我倾向于说是第二行的间距,因为它literate
明确指示listings
将替换视为单个字符。
答案2
加载upquote
包:
\documentclass{article}
\usepackage{listings}
\usepackage{upquote}
\begin{document}
\begin{lstlisting}
`pwd -P`
\end{lstlisting}
\end{document}
这也将'
字符更改为无向引用,这可能也是所希望的。
\documentclass{article}
\usepackage{listings}
\usepackage{upquote}
\begin{document}
\begin{lstlisting}
`pwd -P`
echo '$PATH'
\end{lstlisting}
\end{document}
答案3
通过 CarLaTeX 的评论,我找到了解决方案。
首先escapechar
使用命令在样式定义中进行定义\lstdefinestyle
。例如,
\lstdefinestyle{mystyle}{escapechar=@}
然后,在环境中使用定义的样式lstlisting
。
\begin{lstlisting}[style=mystyle]
@\`{}@pwd -P@\`{}@
\end{lstlisting}
s之间的字符组合@
将变成反引号。
编辑:
上述解决方案在纸上看起来正确,但从文档中复制时字符不正确。允许复制的解决方案是定义一个反引号字符
\def\backtick{\char18}
像这样使用它
\begin{lstlisting}[style=mystyle]
@\backtick@pwd -P@\backtick@
\end{lstlisting}