第一种方法

第一种方法

此外沃纳的回答,我还希望我的列表标签使用表格数字。

我原本认为下面的第一种方法可行,但列表标签稍微位于左边距。

但是,第二种更麻烦的方法似乎有效。就好像直到测量完最后一个标签的宽度后才应用表格数字一样。

有没有办法让第一种方法奏效,而无需诉诸第二种方法?或者有更好的方法来实现这一点?

第一种方法

\documentclass{article}
\usepackage{showframe}
\usepackage{calc}
\usepackage{fontspec}
\setmainfont{EBGaramond-Regular}[
  Numbers={Proportional, OldStyle},
]
\usepackage{enumitem}
\setlist[enumerate]{font=\normalfont\addfontfeatures{Numbers=Tabular}}
\begin{document}
  \begin{enumerate}[
    labelindent=0pt,
    labelwidth=\widthof{\ref{last-item}},
    label={\arabic*.},
    leftmargin=!,
  ]
    \item Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    \item Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    \item Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. \addtocounter{enumi}{9997}
    \item Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \label{last-item}
  \end{enumerate}
\end{document}

第一种方法

第二种方法

\documentclass{article}
\usepackage{showframe}
\usepackage{calc}
\usepackage{fontspec}
\setmainfont{EBGaramond-Regular}[
  Numbers={Proportional, OldStyle},
]
\usepackage{enumitem}
\setlist[enumerate]{font=\normalfont\addfontfeatures{Numbers=Tabular}}
\begin{document}
  \begin{enumerate}[
    labelindent=0pt,
    labelwidth=\widthof{\ref{last-item}},
    label={\addfontfeatures{Numbers=Tabular}\arabic*.},
    leftmargin=!,
  ]
    \item Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    \item Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    \item Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. \addtocounter{enumi}{9997}
    \item Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \label{last-item}
  \end{enumerate}
\end{document}

第二种方法

答案1

您还想在要测量的框中说明字体。

相反\addfontfeatures,我建议定义一个字体系列。

\documentclass{article}
\usepackage{fontspec}
\usepackage{enumitem}
\usepackage{calc}

\usepackage{showframe}

\setmainfont{EBGaramond}[
  Numbers={Proportional, OldStyle},
]
\newfontfamily{\ebgaramondtabular}{EBGaramond}[
  Numbers={Tabular,OldStyle}
]

\setlist[enumerate]{font=\normalfont\ebgaramondtabular}

\begin{document}

\begin{enumerate}[
  labelindent=0pt,
  labelwidth=\widthof{\ebgaramondtabular\ref{last-item}},
  label=\arabic*.,
  leftmargin=!,
]
\item Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed
      do eiusmod tempor incididunt ut labore et dolore magna aliqua.

\item Ut enim ad minim veniam, quis nostrud exercitation ullamco
      laboris nisi ut aliquip ex ea commodo consequat.

\item Duis aute irure dolor in reprehenderit in voluptate velit esse
      cillum dolore eu fugiat nulla pariatur.

\addtocounter{enumi}{9997}

\item Excepteur sint occaecat cupidatat non proident, sunt in culpa
      qui officia deserunt mollit anim id est laborum.\label{last-item}
\end{enumerate}

\noindent{\ebgaramondtabular 10001}

\noindent 10001

\end{document}

在此处输入图片描述

相关内容