表の列の幅を表の数字の幅に設定する

表の列の幅を表の数字の幅に設定する

次のコードを見てください。

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

ここに画像の説明を入力してください

この例では、左の列の幅 (左揃えに設定) を、8 つの表形式 (つまり、等幅) の数字とハイフンの幅に定義しました。

しかし、私が実際に望んでいるのは、左の列の幅を上記のように設定し、最初の列の外側で比例した数字を使用することです。以下の例は明らかに機能しません。これは、ドキュメント内のすべての数字が比例するように設定されるためです。

\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

ここに画像の説明を入力してください

関連情報