我正在使用LaTeX的“listings”包来格式化源代码。不幸的是,我得到的是引号而不是直引号。由于卷曲引号并不总是指向正确的方向,因此它看起来很糟糕。我怎样才能得到直引号呢?
我不想更改或过滤源代码本身。过滤代码以正确地改变“to”或“'会起作用,但这比在一行上使用多个引号或跨越多行的引号更容易完成。或者你可以使用符号或许多其他东西。但我我真的想保持源不变。
示例LaTeX:
\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{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):
答案 0 :(得分:20)
我在文档中看到了(应该在http://www.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf下分发,但在{{3}}处可用),listings
有一个名为 upquote
<的可设置属性/ strong>要照顾好这个。
来自文档:
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}
在begin
列表环境之前,或使用
\begin{lstlisting}[upquote=true]
...
\end{lstlisting}
也可能已使用适当的语言为您设置了tis属性 定义(请参阅文档,第12页的预定义语言的大列表)。
使用:
\lstloadlanguages{<dialects you need>}
标题中的。然后使用上述任一惯例设置语言以选择选项。
答案 1 :(得分:7)
dmckee's answer可能有效。如果你放弃你的最后一个条件,即你允许更改代码,那么有一个更通用的解决方案,我倾向于使用它(La)TeX渲染一个字符的方式与我预期的不同是使用{{ 1}}命令。我在这里列出它,因为它在其他情况下也很有用:
\symbol
然后你的例子:
\newcommand{\qq}{\symbol{34}} % 34 is the decimal ascii code for "
请注意大括号,这些大括号应该将列表恢复为LaTeX模式(请参阅包的\begin{lstlisting}
...
print{\qq}The temperature is{\qq},Celsius,{\qq}degrees Celsius{\qq}
...
\end{lstlisting}
选项。)
答案 2 :(得分:5)
您是否考虑过使用等宽(打字机)字体进行商品定位?以下示例有效:
\documentclass{article}
\usepackage{listings}
\lstset{basicstyle=\ttfamily} % <<< This line added
\begin{document}
\begin{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}
答案 3 :(得分:5)
这是一个解决方案
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{lmodern}
% in the listings package configuration, try:
literate={"}{\textquotedbl}1,
答案 4 :(得分:5)
我遇到了同样的问题,使用的是fontspec,解决方案是不设置\defaultfontfeatures{Mapping=tex-text}
,而是专门设置Mapping=tex-text
仅使用main和sans字体,并且将tt字体留给自己的设备。 :)
答案 5 :(得分:0)
也许是因为我早期作为LaTeX用户安装了列表,但我很惊讶地发现,如果没有列表包,行为会有所不同。
我的解决方案类似于David Hanak,但是我使用了LaTeX备忘单(http://stdout.org/~winston/latex)
中描述的双引号符号\newcommand{\QQ}[1]{``#1''}