我想_
在代码清单中提高字符的高度,因为我使用的 T1 字体将其放置在基线以下太多的位置;这会导致像这样的标识符bla_bla
看起来很糟糕。我正在使用,listings
所以我认为我可以使用literate
选项来搜索/替换_
一个升高的版本。不幸的是,搜索/替换选项与词法分析器冲突,这会在查找时破坏标识符_
。
MWE 来说明这个问题:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{libertine}
\usepackage{listings}
\lstset{
columns=[l]flexible,
basicstyle={\sffamily},
morekeywords={to},
}
\begin{document}
\begin{lstlisting}
add_to_list(x)
\end{lstlisting}
\begin{lstlisting}[
literate={
{_}{{\raisebox{.3ex}{\_}}}1
}]
add_to_list(x)
\end{lstlisting}
\end{document}
有没有办法在不破坏词法分析器的情况下实现这种行为?
答案1
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{libertine}
\usepackage{listings}
\lstset{
columns=[l]flexible,
basicstyle={\sffamily},
morekeywords={to},
}
\begin{document}
\begin{lstlisting}
add_to_list(x)
\end{lstlisting}
\makeatletter
\lst@CCPutMacro
\lst@ProcessLetter{"5F}{{\raisebox{0.3ex}{\_}}}\@empty\z@\@empty
\makeatother
\begin{lstlisting}
add_to_list(x)
\end{lstlisting}
\end{document}