如何在列表包中正确使用下划线?

如何在列表包中正确使用下划线?

我知道下划线在 LaTeX 中是一个特殊字符,但是如何在lstlisting不改变代码块本身的情况下在块内输入下划线?

以下是一个简短的例子:

设置:

\lstset{
    frame=l,
    language=C++,
    basicstyle=\fontsize{11}{11}\selectfont\ttfamily,
    aboveskip=3mm,
    belowskip=3mm,
    showstringspaces=false,
    columns=fixed,
    numbers=left,
    numberstyle=\tiny\color{gray},
    keywordstyle=\color{blue},
    commentstyle=\color{dkgreen},
    stringstyle=\color{mauve},
    breaklines=true,
    breakatwhitespace=true,
    tabsize=4,
    texcl=true 
}

代码片段:

\begin{lstlisting}
shared_ptr<vector> p; // this is a shared_ptr
\end{lstlisting}

如果您能提供一个对两者都适用的答案lstlisting,那么这lstinline可能是最好的。

答案1

你的问题源于你有

texcl=true

作为你的一部分listings设置。让我们看看listings文档提及texcl

texcl=<true>|<false>texcl(默认为false
激活或停用 LaTeX 注释行。如果激活,注释行分隔符将照常打印,但注释行文本(直到行末)将读取为 LaTeX 代码并以注释样式排版。

当然,如果你在注释中texcl设置了 和_,那么你将被迫遵守 LaTeX 的文本下划线规则。我的建议是删除该texcl选项:

在此处输入图片描述

\documentclass{article}
\usepackage{listings,xcolor}
\lstset{
  frame=l,
  language=C++,
  basicstyle=\ttfamily,
  numbers=left,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{green}\ttfamily,
  stringstyle=\color{mauve},
  %texcl=true 
}
\begin{document}
\begin{lstlisting}
shared_ptr<vector> p; // this is a shared_ptr
\end{lstlisting}
\end{document}

或者,您可以使用texcl但应该注意评论中与 LaTeX 相关的用途的特殊处理:

在此处输入图片描述

\documentclass{article}
\usepackage{listings,xcolor}
\lstset{
  frame=l,
  language=C++,
  basicstyle=\ttfamily,
  numbers=left,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{green},
  stringstyle=\color{mauve},
  texcl=true 
}
\begin{document}
\begin{lstlisting}
shared_ptr<vector> p; // this is a \verb|shared_ptr|
\end{lstlisting}
\end{document}

相关内容