我排版代码时,减号(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 回答3

2
<p>可以多带带定义其样式,listings 好像是有morestyle,多带带定义减号字体。</p>
  • 我去,单 独 会被改成“多带带” – Chennanzhang 2019-08-20 10:39 回复
  • 编辑器的bug,“多带带”会被改成“多带带”。 – Chennanzhang 2019-08-20 10:39 回复
1
<pre style="margin-top: 0px; margin-bottom: 0px; padding: 0.88889em; font-size: 0.9em; word-break: normal; overflow-wrap: normal; overflow: auto; background-color: rgb(246, 246, 246); border-radius: 4px; caret-color: rgb(26, 26, 26); color: rgb(26, 26, 26); text-size-adjust: auto;">\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</pre><p><br></p><p>参考知乎文章《<a href="https://zhuanlan.zhihu.com/p/74177124" target="_self">listings - 修改符号 U+002D (hyphen-minus) 的输出方式</a>》</p>
0
<p>用minted宏包或listings宏包排版代码比较合适。</p>

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。