将表格列的宽度设置为表格数字的宽度

将表格列的宽度设置为表格数字的宽度

以下面的代码为例:

\documentclass{article}
\usepackage[oldstyle, tabular]{libertine}
\usepackage{array}
\newlength{\period}
\settowidth{\period}{9999--9999}

\begin{document}
    \begin{tabular}{>{\raggedleft}p{\period}l}
        2002--2005 & Put some text and numbers 0123456789 here
    \end{tabular}
\end{document}

在此处输入图片描述

在这个例子中,我将左列的宽度(设置为左侧不齐)定义为八个表格(即等宽)数字和一个连字符的宽度。

但我实际上想要的是像上面那样设置左列的宽度,但在第一列之外使用比例数字。下面的示例显然不起作用,因为这会将文档中的所有数字设置为比例:

\documentclass{article}
\usepackage[oldstyle, proportional]{libertine} % <- change is here only
\usepackage{array}
\newlength{\period}
\settowidth{\period}{9999--9999}

\begin{document}
    \begin{tabular}{>{\raggedleft}p{\period}l}
        2002--2005 & Put some text and numbers 0123456789 here
    \end{tabular}
\end{document}

在此处输入图片描述

所以我的问题是:如何将第一列的宽度设置为基于表格数字,然后在文档的该列中使用表格数字,但在其他地方使用比例数字?

如果用 可以最好地完成此操作fontspec,那么我愿意使用它。

答案1

您可以定义一个\tabfig以表格格式选择旧式数字的命令:

\documentclass{article}
\usepackage[
  oldstyle,
  proportional
]{libertine} 
\usepackage{array}
\newlength{\period}

\newcommand{\tabfig}{\fontfamily{LinuxLibertineT-TOsF}\selectfont}

\AtBeginDocument{\settowidth{\period}{\tabfig 0000--0000}}

\begin{document}

\begin{tabular}{>{\raggedleft\tabfig}p{\period}l}
2002--2005 & Put some text and numbers 0123456789 here
\end{tabular}

\end{document}

请注意 LaTeX 发布后测量的延迟\normalfont

在此处输入图片描述

相关内容