2009-01-11 12 views
18

Ich verwende LaTeX 's "listings" Paket, um Quellcode zu formatieren. Leider bekomme ich anstelle von geraden Anführungszeichen geschweifte Anführungszeichen. Da die Anführungszeichen nicht immer in die richtige Richtung zeigen, sieht es schlecht aus. Wie kann ich stattdessen Zitate erhalten?Wie zeigen Sie gerade Anführungszeichen anstelle von Anführungszeichen an, wenn Sie das LaTeX-Paket "Listings" verwenden?

Ich würde es vorziehen, den Quellcode selbst nicht zu ändern oder zu filtern. Das Filtern des Codes, um "in" oder "" richtig zu ändern, würde funktionieren, aber dies ist einfacher als mit mehreren Anführungszeichen in einer Zeile oder Anführungszeichen, die sich über mehrere Zeilen erstrecken. Oder Sie könnten ein Symbol oder eine Menge anderer Dinge verwenden ‚d wirklich gerne die Quelle halten unverändert

Beispiel 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} 

Beispiel Ausgabe (mit Miktex auf Windows): Image of source code

(Direct link to image of incorrect output)

+0

Es ändert den Quellcode, aber Sie können die Richtung der Anführungszeichen mit dem '(Schlüssel nur links von Ihrem einen Schlüssel) auf der linken Seite des Zitats und '(auf dem regulären Anführungszeichen) auf der rechten Seite. – Alex

Antwort

4

Haben Sie in Betracht gezogen, eine Schriftart mit Schreibweise (Schreibmaschine) für die Auflistung zu verwenden?Das folgende Beispiel funktioniert:

\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} 
+1

Die Verwendung von \ ttfamily in der grundlegenden Stil funktioniert auch gut für mich, obwohl es mich das Styling durch das Angebotspaket für meine Sprache (wie Fettdruck Schlüsselwörter) verlieren verursacht. Gibt es irgendwelche Gedanken, die den Sprachstil neu definieren? – jasonb

18

Ich sehe in der Dokumentation (die mit der Verpackung verteilt werden sollte, aber ist verfügbar bei http://www.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf) für listings, dass es eine einstellbare Eigenschaft namens upquote gibt, um das zu kümmern.

Aus der Dokumentation:

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

Sie so etwas wie

\lstset{upquote=true} 

vor begin ing die Liste Umgebung oder

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

Es ist auch möglich nutzen, dass tis Die Eigenschaft ist bereits für Sie in der entsprechenden Sprache definiert (siehe auch die Dokumentation, große Liste der vordefinierten Sprachen auf Seite 12).

Verwendung:

\lstloadlanguages{<dialects you need>} 

im Header. Stellen Sie dann die Sprache mithilfe einer der oben genannten Konventionen ein, um Optionen auszuwählen.

+0

Das sah vielversprechend aus, aber leider hat es nicht funktioniert, als ich es versuchte. Die geschweiften Zitate erscheinen für mich immer noch auf Linux und Windows mit Miktex von ich habe wahrgesetzt. Die Einstellung auf false hat auch nicht funktioniert. –

+0

Das ist, was ich bekomme, um nur die Dokumente zu überfliegen. ChrisN scheint die richtige Eigenschaft zu haben, aber ich würde Sie ermutigen, die vordefinierten Sprachen zu verwenden, wenn eine angemessen ist. Und, lesen Sie die Dokumente, es ist alles drin. Prost. – dmckee

+0

Ich verwende die vordefinierte Sprache in meiner eigentlichen Arbeit. Ich habe viel von dem entfernt, was ich mache, um das Beispiel minimal zu machen. Dieses PDF ist eine gute Ressource, aber ich habe es immer noch nicht gefunden. Trotzdem danke. –

7

dmckee's answer oben wahrscheinlich funktioniert. Wenn Sie Ihre letzte Bedingung fallen lassen, dh Sie erlauben Änderungen am Code, dann gibt es eine allgemeinere Lösung, die ich immer dann verwende, wenn (La) TeX ein Zeichen irgendwie anders rendert als ich es erwarte, ist die Verwendung des Befehls \symbol . Ich liste sie hier, weil es auch in anderen Situationen nützlich sein kann:

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

Und dann Ihr Beispiel:

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

Beachten Sie die geschweiften Klammern, die angeblich Inserate zurück zu LaTeX-Modus (siehe escapechars Option des Pakets.)

+1

Das hat bei mir funktioniert, danke! –

+0

Wie funktioniert es im Freitext? Es tut nicht gerade –

0

Vielleicht ist es, weil ich Inserate früh als LaTeX Benutzer installiert, aber ich bin überrascht, dass das Verhalten ist anders ohne die Anzeigen zu lernen verpacken.

Meine Lösung zu David Hanak ist ähnlich war, aber ich verwendet, um die Symbole für doppelte Anführungszeichen, wie im LaTeX-Spickzettel beschrieben (http://stdout.org/~winston/latex)

\newcommand{\QQ}[1]{``#1''} 
3

Hier ist eine Lösung

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

% in the listings package configuration, try: 
literate={"}{\textquotedbl}1, 
5

I hatte das gleiche Problem, mit fontspec, und die Lösung war nicht\defaultfontfeatures{Mapping=tex-text} gesetzt, sondern Mapping=tex-text speziell auf nur die Haupt-und Sans-Schriftart gesetzt, und verlassen die TT-Schriftart t o es sind eigene Geräte. :)

Verwandte Themen