带有等宽老式数字的目录

带有等宽老式数字的目录

我在论文中使用旧式数字,并注意到目录中的页码没有提供一条直线。下图显示了来自包含 11 个子节的节的数字的这种行为。

对于 KOMA-Script 类,scrartcl可以通过向 添加Numbers=Monospaced字体功能来修改 中的章节数(或 中的节数) sectionentrypagenumber。但是,据我所知,较低级别的节数不支持此功能。

如何在目录中获取等宽旧式数字?

编辑:我使用@egreg的解决方案来获取等宽数字,并添加了行

\addtokomafont{disposition}{\rmfamily\addfontfeatures{Numbers=Monospaced}}

将所有章节都排版为等宽数字。

不幸的是,@egreg 的解决方案破坏了该siunitx软件包,它开始使用普通文本字体而不是数学字体。我通过添加以下行解决了这个问题:

\sisetup{math-rm=\symrm}

\documentclass[a5paper,DIV=9]{scrartcl}

\addtokomafont{disposition}{\rmfamily}

\usepackage{fontspec}
\setmainfont{Latin Modern Roman}[Numbers=OldStyle]

\usepackage{lipsum}
\begin{document}
  \tableofcontents

  \section{a}
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum
  \section{a}
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum
  \section{a}
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum
  \section{a}
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum
  \subsection{a}
  \lipsum

\end{document}

答案1

您可以暂时重置目录的主字体:

\documentclass[a5paper,DIV=9]{scrartcl}

\addtokomafont{disposition}{\rmfamily}

\usepackage{fontspec}
\setmainfont{Latin Modern Roman}[Numbers=OldStyle]

% the following just for testing
\newfontfamily{\msf}{Latin Modern Roman}[Numbers={OldStyle,Monospaced}]

\usepackage{lipsum}
\begin{document}

\begingroup
\setmainfont{Latin Modern Roman}[
  Numbers={OldStyle,Monospaced},
]
\tableofcontents
\endgroup

Numbers should now be not monospaced:

1234567890

{\msf 1234567890}

\section{a}
\subsection{a}
\lipsum
\subsection{a}
\lipsum
\subsection{a}
\lipsum
\section{a}
\subsection{a}
\lipsum
\subsection{a}
\lipsum
\subsection{a}
\lipsum
\section{a}
\subsection{a}
\lipsum
\subsection{a}
\lipsum
\subsection{a}
\lipsum
\section{a}
\subsection{a}
\lipsum
\subsection{a}
\lipsum
\subsection{a}
\lipsum
\subsection{a}
\lipsum
\subsection{a}
\lipsum

\end{document}

在此处输入图片描述

从测试中你会看到,目录后顶行的图形不是等宽的,而底行的图形是等宽的。

答案2

KOMA-Script v3.20 及其子包中出现了另一种可能性tocbasic:可以使用命令修改目录条目的字体\DeclareTOCStyleEntry

对于我的scrbook,我添加了以下几行:

% Define new font family with roman font and monospaced, oldstyled numbers
\newfontfamily{\msf}{Latin Modern Roman}[Numbers={OldStyle,Monospaced}]
% switch all headings and pagenumbers in the document
\addtokomafont{disposition}{\msf}
\addtokomafont{pagenumber}{\msf}
% switch entries in toc
\DeclareTOCStyleEntry[entryformat=\msf\bfseries,pagenumberformat=\msf\bfseries]{default}{chapter}
\DeclareTOCStyleEntry[entryformat=\msf,pagenumberformat=\msf]{default}{section}
\DeclareTOCStyleEntry[entryformat=\msf,pagenumberformat=\msf]{default}{subsection}

我决定将 改为entryformat,以便entrynumberformat在文档中保持一致的风格(参见\addkomafont{disposition}{...})。此外,还entrynumberformat继承自entryformat

相关内容