Я работаю над некоторыми листингами кода LaTeX и решил изменить интервал с четырех на два. Проблема в том, что в моем документе (около 500 страниц) очень много листингов... есть ли способ быстро переформатировать все листинги, чтобы использовать два пробела вместо четырех/восьми/двенадцати/...?
решение1
С помощью этой клавиши можно literate
превратить четыре последовательных пробела в два выходных пробела:
\documentclass{article}
\usepackage{listings}
\lstset{literate={\ \ \ \ }{\space\space}{2}}
\begin{document}
\begin{lstlisting}[language=python]
if x is None:
print('yes')
# just a quick test that 3 spaces aren't touched
# just a quick test that 5 spaces are touched
\end{lstlisting}
\end{document}
Блоки из восьми пробелов такие же, как два блока из четырех пробелов, вышеприведенная замена через literate
ключ будет работать. Если вам нужно больше замен, вы можете просто добавить их, ключ literate
принимает произвольное количество правил замены как блоки из трех аргументов (что заменять, замена, количество виртуальных столбцов, которые займет замена).
\documentclass{article}
\usepackage{listings}
\lstset
{
literate=
{\ \ \ \ }{\space\space}{2}
{yes}{no}{2}
}
\begin{document}
\begin{lstlisting}[language=python]
if x is None:
print('yes')
if y is None:
print('yes again')
# just a quick test that 3 spaces aren't touched
# just a quick test that 5 spaces are touched
\end{lstlisting}
\end{document}