2009-01-11 102 views
18

Estoy usando el paquete LaTeX de "listings" para formatear el código fuente. Lamentablemente, recibo comillas en lugar de comillas rectas. Dado que las comillas circulares no siempre apuntan en la dirección correcta, se ve mal. ¿Cómo puedo obtener citas directas en su lugar?¿Cómo se muestran las comillas rectas en lugar de las comillas al utilizar el paquete de 'listados' de LaTeX?

Preferiría no cambiar o filtrar el código fuente en sí. Filtrar el código para cambiar correctamente "a` `o '' funcionaría, pero esto es más fácil de hacer que lo dicho con múltiples comillas en una línea, o comillas que abarcan varias líneas. O podría usar símbolos o una serie de otras cosas. 'realmente me gustaría mantener sin cambios la fuente

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

Ejemplo de salida (usando Miktex en las ventanas): Image of source code

(Direct link to image of incorrect output)

+0

Cambia el código fuente, pero puede corregir la dirección de las comillas usando '(tecla justo a la izquierda de su tecla) en el lado izquierdo de la cita y '(en la tecla de comillas regulares) a la derecha. – Alex

Respuesta

4

¿Ha considerado utilizar una fuente monoespaciada (máquina de escribir) para el listado?El siguiente ejemplo funciona:

\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

El uso de \ ttfamily en el estilo básico también funciona bien para mí, aunque me hace perder el estilo proporcionado por el paquete de listado para mi lenguaje (como palabras clave negritas). ¿Alguna idea además de redefinir el estilo de lenguaje? – jasonb

18

Veo en la documentación (que debería haberse distribuido con el paquete, pero está disponible en http://www.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf) para listings que hay una propiedad configurable llamada upquote para ocuparse de esto.

De la documentación:

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

hacer algo como

\lstset{upquote=true} 

antes begin ing el entorno lista, o el

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

También es posible que tis la propiedad ya está configurada para usted en la definición de idioma apropiado (vea de nuevo los documentos, lista grande de idiomas predefinidos en la página 12).

Uso:

\lstloadlanguages{<dialects you need>} 

en la cabecera. Y luego configure el idioma usando cualquiera de las convenciones anteriores para elegir opciones.

+0

Esto parecía prometedor, pero desafortunadamente no funcionó cuando lo probé. Las cotizaciones cursivas aún aparecen para mí en Linux y Windows con Miktex de I set upquote verdadero. Establecerlo en falso tampoco funcionó. –

+0

Eso es lo que obtengo solo por rozar los documentos. ChrisN parece tener la propiedad correcta, pero le recomiendo que use los idiomas predefinidos, si corresponde. Y, lea los documentos, todo está allí. Aclamaciones. – dmckee

+0

Uso el lenguaje predefinido en mi trabajo real. Eliminé mucho de lo que hago para que el ejemplo sea mínimo. Ese PDF es un buen recurso, pero al buscarlo todavía no encontré la respuesta. Gracias sin embargo. –

7

dmckee's answer anterior probablemente funcione. Si deja caer su última condición, es decir, permite cambios en el código, entonces hay una solución más genérica, que tiendo a usar cada vez que (La) TeX representa un personaje de alguna manera diferente de lo que espero que haga es usar el comando \symbol . Enumero aquí, ya que puede ser útil en otras situaciones también:

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

Y entonces su ejemplo:

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

nota de las llaves que supuestamente tienen los listados de nuevo a modo de látex (ver escapechars opción del paquete.)

+1

Esto funcionó para mí, gracias! –

+0

cómo hacer que funcione en texto libre? actualmente no usa –

0

Tal vez sea porque he instalado listados pronto como un usuario LaTeX, pero me sorprende saber que los anuncios sin empaquetar el comportamiento es diferente.

Mi solución fue similar a David Hanak de, pero utiliza los símbolos de comillas dobles como se describe en la lámina de látex de trucos (http://stdout.org/~winston/latex)

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

Aquí es una solución

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

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

I tuvo el mismo problema, utilizando fontspec, y la solución fue no estableció \defaultfontfeatures{Mapping=tex-text}, pero en su lugar estableciendo Mapping=tex-text específicamente en la fuente principal y sin fuente, y dejando la fuente tt t o son sus propios dispositivos. :)

Cuestiones relacionadas