#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}
в ней не должно быть запрещено.