대시로 들여쓰기 채우기

대시로 들여쓰기 채우기

중첩된 항목화를 수행할 때 매우 긴 목록이 있고 목록의 아래쪽 항목이 여전히 이전 항목 내에 중첩되어 있다는 점을 분명히 하고 싶습니다.

이러한 이유로 나는 대시로 들여쓰기를 하고 싶습니다.

---내가 밥이라면,

--------- 만약 토요일이라면,

--------------- Sally와 함께 일한다면,

--------------------------- 우리 둘 다 정장을 입어요.

--------------- 테니스가 TV에 나온다면,

-------------- 저는 세레나 윌리엄스를 응원합니다.

현재 코드 샘플:

\usepackage{enumitem}
\begin{itemize}
\item If I am Bob,
     \begin{itemize}[leftmargin=*,labelindent= 1cm]
     \item If it is Saturday
         \begin{itemize}[leftmargin=*,labelindent= 2cm]
          \item If I work with Sally
            \begin{itemize}[leftmargin=*,labelindent= 3cm]
                 \item We both wear suits.
            \end{itemize}
    \item If tennis is on TV,
             \begin{itemize}[leftmargin=*,labelindent= 3cm]
                 \item I root for Serena Williams.
            \end{itemize}
    \end{itemize}
   \end{itemize}
\end{itemize}

들여쓰기 공간을 대시로 채우도록 라텍스에 어떻게 지시합니까?

답변1

자신만의 길이로 여백을 추적하고 적절한 선을 그리는 데 사용할 수 있습니다. 귀하의 의견에 따라 대시가 아닌 규칙을 원하고 표준이 itemize변경되지 않기를 원합니다. 따라서 ditemize특정 스타일에 대한 새 목록(예: )을 도입하는 것이 좋습니다 .

샘플 출력

\documentclass{article}

\usepackage{enumitem}

\newlength{\myindent}
\setlength{\myindent}{0pt}
\newlist{ditemize}{itemize}{4}
\setlist[ditemize]{before={\setlength{\myindent}{\dimexpr\myindent+\leftmargin}},
label=\mbox{\hss\rule[.5ex]{\dimexpr\myindent-\labelsep}{.4pt}}}
\setlist[ditemize,2]{labelindent=1cm}
\setlist[ditemize,3]{labelindent=2cm}
\setlist[ditemize,4]{labelindent=3cm}

\begin{document}

\noindent
Some text that is not indented to show the left margin.

\begin{ditemize}
\item If I am Bob,
     \begin{ditemize}
     \item If it is Saturday
         \begin{ditemize}
          \item If I work with Sally
            \begin{ditemize}
                 \item We both wear suits.
            \end{ditemize}
    \item If tennis is on TV,
             \begin{ditemize}
                 \item I root for Serena Williams.
            \end{ditemize}
    \end{ditemize}
   \end{ditemize}
\end{ditemize}

\end{document}

코드는 다음과 같이 작동합니다. \myindent현재 들여쓰기를 저장할 새 변수를 도입합니다 . 각 의 시작 부분에서 코드를 ditemize사용하여 before=현재 여백을 에 추가합니다 \myindent. 메커니즘은 before이것이 목록에 로컬인 그룹 내에서 수행된다는 것을 의미하므로 하위 목록이 완료되면 이전 값을 복구합니다. 이제 레이블을 적절한 길이의 규칙으로 설정하되 너비가 0이고 왼쪽으로 튀어나오는 상자에 설정합니다.

줄 대신 대시를 원했다면 위 dashrule의 내용을 거의 대체할 수 있는 패키지를 사용하는 것이 좋습니다 \rule. 그런 다음 레이블 사양을 다음과 같이 작성할 수 있습니다.

label=\mbox{\hss\hdashrule[.5ex]{\dimexpr\myindent-\labelsep}{.4pt}{3pt}}

발급 후 \usepackage{dashrule}. 이를 통해 labelsep=.1em다음이 생성됩니다.

점선 샘플

관련 정보