
Возьмем следующий код:
\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
.