来自 fdsymbol 包的 \medtriangleup 等

来自 fdsymbol 包的 \medtriangleup 等

我想从包中导入等边三角形符号\medtriangleup,,,,,,但又不让它搞乱并变成一个大黑点。\medtriangleright\medtriangleleft\medtriangledownfdsymbol\nabla

我发现类似答案 关于导入符号来自这个包,但是我在解析信息以弄清楚如何使它适应我的需要时遇到了麻烦。

有人能给我指出任何相关文档或帮助我了解我的特定任务所涉及的步骤吗?

或者,一种解决方法,是否有人知道一个带有漂亮三角形的包,就像在中找到的一样fdsymbol,我可以导入它而不会弄乱\nabla??

答案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:stixstix2

\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}

STIX Two Math 示例

导入这些符号的命令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}

fdsymbol 示例

如果愿意的话,你可以像这样改变

<-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}

相关内容