MakeUppercase 无法与 .TTF 字体配合使用

MakeUppercase 无法与 .TTF 字体配合使用

我有一套 Sabon 字体,我想用在我的论文中。

\usepackage{fontspec}
\setmainfont[
    BoldFont={sabon-bold.ttf},
    ItalicFont={sabon-it.ttf},
    BoldItalicFont={sabon-boldit.ttf}
]{sabon-regular.ttf}

一切似乎都很好,但我注意到我的章节标题不是我想要的大写:

\RequirePackage{titlesec}
\newcommand{\PreContentTitleFormat}{\titleformat{\chapter}[display]{\scshape\Large}
{\Large\filleft\textls{\MakeUppercase{\chaptertitlename}} \Huge\thechapter}
{1ex}
{}
[\vspace{1ex}\titlerule]}
\newcommand{\ContentTitleFormat}{\titleformat{\chapter}[display]{\scshape\huge}
{\Large\filleft\MakeUppercase{\chaptertitlename} \Huge\thechapter}
{1ex}
{\titlerule\vspace{1ex}\filright}
[\vspace{1ex}\titlerule]}
\newcommand{\PostContentTitleFormat}{\PreContentTitleFormat}
\PreContentTitleFormat

在此处输入图片描述

当我删除字体时,章节标题会变成大写。这个问题可能是什么原因造成的?

平均能量损失

\documentclass[a4paper]{report}
\usepackage{fontspec}
\setmainfont[
    BoldFont={sabon-bold.TTF},
    ItalicFont={sabon-it.TTF},
    BoldItalicFont={sabon-boldit.TTF}
]{sabon-regular.TTF}

\RequirePackage{titlesec}
\newcommand{\PreContentTitleFormat}{\titleformat{\chapter}[display]{\scshape\Large}
{\Large\filleft\textls{\MakeUppercase{\chaptertitlename}} \Huge\thechapter}
{1ex}
{}
[\vspace{1ex}\titlerule]}
\newcommand{\ContentTitleFormat}{\titleformat{\chapter}[display]{\scshape\huge}
{\Large\filleft\MakeUppercase{\chaptertitlename} \Huge\thechapter}
{1ex}
{\titlerule\vspace{1ex}\filright}
[\vspace{1ex}\titlerule]}
\newcommand{\PostContentTitleFormat}{\PreContentTitleFormat}
\PreContentTitleFormat

\begin{document}
\ContentTitleFormat

\chapter{Introduction}
Hello
\end{document}

我想实现这样的目标:

在此处输入图片描述

答案1

当您删除对字体的调用时,章节标题不再是大写,而是小写。

问题是你的 Sabon 字体没有小写字母,并且警告

LaTeX Font Warning: Font shape `EU2/sabon-regular.TTF(0)/m/sc' undefined
(Font)              using `EU2/sabon-regular.TTF(0)/m/n' instead

已发出。

如果你希望你的标题是大写的,你需要\MakeUppercase在最后一个强制参数中添加一个尾随参数,就像\titleformat这样

\newcommand{\ContentTitleFormat}{%
  \titleformat{\chapter}[display]
    {\huge}% removed \scshape
    {\Large\filleft\MakeUppercase{\chaptertitlename} \Huge\thechapter}
    {1ex}
    {\titlerule\vspace{1ex}\filright\MakeUppercase}
    [\vspace{1ex}\titlerule]%
}

通过这种改变我得到了

在此处输入图片描述

字体的更好规范是

\setmainfont[
  Ligatures=TeX,% can be omitted with the latest version of fontspec
  Extension=.TTF,
  UprightFont=*-regular,
  BoldFont=*-bold,
  ItalicFont=*-it,
  BoldItalicFont=*-boldit,
]{sabon}

我建议进行进一步的修改:章节号与“CHAPTER”一词冲突,因为数字的粗细要大得多。建议在全大写字母内留出一些字母间距。

\documentclass[a4paper]{report}
\usepackage{fontspec}
    \setmainfont[
      Ligatures=TeX,% can be omitted with the latest version of fontspec
      Extension=.TTF,
      UprightFont=*-regular,
      BoldFont=*-bold,
      ItalicFont=*-it,
      BoldItalicFont=*-boldit,
    ]{sabon}
\usepackage{titlesec}
\newcommand{\PreContentTitleFormat}{%
  \titleformat{\chapter}[display]
    {\addfontfeature{LetterSpace=4}\Large}
    {}% nothing is necessary
    {1ex}
    {\MakeUppercase}
    [\vspace{1ex}\titlerule]%
}
\newcommand{\ContentTitleFormat}{%
  \titleformat{\chapter}[display]
  {\addfontfeatures{LetterSpace=4}\huge}
  {\LARGE\filleft\MakeUppercase{\chaptertitlename} \thechapter}
  {1ex}
  {\titlerule\vspace{1ex}\filright\MakeUppercase}
  [\vspace{.5ex}\titlerule]%
}
\newcommand{\PostContentTitleFormat}{\PreContentTitleFormat}
\PreContentTitleFormat

\begin{document}
\ContentTitleFormat

\chapter{Introduction}
Hello
\end{document}

在此处输入图片描述

相关内容