用破折號填滿縮排

用破折號填滿縮排

在進行嵌套逐項排序時,我有一個很長的列表,並且想要明確列表中較低的項目仍然嵌套在(依賴於)較早的項目中。

因此,我想用破折號縮進,即

---如果我是鮑勃,

--------- 如果是星期六,

--------------- 如果和莎莉一起工作,

--------------------------- 我們都穿西裝。

--------------- 若電視上有網球比賽,

--------------------------- 我支持小威廉斯。

目前程式碼範例:

\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意味著這是在列表本地的群組內完成的,因此當子列表完成時,我們恢復舊值。現在將標籤設為適當長度的規則,但在寬度為零的框中並向左伸出。

如果您想要破折號而不是直線,我建議使用該dashrule包,它幾乎可以替代\rule上述內容。然後您可以將標籤規範編寫為:

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

發出後\usepackage{dashrule}。由此labelsep=.1em產生:

虛線樣本

相關內容