24

LaTeXの「リスト」パッケージを使用して、ソース コードをフォーマットしています。残念ながら、まっすぐな引用符ではなく、巻き毛の引用符が表示されます。カーリー クォートは常に正しい方向を指しているとは限らないため、見栄えが悪くなります。代わりにどうすれば直接の見積もりを取得できますか?

ソースコード自体を変更したり、フィルタリングしたりしたくありません。コードをフィルタリングして " を `` または '' に適切に変更することはできますが、1 行に複数の引用符を付けたり、複数の行にまたがる引用符を使用したりするよりも簡単に実行できます。または、シンボルや他の多くのものを使用することもできます。ソースを変更しないでください。

例 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を使用): ソースコードのイメージ

(正しくない出力の画像への直接リンク)

4

6 に答える 6

25

ドキュメント (パッケージと一緒に配布されているはずですが、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}

beginリスト環境を使用する前、または使用する

\begin{lstlisting}[upquote=true]
...
\end{lstlisting}

このプロパティが適切な言語定義で既に設定されている可能性もあります (12 ページの定義済み言語の大きなリストのドキュメントをもう一度参照してください)。

使用する:

\lstloadlanguages{<dialects you need>}

ヘッダーに。次に、オプションを選択するための上記の規則のいずれかを使用して言語を設定します。

于 2009-01-11T04:50:02.950 に答える
10

上記のdmckeeの答えはおそらく機能します。最後の条件を削除した場合、つまりコードの変更を許可した場合、より一般的な解決策があります。これは、(La)TeXが文字を予想とは異なる方法でレンダリングする場合は常に、\symbolコマンドを使用することです。他の状況でも役立つ可能性があるため、ここにリストします。

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

そしてあなたの例:

\begin{lstlisting}
...
print{\qq}The temperature is{\qq},Celsius,{\qq}degrees Celsius{\qq}
...
\end{lstlisting}

リストをLaTeXモードに戻すと思われる中括弧に注意してください(escapecharsパッケージのオプションを参照してください)。

于 2009-01-11T08:26:02.123 に答える
9

リストに等幅 (タイプライター) フォントを使用することを検討しましたか? 次の例が機能します。

\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}
于 2009-01-11T13:28:42.420 に答える
8

ここに解決策があります

\usepackage[T1]{fontenc}  
\usepackage{textcomp}  
\usepackage{lmodern}  

% in the listings package configuration, try:  
literate={"}{\textquotedbl}1,  
于 2010-07-28T18:32:52.533 に答える
6

fontspecを使用して同じ問題が発生しました。解決策は、を設定せ\defaultfontfeatures{Mapping=tex-text}、代わりMapping=tex-textにメインフォントとサンセリフフォントのみに設定し、ttフォントを独自のデバイスに残すことでした。:)

于 2011-01-13T14:32:49.533 に答える
1

LaTeXユーザーとして早くからリストをインストールしたことが原因かもしれませんが、リストパッケージがないと動作が異なることを知って驚いています。

私の解決策はDavidHanakの解決策と似ていましたが、LaTeXチートシート(http://stdout.org/~winston/latex)で説明されているように、二重引用符の記号を使用しました。

\newcommand{\QQ}[1]{``#1''}
于 2009-11-07T03:37:11.910 に答える