![正文中仅使用旧式数字,其他情况使用内衬数字](https://linux22.com/image/275347/%E6%AD%A3%E6%96%87%E4%B8%AD%E4%BB%85%E4%BD%BF%E7%94%A8%E6%97%A7%E5%BC%8F%E6%95%B0%E5%AD%97%EF%BC%8C%E5%85%B6%E4%BB%96%E6%83%85%E5%86%B5%E4%BD%BF%E7%94%A8%E5%86%85%E8%A1%AC%E6%95%B0%E5%AD%97.png)
我的主要字体编号设置为OldStyle
。我该如何设置Lining numbers
:
- 标题(章节、节、小节等...),
- 开始枚举,
- 页码,以及
- 脚注编号(但不是脚注本身)?
梅威瑟:
\documentclass{article}
\usepackage{fontspec}
\usepackage{enumerate}
\usepackage{biblatex}
\setmainfont[Scale=1.0,Numbers={OldStyle,Proportional},Ligatures=TeX]{Minion Pro}
\begin{document}
\section{Section}
Text with numbers; 123 456 seven \& eight.
\begin{enumerate}
\item Item1 with footnote.\footcite{001}
\end{enumerate}
\end{document}
电流输出:
笔记:
- 忽略实际脚注尚未正确编译。
- 这是我的第一篇帖子;如果不符合指南,我深表歉意。如果有任何错误,请告诉我,我会记下来以供将来参考。
答案1
定义一个具有相同字体名称的字体系列,但使用Numbers=Lining
选项并更改所有需要衬线数字的地方。
我不认为你真的我想要这个。我使用 Linux Libertine,因为我没有 Minion Pro。
\documentclass{book}
\usepackage{fontspec}
\usepackage{enumitem}
\usepackage{biblatex}
%\usepackage{etoolbox} % already loaded by biblatex
\setmainfont[Numbers={OldStyle,Proportional},Ligatures=TeX]{Linux Libertine O}
\newfontfamily{\liningmainfont}[Numbers=Lining,Ligatures=TeX]{Linux Libertine O}
\setlist[enumerate]{font=\liningmainfont}
\makeatletter
\renewcommand{\@makefnmark}{%
\hbox{\@textsuperscript{\normalfont\liningmainfont\@thefnmark}}%
}
\renewcommand\@seccntformat[1]{{\liningmainfont\@nameuse{the#1}\quad}}
\patchcmd{\@makechapterhead}{\thechapter}{{\liningmainfont\thechapter}}{}{}
\patchcmd{\chaptermark}{\thechapter}{{\liningmainfont\thechapter}}{}{}
\patchcmd{\sectionmark}{\thesection}{{\liningmainfont\thesection}}{}{}
\patchcmd{\ps@plain}{\thepage}{{\liningmainfont\thepage}}{}{}
\patchcmd{\@oddhead}{\thepage}{{\liningmainfont\thepage}}{}{}
\patchcmd{\@evenhead}{\thepage}{{\liningmainfont\thepage}}{}{}
\makeatother
\begin{document}
\chapter{Chapter}
\section{Section}
Text with numbers; 123 456 seven \& eight.
\begin{enumerate}
\item Item1 with footnote.\footcite{001}
\end{enumerate}
\clearpage
Even page
\clearpage
Odd page
\end{document}
也许还有其他地方会出现旧式数字;遵循相同的模式:找到打印数字的命令并对其进行修补。
答案2
您可以使用命令\addfontfeature{Numbers=Lining}
切换到内衬数字。在下面我定义了命令\liningnumbers
:
\newcommand\liningnumbers{\addfontfeature{Numbers=Lining}}
现在,它可以用作任何其他字体开关,例如\small
、\sffamily
等。因此,现在您只需找到一种方法来更改四种情况的字体。这在很大程度上取决于您使用的类。在这里,我仅使用包对枚举进行演示enumitem
:
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec}
\usepackage{enumitem}
\setmainfont[Scale=1.0,Numbers={OldStyle,Proportional},Ligatures=TeX]{TeX Gyre Pagella}
\newcommand\liningnumbers{\addfontfeature{Numbers=Lining}}
\setlist[enumerate]{font=\liningnumbers}
\begin{document}
\section{Section}
Text with numbers; 123 456 seven \& eight.
\begin{enumerate}
\item 1 Item1 without footnote.
\item 2 two
\item 3 three
\end{enumerate}
\end{document}