Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Xeletex和fontspec的自定义类中的Fontsize_Fonts_Xelatex_Fontspec - Fatal编程技术网

使用Xeletex和fontspec的自定义类中的Fontsize

使用Xeletex和fontspec的自定义类中的Fontsize,fonts,xelatex,fontspec,Fonts,Xelatex,Fontspec,我正在研究两个属于同一类的乳胶模板(信件、文章、报告)。除了一个目标外,我几乎实现了所有目标,即使用\documentclass[.pt]{}命令更改字体大小,无论使用9pt还是12pt,我的文档看起来都一样。如何确保这对我的自定义类正确工作 只是一些旁注,我使用Xeletex编译文档,同时使用fontspec包和\setromanfont{DejaVu Serif}命令安装字体(DejaVu Family)。这些类可以在族中的衬线字体和无衬线字体之间切换 下面是我的最简单的工作示例: 由let

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

只是一些旁注,我使用Xeletex编译文档,同时使用fontspec包和
\setromanfont{DejaVu Serif}
命令安装字体(DejaVu Family)。这些类可以在族中的衬线字体和无衬线字体之间切换

下面是我的最简单的工作示例:
letter.tex
文件组成

%!TeX编码=UTF-8
% !TEX TS程序=xelatex
\文档类[12点,英国]{字母Bram}
%发送者信息
\签名{发件人全名}
\地址{发件人\\地址行1\\地址行2\\Country}
\开始{document}
\开始{信函}{收件人\\组织机构\\地址行1\\地址行2\\Country}
\正在打开{亲爱的收件人,}
这封信由发件人发送给收件人,并采用无衬线字体。该类具有以下类设置:
\开始{description}
\项[sans]将文档和数学转换为无衬线字体。
\item[lanuage]您可以像普通语言一样指定语言。例如\enquote*{dutch}、\enquote*{british}、\enquote*{german},默认为\enquote*{american}。我建议指定一种语言,因为这会设置引号、日期符号、连字符等。
\结束{说明}
下面是一个示例等式:
\开始{等式}
a x^2+b x+c=0
\结束{方程}
这可以用标准的$abc$公式来解决。
\结束{亲切问候,}
\结束{字母}
\结束{document}
这是
字母Bram.cls
类文件

\NeedsTeXFormat{LaTeX2e}
\ProvideClass{letter Bram}[2019/07/01 v1.1 letter Bram]
%%%%%%%%%%%%%%%%%%%%%
%新类别选项%
%%%%%%%%%%%%%%%%%%%%%
\纽伊夫\if@sans
\声明{sans}{\@sanstrue}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}
\ProcessOptions\relax
\装入类{字母}
%%%%%%%%%%%%%%%%%
%加载包%
%%%%%%%%%%%%%%%%%
\usepackage{babel}
\在选择数学字体之前,需要重新打包[fleqn]{amsmath}%
\RequirePackage{csquotes}%正确的引号
%%%%%%%%%%%%%%
%加载字体%
%%%%%%%%%%%%%%
\RequirePackage{fontspec}
\setromanfont{DejaVu Serif}%打开Serif字体。
\setsansfont{DejaVu Sans}%打开Sans字体。
\setmonofont{DejaVu Sans Mono}%打开Mono字体。
\if@sans
\更新命令{\familydefault}{\sfdefault}
\RequirePackage{arevmath}%数学字体,在样式上与DejaVu Sans相同,但更好的是a、nu、omega、l、x等
\SetSymbolFont{symbols}{bold}{OMS}{zavm}{m}{n}%超出粗体数学符号的警告
\否则
\usepackage{unicode math}
\setmathfont{DejaVu Math TeX Gyre}%数学字体的样式和大小与DejaVu衬线相同
\SetSymbolFont{symbols}{bold}{OMS}{zavm}{m}{n}
\fi
我很确定我遗漏了一些非常明显的东西,但找不到。

两个问题:

  • 您的类正在加载
    字母
    类,但将其选项传递给
    文章
    类。下定决心,你到底想要这两门课中的哪一门

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



谢谢,我自己也应该知道的:-(.移动到letter类修复了我的问题。9pt在MWE中是一个问题,奇怪的是它没有出错,但会导致10pt的字体大小。@aijLag它不会出错,因为类无法知道未知选项是否可能来自稍后加载的包以及documentclass选项传递到的包。这很有意义。t汉克斯。@aijLag不客气!
\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