Установить ширину табличного столбца по ширине табличных цифр

Установить ширину табличного столбца по ширине табличных цифр

Возьмем следующий код:

\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.

введите описание изображения здесь

Связанный контент