我正在尝试在 LaTeX 中输入显示的符号,并希望找到生成此符号的命令。这只是一个非常粗略的草图。这三条线应该长度相等,并且它们之间相隔 120 度。它在这里相当大,但我希望它是“正常字符大小”,与 a 左右相当+
。有没有直接的方法可以获得它,而无需将其作为图形包括在内或在 TikZ 中绘制它?
答案1
下面的示例按以下方式构造符号:
- 垂直杆的顶部带有圆形线端的部分用作支线。
- 分支的长度与加号中的长度相同。但可以通过重新定义
\UpDownYFactor
为不同于 的值来更改长度1
。 - 交点与数学中心轴的加号相同。
- 该符号的大小与当前的数学样式相符。
- 侧轴承的宽度与加号的宽度相同。
MnSymbol
提供的符号的名称与包:\upY
和中的名称相同\downY
。- 这些符号充当二元运算符。可以通过替换 来更改它
\mathbin
。
示例文件:
\documentclass{article}
\usepackage{graphicx}
\usepackage{trimclip}
\makeatletter
\providecommand*{\upY}{%
\mathbin{%
\mathpalette\@updownY{0}%
}%
}
\providecommand*{\downY}{%
\mathbin{%
\mathpalette\@updownY{1}%
}%
}
\providecommand*{\UpDownYFactor}{1}
\newcommand*{\@updownY}[2]{%
% #1: math style
% #2: 0 = up, 1 = down
\sbox0{$#1+\m@th$}%
\dimen2=.5\dimexpr\wd0-\ht0-\dp0\relax
% => \dimen2: side bearing
\sbox2{$#1\vcenter{}$}%
\dimen4=\dimexpr\ht0-\ht2\relax
% => \dimen4: branch length
\setbox0=\hbox to 0pt{%
\hss
\clipbox{%
0pt %
{\dimexpr\totalheight-\UpDownYFactor\dimen4\relax} %
0pt %
-\dimen2%
}{$#1|$}%
\hss
}%
\ht0=\dimexpr\ht0-\dimen2\relax
\kern\dimen2 %
\raise\ht2\hbox{%
\ifnum#2=0 %
{\rotatebox{120}{\copy0}}%
\copy0 %
{\rotatebox{-120}{\copy0}}%
\else
{\rotatebox{60}{\copy0}}%
{\rotatebox{180}{\copy0}}%
{\rotatebox{-60}{\copy0}}%
\fi
}%
\kern\dimen2 %
}
\makeatother
\begin{document}
\[\begin{array}{c}
a \upY b \downY c
\\
\scriptstyle
a \upY b \downY c
\\
\scriptscriptstyle
a \upY b \downY c
\\
\rlap{$\upY$}{\downY}
\end{array}\]
\end{document}
分析中心:
\usepackage{pdfrender}
...
\[
\rlap{%
\sbox0{$\vcenter{}$}%
\sbox2{${\upY}{\downY}{\upY}$}%
\raise\ht0\hbox{\vrule height.01pt depth.01pt width\wd2}%
}%
\pdfrender{TextRenderingMode=Stroke, LineWidth=.01pt}
{\upY}\rlap{$\upY$}{\downY}{\downY}
\]
答案2
\usepackage{MnSymbol}
您可以在包中找到
$A \downY B \upY C$
渲染结果如下:
不幸的是(感谢@egreg的提示),使用MnSymbol
不仅会添加额外的命令,还会改变一些命令。这可能会产生令人讨厌的副作用。对我们来说,有一个循序渐进的教程如何在不改变整个数学字体的情况下使用包提供的符号?
遵循这个相当容易(给刘尽可能多的信用),因此您可以按如下方式规避使用洞包:
\documentclass{article}
\DeclareFontFamily{U}{MnSymbolC}{}
\DeclareFontShape{U}{MnSymbolC}{m}{n}{
<-6> MnSymbolC5
<6-7> MnSymbolC6
<7-8> MnSymbolC7
<8-9> MnSymbolC8
<9-10> MnSymbolC9
<10-12> MnSymbolC10
<12-> MnSymbolC12}{}
\DeclareFontShape{U}{MnSymbolC}{b}{n}{
<-6> MnSymbolC-Bold5
<6-7> MnSymbolC-Bold6
<7-8> MnSymbolC-Bold7
<8-9> MnSymbolC-Bold8
<9-10> MnSymbolC-Bold9
<10-12> MnSymbolC-Bold10
<12-> MnSymbolC-Bold12}{}
\DeclareSymbolFont{MnSyC}{U}{MnSymbolC}{m}{n}
\SetSymbolFont{MnSyC}{bold}{U}{MnSymbolC}{b}{n}
\DeclareMathSymbol{\upY}{\mathbin}{MnSyC}{41}
\DeclareMathSymbol{\downY}{\mathbin}{MnSyC}{43}
\begin{document}
\[A \downY B \upY C \]
\boldmath
\[ A \downY B \upY C\]
\end{document}
(再次感谢 egreg)甚至可以在\bold
答案3
您可以使用以下picture
环境:
\documentclass{article}
\usepackage{pict2e,picture}
\newcommand{\triplus}{\mathbin{
\sbox0{$+$}
\begin{picture}(\wd0,\ht0)
\put(0,0){\line(1,.577){.5\wd0}}
\put(.5\wd0,.289\wd0){\line(-1,.577){-.5\wd0}}
\put(.5\wd0,.289\wd0){\line(0,1){\dimexpr\ht0-.289\wd0\relax}}
\end{picture}
}
}
\begin{document}
$a+b\triplus c$
\end{document}
按照 Heiko Oberdiek 的建议,添加\roundcap
可能会更好:
\documentclass{article}
\usepackage{pict2e,picture}
\newcommand{\triplus}{\mathbin{
\sbox0{$+$}
\begin{picture}(\wd0,\ht0)
\roundcap
\put(0,0){\line(1,.577){.5\wd0}}
\put(.5\wd0,.289\wd0){\line(-1,.577){-.5\wd0}}
\put(.5\wd0,.289\wd0){\line(0,1){\dimexpr\ht0-.289\wd0\relax}}
\end{picture}
}
}
\begin{document}
$a+b\triplus c$
\end{document}
答案4
您还可以尝试以下Mercedes star
标记TikZ
:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{plotmarks}
\newcommand{\unkwn}{\tikz[scale=2] \draw plot [mark=Mercedes star] coordinates {(0,0)};}
\begin{document}
$a \unkwn b$
\end{document}