
Al realizar elementos anidados, tengo una lista muy larga y quiero dejar claro que los elementos que se encuentran más abajo en la lista todavía están anidados dentro (dependiendo de) elementos anteriores.
Por este motivo, me gustaría sangrar con guiones, es decir
---Si soy Bob,
--------- Si es sábado,
--------------- Si trabajas con Sally,
--------------------- Ambos usamos trajes.
--------------- Si el tenis está en la televisión,
--------------------- Apoyo a Serena Williams.
Código actual de muestra:
\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}
¿Cómo le digo al látex que llene el espacio de sangría con guiones?
Respuesta1
Puede realizar un seguimiento de los márgenes con su propia longitud y utilizarlos para dibujar una línea adecuada. Después de sus comentarios, solo desea una regla en lugar de guiones y desea que el estándar itemize
no cambie. Así que te sugiero que introduzcas una nueva lista, por ejemplo ditemize
, para el estilo particular.
\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}
El código funciona de la siguiente manera. Introduzca una nueva variable \myindent
para almacenar la sangría actual. Al comienzo de cada uno ditemize
, usando before=
código, agregamos el margen actual \myindent
. El mecanismo de before
significa que esto se hace dentro de un grupo local de la lista, por lo que cuando finaliza una sublista, recuperamos el valor anterior. Ahora configure la etiqueta para que sea una regla de una longitud adecuada, pero en un cuadro de ancho cero y que sobresalga hacia la izquierda.
Si quisiera guiones en lugar de una línea, le sugiero usar el dashrule
paquete, que proporciona un reemplazo casi directo para lo \rule
anterior. Luego puede escribir la especificación de la etiqueta como:
label=\mbox{\hss\hdashrule[.5ex]{\dimexpr\myindent-\labelsep}{.4pt}{3pt}}
después de emitir \usepackage{dashrule}
. Con labelsep=.1em
esto se produce: