列表识字选项中断标识符

列表识字选项中断标识符

我想_在代码清单中提高字符的高度,因为我使用的 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}

相关内容