我知道下划线在 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}