Как внедрить ключевые слова LaTeX в документ LaTeX с помощью ‘listings’

#latex #tex #listings

#Латекс #tex #списки

Вопрос:

Я хочу процитировать код LaTeX в свой документ, но как мне правильно внедрить ключевые слова «begin{lstlisting}» и «end{lstlisting}»?

Приведенный НИЖЕ КОД НЕ РАБОТАЕТ (очевидно):

 lstset{language=TeX, basicstyle=footnotesize, numbers=left, numberstyle=tiny, frame=single}

begin{lstlisting}

begin{lstlisting}          % this is code

place your source code here % this is code

end{lstlisting}            % this is code

end{lstlisting}
  

Ответ №1:

Есть ли у вас usepackage{listings} в преамбуле? Если это так, это должно сработать. TeX это поддерживаемый язык.

Вот минимальный пример:

 documentclass{article}
usepackage{listings}
begin{document}
  This is a StackOverflow test file.\
  To use texttt{lstlisting}, include this in the preamble:
  begin{lstlisting}
    usepackage{listings}
  end{lstlisting}
  Hope that helped :)
end{document}
  

который компилируется в

введите описание изображения здесь

Редактировать

Чтобы заключать команды в кавычки из пакета listings (на самом деле, только для end{lstlisting} ), выполните команду latex для печати символа, и все готово. В следующем я определил @ как escape-символ, и все, что находится внутри двух @ символов, набирается в LaTeX. Итак, здесь я ввел ключевые слова с использованием LaTeX, а остальные внутри, lstlisting и end{...} последовательность не интерпретируется как закрытие среды.

 documentclass{article}
usepackage{listings}
begin{document}
This is a StackOverflow test file.\
Use escape characters to escape to LaTeX 
lstset{escapechar=@}
begin{lstlisting}
  begin{lstlisting}
      some code here
  @textbackslash@end{lstlisting}
end{lstlisting}
Hope that helped :)
end{document}
  

Результат таков

введите описание изображения здесь

Комментарии:

1. Да, и я знаю, что TeX поддерживается. Похоже, просто не получается процитировать код LaTeX. Я пытаюсь использовать совет lstnewenvironment, приведенный выше.

2. @nerd.brazil: смотрите мой минимальный пример. на моем компьютере он отлично компилируется. Если вы перечислите команды, которые не сработали, я могу попытаться посмотреть, компилируется ли это на моем.

3. ОК. Это я тоже понял. Теперь попробуйте заключить в кавычки ‘begin{lstlisting}’ и ‘end{lstlisting}’.

4. Просто второстепенный момент: экранирование в latex для печати символа » прерывает выделение ключевого слова listings для ‘end’. Если я не использую выделение ключевых слов, то этот метод довольно прост и элегантен.

5. В вашей схеме выделения фигурные скобки используются по умолчанию или они тоже цветные? Если по умолчанию, то вместо экранирования вы можете экранировать последнее } как @}@ . Дело в том, что вам просто нужно что-то экранировать, чтобы все это не интерпретировалось. Таким образом, это может быть любая буква внутри lstlisting тоже. Просто выберите тот цвет, который используется по умолчанию. Я бы сказал, что это лучше, поскольку при определении новых сред проблема все еще существует, если вам нужно ввести end последовательность для этой среды. В то время как здесь у вас больше контроля над этим.

Ответ №2:

можете ли вы использовать блок verbatim?

begin{дословно}

begin{lstlisting} % это код

разместите свой исходный код здесь % это код

end{lstlisting} % это код

end{дословно}

Комментарии:

1. Я могу, но я бы потерял нумерацию строк и фрейм, а также, возможно, выделение ключевого слова.

Ответ №3:

Вы можете использовать

 lstnewenvironment{OtherListing}
    {}
    {}
  

создать новую среду, которая ведет себя как list lstlisting , и end{lstlisting} в ней не должно быть запрещено.