![classicthesis 与 XeLaTeX,字体问题](https://linux22.com/image/423016/classicthesis%20%E4%B8%8E%20XeLaTeX%EF%BC%8C%E5%AD%97%E4%BD%93%E9%97%AE%E9%A2%98.png)
我正在使用 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
:
- 该
eulermath
选项没有效果(因为eulervm
,即使添加OT1
选项,在这里也不起作用,我想我不知道为什么),所以我必须明确地写:
\setmathfont[math-style=upright]{Neo Euler}
这部分解决了该问题,但需要我手动安装euler.otf
。
- 字母间距不起作用。我发现
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}
不起作用,标题如下所示:
应该是这样的:
如果我明确地写:
\chapter{\addfontfeature{LetterSpace=18.0} Introduction}
然后我收到这个错误:
LaTeX3: The key 'fontspec-opentype/LETTERSPACE' is unknown and is
(LaTeX3) being ignored.
我想知道:
是不是只有我,还是所有使用 Mac 的人都
xelatex
需要手动查找字体文件并安装它们?我在这个网站上做了很多搜索,似乎如果我想使用fontspec
字体名称(而不是文件名),那么我必须先找到该文件,单击并安装它,然后才能使用它。更重要的是,有没有办法让这个行距正常工作?
以下是 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