我使用意大利 Garamond 字体编写文档,我想使用小写字母。问题是没有意大利 Garamond 小写字母可买。因此,我怎样才能在左右标题上至少使用大写字母?这是我的 MWE:
\documentclass[hidelinks,12pt,twoside,openright,a4paper]{book}
\usepackage[french]{babel}
\usepackage{fontspec}
\setmainfont[
SmallCapsFont={ItalianGarmnd BT},
SmallCapsFeatures={Letters=SmallCaps},
]{ItalianGarmnd BT}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\headrulewidth}{0pt}
\fancyhf{} % sets both header and footer to nothing
\fancyfoot{}
\fancyhead[LE,RO]{\thepage}
\fancyhead[CE]{\textsc{A book}} % even pages: chapter title
\fancyhead[CO]{\textsc\leftmark} % odd pages: book title
\begin{document}
\chapter{A title}
\lipsum
\lipsum
\end{document}
答案1
据我所知,正确的方法是通过命令来说明\setmainfont
。
\setmainfont[
SmallCapsFont={EB Garamond},
SmallCapsFeatures={Letters=SmallCaps},
]{ItalianGarmnd BT}
我发布以下代码作为答案,因为它不适合作为评论。
您可以定义一个\lsc
命令来“伪造”小写字母,就像旧的一样spanish.ldf
。
\makeatletter
\def\lsc{\protect\local@lsc}
\def\local@lsc#1{%
\leavevmode
\hbox{\scshape\selectfont
\expandafter\ifx\csname\f@encoding/\f@family/\f@series
/n/\f@size\expandafter\endcsname
\csname\curr@fontshape/\f@size\endcsname
\csname S@\f@size\endcsname
\fontsize\sf@size\z@\selectfont
\message{Replacing undefined sc font\MessageBreak
shape by faked small caps}%
\MakeUppercase{#1}%
\else
{#1}%
\fi}}
\makeatother
\fancyhead[CE]{\lsc{A book}} % even pages: chapter title
\fancyhead[CO]{\lsc\leftmark} % odd pages: book title
因此,如果您改变主意并使用真正的小型大写字母字体,则该命令将不起作用。
我坚持认为这个技巧来自于旧版本spanish.ldf
;我不再使用标准西班牙语选项,而是使用自制的选项,所以我不知道这个命令在新版本中是否仍然有效。