Подтвердить что ты не робот

Как вы показываете прямые кавычки вместо курчавых цитат при использовании пакета "LaTeX"?

Я использую LaTeX " listings "для форматирования исходного кода. К сожалению, я получаю курчавые цитаты вместо прямых цитат. Поскольку фигурные кавычки не всегда указывают в правильном направлении, это выглядит плохо. Как я могу получить прямые кавычки?

Я бы предпочел не изменять или не фильтровать исходный код. Фильтрация кода для правильного изменения "на" или "будет работать, но это проще сделать, чем сказано с несколькими кавычками в строке или кавычками, охватывающими несколько строк. Или вы можете использовать символ или множество других вещей. 'd действительно хотел бы сохранить источник без изменений.

Пример 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}

Пример вывода (используя Miktex в окнах): Image of source code

(Прямая ссылка на изображение неправильного вывода)

4b9b3361

Ответ 1

Рассматривали ли вы использование шрифта моноширинного (пишущей машинки) для листинга? Следующий пример работает:

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

Ответ 2

Я вижу в документации (которая должна была быть распространена вместе с пакетом, но доступна в 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}

Также возможно, что свойство tis уже установлено для вас на соответствующем языке (см. документы снова, большой список предопределенных языков на стр. 12).

Использование:

\lstloadlanguages{<dialects you need>}

в заголовке. А затем установите язык, используя любой из приведенных выше соглашений для выбора параметров.

Ответ 3

dmckee answer выше, вероятно, работает. Если вы отбросите последнее условие, то есть вы разрешите изменения кода, то есть более общее решение, которое я обычно использую всякий раз, когда (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 в пакете.)

Ответ 4

У меня была та же проблема, с использованием fontspec, и решение заключалось в том, чтобы не устанавливать \defaultfontfeatures{Mapping=tex-text}, но вместо этого устанавливая Mapping=tex-text специально только на шрифт main и sans и оставляя шрифт tt для него собственными устройствами.:)

Ответ 5

Вот решение

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

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

Ответ 6

Возможно, потому, что я установил списки раньше, чем пользователь LaTeX, но я удивлен, узнав, что без пакета листингов поведение отличается от других.

Мое решение было похоже на Дэвида Ханака, но я использовал символы для двойной кавычки, как описано в чит-листах LaTeX (http://stdout.org/~winston/latex)

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