Как вы отображаете прямые кавычки вместо фигурных кавычек при использовании пакета "списки" LaTeX?
Я использую латекс 's"списки" пакет для форматирования исходного кода. К сожалению, я получаю вьющиеся цитаты вместо прямых. Поскольку фигурные кавычки не всегда указывают в правильном направлении, это выглядит плохо. Как я могу получить прямые цитаты вместо этого?
Я бы предпочел не изменять и не фильтровать сам исходный код. Фильтрация кода для правильного изменения " на " или " будет работать, но это проще сделать, чем сказать с несколькими кавычками на строке, или кавычки, охватывающие несколько строк. Или вы можете использовать символ или множество других вещей. Но мне бы очень хотелось сохранить источник неизменным.
Пример 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):
6 ответов
рассматривали ли вы возможность использования шрифта monospaced (пишущая машинка) для листинга? Работает следующий пример:
\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}
Я вижу в документации (которая должна была быть распространена с packge, но доступна по адресу 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
ing среды списка, или использовать
\begin{lstlisting}[upquote=true]
...
\end{lstlisting}
возможно также, что это свойство уже установлено для вас на соответствующем языке определение (см. документы снова, большой список предопределенных языков на стр. 12).
использование:
\lstloadlanguages{<dialects you need>}
в заголовке. А затем установите язык, используя любое из вышеупомянутых соглашений для выбора параметров.
ответ dmckee выше, вероятно, работает. Если вы отбросите свое последнее условие, то есть разрешите изменения в коде, тогда есть более общее решение, которое я обычно использую, когда (La)TeX отображает символ как-то иначе, чем я ожидаю, это использовать . Я перечисляю его здесь, потому что он может быть полезен в других ситуациях:
\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 (см. пакета.)
у меня была такая же проблема, используя fontspec, и решение было не set \defaultfontfeatures{Mapping=tex-text}
, а параметр Mapping=tex-text
в частности, только на главном и без шрифта, и оставляя шрифт tt для собственных устройств. :)
вот решение
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{lmodern}
% in the listings package configuration, try:
literate={"}{\textquotedbl}1,
возможно, это потому, что я установил списки раньше, чем пользователь LaTeX, но я удивлен, узнав, что без пакета списков поведение отличается.
мое решение было похоже на решение Дэвида Ханака, но я использовал символы для двойной цитаты, как описано в шпаргалке LaTeX (http://stdout.org / ~winston / латекс)
\newcommand{\QQ}[1]{``#1''}