小型大写字母标题

小型大写字母标题

我使用意大利 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;我不再使用标准西班牙语选项,而是使用自制的选项,所以我不知道这个命令在新版本中是否仍然有效。

相关内容