答案1
该文件fdsymbol.sty
按顺序定义所有符号,并且必须计算行数或利用其他技巧:fonttable
是我们的朋友。
首先,寻找\medtriangleright
,找到
\fdsy@DeclareSymbol{\medtriangleright}{symbols}{\mathbin}
\fdsy@DeclareAlias{\triangleright}{symbols}{\mathbin}
\fdsy@DeclareSymbol{\medtriangleup}{symbols}{\mathbin}
\fdsy@DeclareAlias{\triangle}{symbols}{\mathbin}
\fdsy@DeclareAlias{\vartriangle}{symbols}{\mathbin}
\fdsy@DeclareSymbol{\medtriangleleft}{symbols}{\mathbin}
\fdsy@DeclareAlias{\triangleleft}{symbols}{\mathbin}
\fdsy@DeclareSymbol{\medtriangledown}{symbols}{\mathbin}
\fdsy@DeclareAlias{\triangledown}{symbols}{\mathbin}
所以我们知道我们需要symbols
数学字体:
\DeclareSymbolFont{symbols}{U}{FdSymbolA}{m}{n}
好的,寻找FdSymbolA
\DeclareFontFamily{U}{FdSymbolA}{}
\DeclareFontShape{U}{FdSymbolA}{m}{n}{
<-7.1> s * [\fdsy@scale] FdSymbolA-\fdsy@mweight@small
<7.1-> s * [\fdsy@scale] FdSymbolA-\fdsy@mweight@normal
}{}
现在很明显这\fdsy@scale
是一个比例因子;使用 1 开始研究;其他命令是什么?它们取决于给包的选项:
\fdsy@choicekey{normalweight}{book,regular,auto}{%
\ifcase\@tempb\relax
\renewcommand\fdsy@mweight@normal{Book}%
\renewcommand\fdsy@mweight@small{Book}%
\or
\renewcommand\fdsy@mweight@normal{Regular}%
\renewcommand\fdsy@mweight@small{Regular}%
\or
\renewcommand\fdsy@mweight@normal{Book}%
\renewcommand\fdsy@mweight@small{Regular}%
\fi
}
我会选择这个book
。那么我们可以开始:
\DeclareFontFamily{U}{FdSymbolA}{}
\DeclareFontShape{U}{FdSymbolA}{m}{n}{
<-7.1> s * [1] FdSymbolA-Book
<7.1-> s * [1] FdSymbolA-Book
}{}
\DeclareSymbolFont{fdsymbols}{U}{FdSymbolA}{m}{n}
一必须使用与不同的名称symbols
。
哦,好吧,分开字体没有意义,所以我们可以
\DeclareFontFamily{U}{FdSymbolA}{}
\DeclareFontShape{U}{FdSymbolA}{m}{n}{
<-> s * [1] FdSymbolA-Book
}{}
\DeclareSymbolFont{fdsymbols}{U}{FdSymbolA}{m}{n}
现在我们需要定义符号并找到插槽。这并不难:创建一个简单的文件
\documentclass{article}
\usepackage{fonttable}
\DeclareFontFamily{U}{FdSymbolA}{}
\DeclareFontShape{U}{FdSymbolA}{m}{n}{
<-> s * [1] FdSymbolA-Book
}{}
\begin{document}
\xfonttable{U}{FdSymbolA}{m}{n}
\end{document}
并在其上运行 LaTeX。您将发现符号与代码一起排列!
现在我们可以完成了。
\documentclass{article}
%%% define symbols from fdsymbol
\DeclareFontFamily{U}{FdSymbolA}{}
\DeclareFontShape{U}{FdSymbolA}{m}{n}{
<-> s * [1] FdSymbolA-Book
}{}
\DeclareFontShape{U}{FdSymbolA}{m}{b}{
<-> s * [1] FdSymbolA-Medium
}{}
\DeclareSymbolFont{fdsymbols}{U}{FdSymbolA}{m}{n}
\SetSymbolFont{fdsymbols}{bold}{U}{FdSymbolA}{m}{b}
\DeclareMathSymbol{\medtriangleright}{\mathbin}{fdsymbols}{86}
\DeclareMathSymbol{\medtriangleup}{\mathbin}{fdsymbols}{87}
\DeclareMathSymbol{\medtriangleleft}{\mathbin}{fdsymbols}{88}
\DeclareMathSymbol{\medtriangledown}{\mathbin}{fdsymbols}{89}
%%%
\begin{document}
$a\medtriangleright b\medtriangleup c\medtriangleleft d \medtriangledown e$
\boldmath
$a\medtriangleright b\medtriangleup c\medtriangleleft d \medtriangledown e$
\end{document}
用不同的比例因子进行测试,直到您满意为止。我添加了对粗体数学的支持。
[1]
出于完整性考虑,以下是更改[0.8]
为减小符号尺寸的输出:
\DeclareFontShape{U}{FdSymbolA}{m}{n}{
<-> s * [0.8] FdSymbolA-Book
}{}
\DeclareFontShape{U}{FdSymbolA}{m}{b}{
<-> s * [0.8] FdSymbolA-Medium
}{}
(其他无变化)。
答案2
、和包unicode-math
中都有这些,但是官方名称不太一致。MWE:stix
stix2
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont{STIX Two Math}[
range ={ \bigtriangleup, \bigtriangledown, \triangleleft, \triangleright,
\vartriangle, \triangledown, \smalltriangleleft, \smalltriangleright },
Scale = MatchUppercase ]
\begin{document}
Triangles: \( \bigtriangleup \bigtriangledown \triangleleft \triangleright
\vartriangle \triangledown \smalltriangleleft \smalltriangleright
\nabla \increment \Delta \)
\end{document}
导入这些符号的命令fdsymbol
(我在这里使用它们的标准名称和数学类别)更复杂。该包的设置并不便于复制和粘贴其中的一部分。
\documentclass{article}
\DeclareFontFamily{U}{FdSymbolA}{}
\DeclareFontShape{U}{FdSymbolA}{m}{n}{
<-7.1> s * [1.0] FdSymbolA-Book
<7.1-> s * [1.0] FdSymbolA-Book
}{}
\DeclareFontShape{U}{FdSymbolA}{b}{n}{
<-7.1> s * [1.0] FdSymbolA-Bold
<7.1-> s * [1.0] FdSymbolA-Bold
}{}
\DeclareSymbolFont{fdsymbols}{U}{FdSymbolA}{m}{n}
\SetSymbolFont{fdsymbols}{bold}{U}{FdSymbolA}{b}{n}
\DeclareMathSymbol{\vartriangle}{\mathbin}{fdsymbols}{87}
\DeclareMathSymbol{\triangledown}{\mathord}{fdsymbols}{89}
\DeclareMathSymbol{\smalltriangleleft}{\mathbin}{fdsymbols}{88}
\DeclareMathSymbol{\smalltriangleright}{\mathbin}{fdsymbols}{86}
\begin{document}
Triangles: \( \vartriangle \triangledown \smalltriangleleft \smalltriangleright
\nabla \Delta \)
\end{document}
如果愿意的话,你可以像这样改变
<-7.1> s * [1.0] FdSymbolA-Book
改变比例参数[1.0]
或将m
权重设置为,FdSymbolA-Regular
将权b
重设置为FdSymbolA-Medium
,得到与包装选项相同的效果fdsymbol
。
答案3
一切都在文档但事实上fdsymbol
,如果您从未阅读过字体包的源文件,您可能很难理解发生了什么。
下面是一个仅从 加载所需命令的示例fdsymbol
。我只是从源文件中获取了相关定义。输出是四个三角形符号,以及一个\nabla
用于验证它没有改变的符号。
\documentclass{article}
\DeclareFontFamily{U}{FdSymbolA}{}
\DeclareFontShape{U}{FdSymbolA}{m}{n}{
<-7.1> FdSymbolA-Book
<7.1-> FdSymbolA-Book
}{}
\DeclareSymbolFont{FdSymbols}{U}{FdSymbolA}{m}{n}
\makeatletter
\newcommand\fdsy@nextslot{\advance\@tempcnta 1\relax}
\newcommand\fdsy@@DeclareSymbol[4]{\DeclareMathSymbol{#2}{#3}{#4}{#1}}
\newcommand\fdsy@DeclareSymbol[3]{%
\if\relax\noexpand#1\let#1\undefined\fi
\expandafter\fdsy@@DeclareSymbol\expandafter{\the\@tempcnta}{#1}{#3}{#2}%
\fdsy@nextslot
}
\@tempcnta 86
\fdsy@DeclareSymbol{\medtriangleright}{FdSymbols}{\mathbin}
\fdsy@DeclareSymbol{\medtriangleup}{FdSymbols}{\mathbin}
\fdsy@DeclareSymbol{\medtriangleleft}{FdSymbols}{\mathbin}
\fdsy@DeclareSymbol{\medtriangledown}{FdSymbols}{\mathbin}
\makeatother
\begin{document}
\(\medtriangleright\medtriangleup\medtriangleleft\medtriangledown\nabla\)
\end{document}