列表中的反向引用

列表中的反向引用

我正在排版一份包含 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}

相关内容