다양한 왼쪽 건너뛰기를 사용하여 텍스트를 조판하고 있습니다(텍스트의 일부 섹션이 오른쪽으로 들여쓰기되어 있음).
어떤 이유로 목록에서는 기본적으로 왼쪽 건너뛰기를 고려하지 않습니다. 그러나 흥미로운 xleftmargin 속성이 있습니다. 명시적인 값이 주어지면 적절하게 작동합니다. 2cm.
그러나 \leftskip과 동일하게 설정할 수는 없는 것 같습니다. 나는 다음을 포함하여 다양한 변형을 시도했습니다.
\documentclass{article}
\usepackage{listings}
\setlength{\leftskip}{5cm}
\begin{document}
totototo
\begin{lstlisting}[xleftmargin={\the\leftskip}]
def example_function():
print("Hello, world!")
\end{lstlisting}
\end{document}
그러나 아무 소용이 없습니다. 무슨 말을 해야 합니까? MWE에서는 그냥 사용할 수 있지만 5cm
실제로는 \leftskip이 항상 동일하지는 않습니다.
답변1
작업을 수행하기 \leftskip
전에 설정된 새 길이를 할당하십시오 . lstlisting
그런 다음 이를 의 값으로 사용할 수 있습니다 xleftmargin
.
\documentclass{article}
\usepackage{listings}
\newlength{\keepleftskip}
\AtBeginEnvironment{lstlisting}{\setlength{\keepleftskip}{\leftskip}}
\lstset{xleftmargin=\keepleftskip}
\begin{document}
\noindent
totototo
\begin{lstlisting}
def example_function():
print("Hello, world!")
\end{lstlisting}
\setlength{\leftskip}{5cm}
\noindent
totototo
\begin{lstlisting}
def example_function():
print("Hello, world!")
\end{lstlisting}
\setlength{\leftskip}{1cm}
\noindent
totototo
\begin{lstlisting}
def example_function():
print("Hello, world!")
\end{lstlisting}
\end{document}
답변2
Ulrike Fischer가 자신의 의견에서 지적했듯이 \leftskip
는 \begin{lstlisting}
.
내가 얻을 수 있는 가장 가까운 것은 동일한 값을 가진 두 번째 길이 레지스터를 만들고 그 레지스터를 사용하는 것입니다. 이는 변경할 때마다 해당 레지스터를 업데이트해야 함을 의미합니다 \leftskip
.
\documentclass{article}
\usepackage{listings}
\newlength{\leftskiphack}
\begin{document}
\setlength{\leftskip}{5cm}
\setlength{\leftskiphack}{\leftskip}
totototo
\begin{lstlisting}[xleftmargin=\the\leftskiphack]
def example_function():
print("Hello, world!")
\end{lstlisting}
\setlength{\leftskip}{8cm}
\setlength{\leftskiphack}{\leftskip}
totototo
\begin{lstlisting}[xleftmargin=\the\leftskiphack]
def example_function():
print("Hello, world!")
\end{lstlisting}
\end{document}