以下面的代码为例:
\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
。