listings
在我想要在 mathescape 中执行的环境中$\text{\ttfamily\_}$
。想要这样做的原因是为了能够在执行某些伪代码样式时使用\left
和。示例:\right
\documentclass{article}
\usepackage{listings}
\usepackage{amsmath}
\lstdefinestyle{mystyle}{
basicstyle=\ttfamily,
mathescape
}
\begin{document}
\bgroup
\begin{lstlisting}[style=mystyle]
$\displaystyle\left(\sum_i\text{\ttfamily my\_var}\right)$:
$\texttt{my\_var}\neq$ my_var because $\texttt\_\neq$_
\end{lstlisting}
\egroup
\end{document}
在上面的输出中,字母之间的字距和下划线粗细都不正确。我可以接受字距,但我需要修复下划线。有什么建议吗?
感谢:D
答案1
对于下划线,请使用 T1 编码。列表中的间距由列表设置/添加,因此您需要进行调整。
\documentclass{article}
\usepackage{listings}
\usepackage{amsmath}
\lstdefinestyle{mystyle}{
basicstyle=\ttfamily,
mathescape
}
\usepackage[T1]{fontenc}
\begin{document}
\bgroup
\begin{lstlisting}[style=mystyle]
$\displaystyle\left(\sum_i\text{\ttfamily my\_var}\right)$:
$\texttt{my\_var}\neq$ my_var because $\texttt\_\neq$_
\end{lstlisting}
\egroup
\end{document}
答案2
如果有人决定忽视为何应使用 \usepackage[T1]{fontenc}并且只是想要一个肮脏的修复来使用fontenc
列表中的:
\documentclass{article}
\usepackage{listings}
\usepackage{amsmath}
\lstdefinestyle{mystyle}{
basicstyle=\ttfamily,
mathescape,
columns=fullflexible%<- Letter kerning fix from @egreg's comment
}
\begin{document}
\bgroup
\fontencoding{T1}%<- Temporary change font encoding (not recommended)
\begin{lstlisting}[style=mystyle]
$\displaystyle\left(\sum_i\text{\ttfamily my\_var}\right)$:
$\texttt{my\_var}=$ my_var because $\texttt\_=$_
\end{lstlisting}
\egroup
\end{document}