如何在 LaTeX 中使用自定义、可扩展的符号

如何在 LaTeX 中使用自定义、可扩展的符号

我想在文档中使用自定义符号,该符号在 LaTeX 中可像其他字母或数学符号一样处理。不是想要叠加现有符号以便创建一个新的,而是从头开始创建一个。

有没有办法只使用 Inkscape 创建符号,然后告诉 LaTeX 在调用特定宏时打印该符号?当然可以使用\includegraphics[height=1em],但我认为这不是一种非常有效的方法。我可以让 LaTeX 像使用其他数学符号一样使用我的符号吗?

我一定要吗创建整个字体(仅由一个字符组成)或者是否可以用更简单的方式实现这一点?

答案1

该解决方案演示了如何使一种\includegraphics方法变得方便地工作。

如果新符号应符合现有字形的垂直范围,则此方法将非常有效。在 MWE 中,我\schtreber分别使符号符合“b”和“g”的高度。它将随数学样式缩放。

如果符号是关系或运算符,则定义可以包括\mathrel\mathop

\documentclass{article}
\usepackage{scalerel}
\begin{document}
\def\schtreber{\scalerel*{\includegraphics{schtreber}}{b}}

$ab\schtreber c \scriptscriptstyle ab\schtreber c$

$ y = x^{\schtreber}$

\def\schtreber{\scalerel*{\includegraphics{schtreber}}{g}}

$ab\schtreber c \scriptscriptstyle ab\schtreber c$

$ y = x^{\schtreber}$

\end{document}

在此处输入图片描述

如果垂直范围是任意的,\rule则可以使用 a 作为目标尺寸,其中\LMpt(local-mathstyle pts) 或\LMex(local-mathstyle ex's) 用于定义规则的尺寸。这里我\savebox首先将图像放在 a 中,以防某些 TeX 版本不保存 的本地副本\includegraphics

\documentclass{article}
\usepackage{scalerel}
\newsavebox\schtreberbox
\savebox\schtreberbox{\includegraphics{schtreber}}
\def\schtreber{\scalerel{\usebox{\schtreberbox}}{\rule[-2\LMpt]{0pt}{8\LMpt}}}
\begin{document}
$ab\schtreber c \scriptscriptstyle ab\schtreber c$\par
$ y = x^{\schtreber}$
\end{document}

在此处输入图片描述

前一种方法(而不是后一种方法)的优势在于该方法也将在文本和数学模式下起作用,正如预期的那样:

\documentclass{article}
\usepackage{scalerel}
\newsavebox\schtreberbox
\savebox\schtreberbox{\includegraphics{schtreber}}
\def\schtreber{\scalerel*{\usebox{\schtreberbox}}{b}}
\begin{document}
$ab\schtreber c \scriptscriptstyle ab\schtreber c$\par
$ y = x^{\schtreber}$

In text\schtreber, \LARGE text\schtreber.
\end{document}

在此处输入图片描述

相关内容