
Ao fazer itens aninhados, tenho uma lista muito longa e quero deixar claro que os itens inferiores na lista ainda estão aninhados (dependentes de) itens anteriores.
Por esse motivo, gostaria de recuar com travessões, ou seja
---Se eu sou Bob,
--------- Se for sábado,
--------------- Se trabalhar com Sally,
--------------------------- Nós dois usamos ternos.
--------------- Se o tênis estiver na TV,
--------------------------- Eu torço por Serena Williams.
Exemplo de código atual:
\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}
Como posso dizer ao látex para preencher o espaço de indentação com traços?
Responder1
Você pode acompanhar as margens com um comprimento próprio e usá-las para desenhar uma linha apropriada. Seguindo seus comentários, você deseja apenas uma regra em vez de travessões e deseja que o padrão itemize
permaneça inalterado. Então sugiro que você introduza uma nova lista, por exemplo ditemize
, para um estilo específico.
\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}
O código funciona da seguinte maneira. Introduza uma nova variável \myindent
para armazenar o recuo atual. No início de cada um ditemize
, usando before=
código, adicionamos a margem atual a \myindent
. O mecanismo de before
significa que isso é feito dentro de um grupo local da lista, então quando uma sublista termina, recuperamos o valor antigo. Agora defina o rótulo, como uma régua de comprimento apropriado, mas em uma caixa de largura zero e projetando-se para a esquerda.
Se você quisesse traços em vez de uma linha, sugiro usar o dashrule
pacote, que fornece quase uma substituição do \rule
acima. Você pode então escrever a especificação do rótulo como:
label=\mbox{\hss\hdashrule[.5ex]{\dimexpr\myindent-\labelsep}{.4pt}{3pt}}
após a emissão \usepackage{dashrule}
. Com labelsep=.1em
isso produz: