使用LaTeX'listing'包时,如何显示直引号而不是弯引号?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用LaTeX'listing'包时,如何显示直引号而不是弯引号?相关的知识,希望对你有一定的参考价值。

我正在使用LaTeX的“listings”包来格式化源代码。不幸的是,我得到的是引号而不是直引号。由于卷曲引号并不总是指向正确的方向,因此它看起来很糟糕。我怎样才能得到直引号呢?

我不想更改或过滤源代码本身。过滤代码以正确地改变“to”或“'会起作用,但这比在一行上使用多个引号或跨越多行的引号更容易完成。或者你可以使用符号或许多其他东西。但我我真的想保持源不变。

示例LaTeX:

documentclass{article}
usepackage{listings}
egin{document}
egin{lstlisting}
Fahrenheit=input("What is the Fahrenheit temperature?")
Celsius=(5.0/9.0)*(Fahrenheit-32)
print"The temperature is",Celsius,"degrees Celsius"
end{lstlisting}
end{document}

示例输出(在Windows上使用Miktex):

(Qazxswpoi)

答案

您是否考虑过将monospaced(打字机)字体用于列表?以下示例有效:

Direct link to image of incorrect output
另一答案

我在文档中看到(应该与包装一起分发,但可以在documentclass{article} usepackage{listings} lstset{basicstyle= tfamily} % <<< This line added egin{document} egin{lstlisting} Fahrenheit=input("What is the Fahrenheit temperature?") Celsius=(5.0/9.0)*(Fahrenheit-32) print"The temperature is",Celsius,"degrees Celsius" end{lstlisting} end{document} 上找到),因为http://www.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf有一个名为listings的可设置属性来处理这个问题。

从文档:

upquote

做点什么

upquote=⟨true|false⟩                                                false
  determines whether the left and right quote are printed ‘’ or `'. This 
  key requires the textcomp package if true. 

lstset{upquote=true} ing列表环境之前,或使用

begin

也可能已在适当的语言定义中为您设置此属性(请再次参阅文档,第12页的预定义语言的大列表)。

使用:

egin{lstlisting}[upquote=true]
...
end{lstlisting}

在标题中。然后使用上述任一惯例设置语言以选择选项。

另一答案

上面的lstloadlanguages{<dialects you need>} 可能有效。如果你放弃你的最后一个条件,即你允许更改代码,那么有一个更通用的解决方案,我倾向于使用它(La)TeX渲染一个字符的方式与我预期的不同是使用dmckee's answer命令。我在这里列出它因为它在其他情况下也很有用:

symbol

然后你的例子:


ewcommand{qq}{symbol{34}} % 34 is the decimal ascii code for "

注意花括号,据说将列表恢复到LaTeX模式(参见包的egin{lstlisting} ... print{qq}The temperature is{qq},Celsius,{qq}degrees Celsius{qq} ... end{lstlisting} 选项。)

另一答案

这是一个解决方案

escapechars
另一答案

我有同样的问题,使用fontspec,解决方案是不设置usepackage[T1]{fontenc} usepackage{textcomp} usepackage{lmodern} % in the listings package configuration, try: literate={"}{ extquotedbl}1, ,而是专门设置defaultfontfeatures{Mapping=tex-text}仅主要和sans字体,并将tt字体留给它自己的设备。 :)

另一答案

也许是因为我早期作为LaTeX用户安装了列表,但我很惊讶地发现,如果没有列表包,行为就会有所不同。

我的解决方案类似于David Hanak,但是我使用了LaTeX Cheat Sheet(Mapping=tex-text)中描述的双引号符号

http://stdout.org/~winston/latex

以上是关于使用LaTeX'listing'包时,如何显示直引号而不是弯引号?的主要内容,如果未能解决你的问题,请参考以下文章

如何在matlab中的xlabel,ylabel,legend和text函数中使用latex

latex缺少包

matlab latex字体设置不正常

Latex 编译出错!不知道宏包怎么调顺序...出现Command \@proof already defined ,急求指点!具体如下:

LaTeX中插入MATLAB风格的代码块

LaTeX中插入MATLAB风格的代码块