【问题标题】:Fontsize in custom class with XeLatex and fontspec使用 XeLatex 和 fontspec 自定义类中的字体大小
【发布时间】:2021-05-07 11:16:59
【问题描述】:

我正在开发几个属于同一类的乳胶模板(信件、文章、报告)。我已经实现了几乎所有目标,除了一个目标,使用\documentclass[.pt]{} 命令更改字体大小,无论我使用 9pt 还是 12pt,我的文档看起来都一样。如何确保这适用于我的自定义类?

只是一些旁注,我使用 XeLaTex 编译我的文档,同时使用 fontspec 包和 \setromanfont{DejaVu Serif} 命令安装字体(DejaVu 家族)。这些类可以选择在系列中的 serif 和 sans-serif 字体之间切换。

这是我的最小工作示例:letter.tex 文件组成。

% !TeX encoding = UTF-8
% !TEX TS-program = xelatex

\documentclass[12pt, british]{letter-Bram}

% Sender information
\signature{Sender Full Name}
\address{Sender\\ Adress line 1\\ Adress line 2\\ Country}

\begin{document}
\begin{letter}{Recipient\\ Organization\\ Adress line 1\\ Adress line 2\\ Country}
    \opening{Dear Recipient,}
    This letter is send from the sender to the recipient, and styled in a sans-serif font. The class has the following class settings:
    \begin{description}
        \item[sans] To turn the document and math into a sans serif font.
        \item[lanuage] You can specify the language like normal. For example \enquote*{dutch}, \enquote*{british}, \enquote*{german}, defaults to \enquote*{american}. I recommend specifying a language as this does set quotation marks, date notations, hyphenation and others.
    \end{description}

    Here is an example equation:
    \begin{equation}
        a x^2 + b x + c = 0
    \end{equation}
    which can be solved with the standard $abc$ formula.

            
    \closing{Kind Regards,}
\end{letter}
\end{document}

这里是letter-Bram.cls 类文件。

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{letter-Bram}[2019/07/01 v1.1 letter-Bram]

%%%%%%%%%%%%%%%%%%%%%
% NEW CLASS OPTIONS %
%%%%%%%%%%%%%%%%%%%%%
\newif\if@sans
\DeclareOption{sans}{\@sanstrue}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}

\ProcessOptions\relax
\LoadClass{letter}

%%%%%%%%%%%%%%%%%
% LOAD PACKAGES %
%%%%%%%%%%%%%%%%%
\usepackage{babel}
\RequirePackage[fleqn]{amsmath} % needs before math font selection
\RequirePackage{csquotes} % proper quotation marks

%%%%%%%%%%%%%%
% LOAD FONTS %
%%%%%%%%%%%%%%
\RequirePackage{fontspec}
\setromanfont{DejaVu Serif}    % open serif font.
\setsansfont{DejaVu Sans}      % open sans font.
\setmonofont{DejaVu Sans Mono} % open mono font.
\if@sans
    \renewcommand{\familydefault}{\sfdefault}
    \RequirePackage{arevmath} % math font that is equal in style DejaVu Sans, but better a, nu, omega, l, x ect
    \SetSymbolFont{symbols}{bold}{OMS}{zavm}{m}{n} % surpress warning of bold math sybols
\else
    \usepackage{unicode-math}
    \setmathfont{DejaVu Math TeX Gyre} % math font equal in style and size to DejaVu Serif
    \SetSymbolFont{symbols}{bold}{OMS}{zavm}{m}{n}
\fi

我很确定我遗漏了一些非常明显的东西,但找不到。

【问题讨论】:

    标签: fonts latex xelatex fontspec


    【解决方案1】:

    两个问题:

    • 您的班级正在加载letter 班级,但将其选项传递给article 班级。下定决心,你真正想要两个课程中的哪一个

    • 9pt 不是有效选项,请尝试使用 10pt12pt


    \NeedsTeXFormat{LaTeX2e}
    \ProvidesClass{letter-Bram}[2019/07/01 v1.1 letter-Bram]
    
    %%%%%%%%%%%%%%%%%%%%%
    % NEW CLASS OPTIONS %
    %%%%%%%%%%%%%%%%%%%%%
    \newif\if@sans
    \DeclareOption{sans}{\@sanstrue}
    \DeclareOption*{\PassOptionsToClass{\CurrentOption}{letter}}
    
    \ProcessOptions\relax
    \LoadClass{letter}
    
    %%%%%%%%%%%%%%%%%
    % LOAD PACKAGES %
    %%%%%%%%%%%%%%%%%
    \usepackage{babel}
    \RequirePackage[fleqn]{amsmath} % needs before math font selection
    \RequirePackage{csquotes} % proper quotation marks
    
    %%%%%%%%%%%%%%
    % LOAD FONTS %
    %%%%%%%%%%%%%%
    \RequirePackage{fontspec}
    \setromanfont{DejaVu Serif}    % open serif font.
    \setsansfont{DejaVu Sans}      % open sans font.
    \setmonofont{DejaVu Sans Mono} % open mono font.
    \if@sans
        \renewcommand{\familydefault}{\sfdefault}
        \RequirePackage{arevmath} % math font that is equal in style DejaVu Sans, but better a, nu, omega, l, x ect
        \SetSymbolFont{symbols}{bold}{OMS}{zavm}{m}{n} % surpress warning of bold math sybols
    \else
        \usepackage{unicode-math}
    %    \setmathfont{DejaVu Math TeX Gyre} % math font equal in style and size to DejaVu Serif
        \SetSymbolFont{symbols}{bold}{OMS}{zavm}{m}{n}
    \fi
    

    【讨论】:

    • 谢谢,我自己应该已经发现了 :-(。转到字母类解决了我的问题。9pt 是 MWE 中的一个问题,奇怪的是它不会出错,但会导致10pt 字体大小。
    • @aijLag 它不会出错,因为该类无法知道未知选项是否可能来自稍后加载的包中的一个,并且文档类选项被传递给该包。
    • 这很有意义。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多