我想要做的:我想取两个基本的 LaTeX 数学模式字符,取它们的矢量图文件,然后将它们编辑在一起以形成一个新符号,我希望它的行为与任何其他数学模式符号一样。然后我想用这个制作一个功能齐全的包。
我没有问的是:我并不是在问如何查找这个符号是否已被其他人制作(我知道不是)。我也不想通过使用 \newcommand 将两个字符打印在另一个字符之上,然后弄乱间距(这不会提供令人满意的结果)来做到这一点,而且我确信使用 tikz 重新创建它将非常困难(由于所涉及字符的复杂性和字母式风格)。这些是我在被问到这样的问题时在这里找到的一些答案,我确信这不是我需要做的。
我的问题是:在哪里(哪个目录)可以找到简单数学模式字符的矢量图,以便我可以编辑它们以达到自己的目的,在哪里可以找到包代码,使我的角色的行为与任何其他数学模式符号完全一样。我同时问这两个问题,因为我假设它们在类似的地方。
我正在尝试弄清楚事情是如何运作的,因此如果您展示非平凡代码,请解释它的作用。
答案1
这里的主要困难似乎是您想要一个适用于所有数学样式的符号,而不必每次使用时都调整间距和大小。这里的解决方案是使用 或 来定义符号\mathchoice
。\mathpalette
有关详细信息,请参阅
如何使用叠加层创建符号:
\subseteq
+\circ
作为单个符号(“开子集”)\mathchoice
:什么是\mathchoice
?\mathpalette
:的奥秘\mathpalette
假设你有一些非常复杂的符号
您可能已经开始手绘并描摹。无论如何,以上是图像形式的符号的矢量化版本。我将其称为象征。
定义你的象征通过\mathchoice
以下方式:
\newcommand{\mysymbol}{%
\mathchoice
{\includegraphics[height=1em]{super_intricate_symbol}}
{\includegraphics[height=1ex]{super_intricate_symbol}}
{\includegraphics[height=.7ex]{super_intricate_symbol}}
{\includegraphics[height=.5ex]{super_intricate_symbol}}
}
这使您可以定制象征即使您只使用一张图片,也会根据数学样式调整显示尺寸(以及相关的间距/对齐方式)。以下是用例示例:
\documentclass{article}
\usepackage{graphicx}
\newcommand{\mysymbol}{%
\mathchoice
{\includegraphics[height=1em]{super_intricate_symbol}} % \displaystyle
{\includegraphics[height=1ex]{super_intricate_symbol}} % \textstyle
{\includegraphics[height=.7ex]{super_intricate_symbol}}% \scriptstyle
{\includegraphics[height=.5ex]{super_intricate_symbol}}% \scriptscriptstyle
}
\begin{document}
\[
x\ {\textstyle x}^{x^x} \quad
x\mysymbol\ {\textstyle x\mysymbol}^{x\mysymbol^{x\mysymbol}} \quad
x\mysymbol\ {\textstyle x\mysymbol}_{x\mysymbol_{x\mysymbol}} \quad
x\ {\textstyle x}_{x_x}
\]
\end{document}
使用这种方法会损失字体粗细,因为字体粗细通常会根据较小版本进行调整。请注意,x
尽管以 书写,但其字干仍然相当粗。以下是使用的\scriptscriptstyle
直接比较x
象征:
\newcommand{\mysymbol}{%
\mathchoice
{\resizebox{!}{1ex}{$\textstyle x$}} % \displaystyle
{\resizebox{!}{1ex}{$\textstyle x$}} % \textstyle
{\resizebox{!}{.7ex}{$\textstyle x$}}% \scriptstyle
{\resizebox{!}{.5ex}{$\textstyle x$}}% \scriptscriptstyle
}
不同的字体粗细在\scriptscriptstyle
(上标的上标)中很明显。为此,您可以定义不同粗细版本的象征并在 中的相应组件 ( \...style
)中使用它们\mathchoice
。但是,根据用例和/或象征建设,这可能不是一个问题。
即使你定义了你的象征使用多个符号叠加;也就是说,定义适当的间距/布局,这可能取决于您所使用的数学风格。
字体应该存储在 TeX 目录结构 (TDS) 中名为 的文件夹下fonts
。如果您想知道使用了哪些字体,则可以添加\showoutput
到一个小文档中,使用符号并查看.log
。例如,以下最小示例
\documentclass{article}
\begin{document}
\showoutput
$\alpha$
\end{document}
显示(我为页面上的元素添加了突出显示;\alpha
以及页码):
Completed box being shipped out [1]
\vbox(633.0+0.0)x407.0
.\glue 16.0
.\vbox(617.0+0.0)x345.0, shifted 62.0
..\vbox(12.0+0.0)x345.0, glue set 12.0fil
...\glue 0.0 plus 1.0fil
...\hbox(0.0+0.0)x345.0
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0, glue set 539.94232fil
...\write-{}
...\glue(\topskip) 5.69446
...\hbox(4.30554+0.0)x345.0, glue set 323.56596fil
....\hbox(0.0+0.0)x15.0
....\mathon
....\OML/cmm/m/it/10 % <------------------------------- \alpha
....\kern0.03702
....\mathoff
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue 0.0 plus 1.0fil
...\glue 0.0
...\glue 0.0 plus 0.0001fil
..\glue(\baselineskip) 23.55556
..\hbox(6.44444+0.0)x345.0, glue set 170.0fil
...\glue 0.0 plus 1.0fil
...\OT1/cmr/m/n/10 1 % <--------------------------------- page number (1)
...\glue 0.0 plus 1.0fil
您将看到\alpha
使用cmm
- Computer Modern Math 和it
alics 形状作为点。然后您可以打印via10
的整个字体表:cmmi10
\fonttable
\documentclass{article}
\usepackage{fonttable}
\begin{document}
\fonttable{cmmi10}
\end{document}
\show\alpha
还将职位标识为\mathchar"10B
。
您还会失去字体特有的字距校正功能。不过,与以自己想要的方式管理内容所带来的便利相比,所有这些损失可能微不足道。