怎么用LaTeX排版代码时将减号改成文本模式? 财富值10

2019-08-19 16:46发布

[图]我排版代码时,减号(U+002D)总为数学样式,我想将它改为文本样式,怎么办?这是我的代码\documentclass{article} \usepackage{listings} \usepacka...

我排版代码时,减号(U+002D)总为数学样式,我想将它改为文本样式,怎么办?

这是我的代码

\documentclass{article}
\usepackage{listings}
\usepackage{fontspec}
\newfontfamily\ubuntu{Ubuntu Mono}

\begin{document}
\begin{lstlisting}[language=C++,numbers=left,basicstyle=\ubuntu]
#include
int main() {
    int x = 0;
    for(int i = 100; i > 0; i--) x++;
    return 0;
}
\end{lstlisting}
\end{document}

结果排出来是这样的

image.png

而我想改成这样

image.png


当我将 Ubuntu Mono 换成 Consolas 等其他本地等宽字体时,减号也是数学样式的,不知道怎么改。


Note:我不想更改全局等宽字体(不使用 setmonofont 命令)。

3条回答
Carcino
2019-08-20 05:52
\makeatletter
% https://tex.stackexchange.com/a/424193
% see also `texdoc listings-devel`, sec. 13.3.1
\lst@CCPutMacro
    \lst@ProcessOther{"2D}{-{}}
    \@empty\z@\@empty
\makeatother


参考知乎文章《listings - 修改符号 U+002D (hyphen-minus) 的输出方式

一周热门 更多>