classicthesis 与 XeLaTeX,字体问题

classicthesis 与 XeLaTeX,字体问题

我正在使用 macOS 10.15 和 TeXlive 2020 以及 MacTeX。当尝试编译使用以下选项xelatex的文档时:classicthesis

\RequirePackage[eulerchapternumbers,eulermath,style=arsclassica]{classicthesis}

我多次收到“未找到字体 <somefont>”的错误fontspec提示。经过一番搜索,我别无选择,只能手动安装这些字体:

texgyrepagella-regular.otf
texgyrepagella-math.otf
Iwona-Regular.otf

现在文件已被编译,但结果并不像使用如下方法好pdflatex

  1. eulermath选项没有效果(因为eulervm,即使添加OT1选项,在这里也不起作用,我想我不知道为什么),所以我必须明确地写:
\setmathfont[math-style=upright]{Neo Euler}

这部分解决了该问题,但需要我手动安装euler.otf

  1. 字母间距不起作用。我发现classicthesis.sty
\DeclareRobustCommand{\spacedallcaps}[1]{{\addfontfeature{LetterSpace=18.0}\ct@caps\MakeTextUppercase{#1}}}% WordSpace=1.8
\DeclareRobustCommand{\spacedlowsmallcaps}[1]{{\addfontfeatures{LetterSpace=14.0}\ct@caps\MakeTextLowercase{#1}}}% WordSpace=1.8

但这\addfontfeature{LetterSpace=18.0}不起作用,标题如下所示: 使用 xelatex 的结果 应该是这样的:使用 pdflatex 的结果

如果我明确地写:

\chapter{\addfontfeature{LetterSpace=18.0} Introduction}

然后我收到这个错误:

LaTeX3: The key 'fontspec-opentype/LETTERSPACE' is unknown and is
(LaTeX3)    being ignored.

我想知道:

  1. 是不是只有我,还是所有使用 Mac 的人都xelatex需要手动查找字体文件并安装它们?我在这个网站上做了很多搜索,似乎如果我想使用fontspec字体名称(而不是文件名),那么我必须先找到该文件,单击并安装它,然后才能使用它。

  2. 更重要的是,有没有办法让这个行距正常工作?


以下是 MWE:

%! TEX program = xelatex
\documentclass[10pt]{scrreprt}

\usepackage{iftex}
\RequirePackage{mathpazo} % math font
\ifTUTeX\else%
\PassOptionsToPackage{defaultsups}{newpxtext}
\RequirePackage{newpxtext} % to simulate the [sc,osf] effect of mathpazo, while keeping the bf+sc font
\useosf % old-style figures in text, not in math
\fi
\PassOptionsToPackage{euler-digits,small}{eulervm}

\RequirePackage[eulerchapternumbers,eulermath,style=arsclassica]{classicthesis}
\ifTUTeX%
\setmathfont[math-style=upright]{Neo Euler}
\fi


\begin{document}
    
\chapter{Introduction}

\section{Some title}

SOME TEXT

\end{document}

答案1

\spacedallcaps和的定义\spacedlowsmallcaps似乎是错误的,因为它们首先应用字母间距,但然后更改为不同的字体并且设置被遗忘。

您可以按如下方式修复它。

\documentclass[10pt]{book}

\usepackage{iftex}

\ifTUTeX
  \usepackage{fontspec}
  \setmainfont{TeX Gyre Pagella}
  \setsansfont{Iwona}
\else
  \usepackage[defaultsups]{newpxtext}
  \useosf
\fi
\PassOptionsToPackage{euler-digits,small}{eulervm}
\RequirePackage[eulerchapternumbers,eulermath,style=arsclassica]{classicthesis}

\ifTUTeX
  \setmathfont[math-style=upright]{Neo Euler}
\fi

\makeatletter
\protected\def\spacedlowsmallcaps#1{%
 {\ct@caps\addfontfeature{LetterSpace=18.0}\MakeTextLowercase{#1}}%
}
\protected\def\spacedallcaps#1{%
 {\ct@caps\addfontfeature{LetterSpace=18.0}\MakeTextUppercase{#1}}%
}
\makeatother

\begin{document}

\chapter{Introduction}

\section{Some title}

Some text

\textsf{INTRODUCTION} \spacedallcaps{INTRODUCTION}

$a+b=12$

\end{document}

如何加载字体?这取决于您是否将它们安装为系统字体。上面的代码对我来说是有效的,因为我确实安装了。否则您需要使用 TeX Live 字体。按如下方式替换相关部分。

\ifTUTeX
  \usepackage{fontspec}
  \setmainfont{texgyrepagella}[
    Extension=.otf,
    UprightFont=*-regular,
    ItalicFont=*-italic,
    BoldFont=*-bold,
    BoldItalicFont=*-bolditalic,
  ]
  \setsansfont{Iwona}[
    Extension=.otf,
    UprightFont=*-Regular,
    ItalicFont=*-Italic,
    BoldFont=*-Bold,
    BoldItalicFont=*-BoldItalic,
  ]
\else
  \usepackage[defaultsups]{newpxtext}
  \useosf
\fi

在此处输入图片描述

相关内容