使用 enumitem 访问缩进长度

使用 enumitem 访问缩进长度

对于我正在编写的包,我需要访问列表项的实际缩进量。这是一个最小示例,显示了我可以使用的长度,但它们似乎没有给我所需的内容。例如,我需要能够知道从页面左边距到 item 中的“An”的长度(1)以及 item 中的“A”A。

辅助宏显示了一些相关长度,但值显然\leftmargin不是绝对的。我该如何计算该长度?

\documentclass{article}
\usepackage[showframe]{geometry}
\parindent=0pt
\usepackage{enumitem}
\newcommand\showlengths{\the\leftmargin;\the\labelwidth;\the\labelindent;\the\labelsep}
\begin{document}
\begin{enumerate}[label=(\arabic*)]
\item An item \showlengths
\begin{enumerate}[label=\alph*.]
\item A subitem \showlengths
\end{enumerate}
\end{enumerate}
\end{document}

代码输出

答案1

正如评论中提到的,长度\@totalleftmargin正好是所需的长度。下面是一个演示:

\documentclass{article}
\usepackage[showframe]{geometry}
\parindent=0pt
\usepackage{enumitem}
\makeatletter
\newcommand\showlengths{\the\@totalleftmargin}
\makeatother
\begin{document}
\begin{enumerate}[label=(\arabic*)]
\item An item \showlengths


\begin{enumerate}[label=\alph*.]
\item A subitem \showlengths


\end{enumerate}
\end{enumerate}
\rule{25pt}{1pt}

\rule{47pt}{1pt}

\end{document}

代码输出

相关内容