我正在寻找符号的变体\relbar
,或者任何其他与标准长度箭头一样长的水平线。
特别是,我希望能够添加箭头,如\leftarrow
,,\rightarrow
。\leftrightarrow
我还希望能够添加垂直条,就像\leftfootline
从MnSymbol
包中添加一样。
以上所有符号都有,但问题在于能否以任意组合添加它们。例如,右侧带有垂直条的右箭头。这总共产生 16 个可能的符号。
有人有想法吗?
答案1
可以使用 TikZ;这是一个原型,具有可能方便的语法,其中的参数\erelbar
由两个数字(0、1、2 或 3)组成:
- 0 代表无箭头
- 1 代表普通箭头
- 2 代表一栏
- 3 代表条形和箭头
第一位数字代表左侧,第二位数字代表右侧。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\makeatletter
\newcommand\@erelb@r[1]{%
\mathrel{\tikz[baseline=-.5ex]\draw[#1] (0,0)--(0.3,0);}
}
% 0 is for nothing
% 1 is for arrowhead
% 2 is for bar
% 3 is for both
\newcommand{\erelbar}[1]{\@erelbar#1}
\def\@erelbar#1#2{%
\ifcase\numexpr#1*4+#2\relax
\@erelb@r{-}\or % 00
\@erelb@r{->}\or % 01
\@erelb@r{-|}\or % 02
\@erelb@r{->|}\or % 03
\@erelb@r{<-}\or % 10
\@erelb@r{<->}\or % 11
\@erelb@r{<-|}\or % 12
\@erelb@r{<->}\or % 13
\@erelb@r{|-}\or % 20
\@erelb@r{|->}\or % 21
\@erelb@r{|-|}\or % 22
\@erelb@r{|<->|}\or % 23
\@erelb@r{|<-}\or % 30
\@erelb@r{|<->}\or % 31
\@erelb@r{|<-|}\or % 32
\@erelb@r{|<->|} % 33
\else
\@wrong
\fi
}
\makeatother
\begin{document}
$a\erelbar{11}b$
$\begin{array}{cccc}
\erelbar{00} & \erelbar{10} & \erelbar{20} & \erelbar{30} \\
\erelbar{01} & \erelbar{11} & \erelbar{21} & \erelbar{31} \\
\erelbar{02} & \erelbar{12} & \erelbar{22} & \erelbar{32} \\
\erelbar{03} & \erelbar{13} & \erelbar{23} & \erelbar{33} \\
\end{array}$
\end{document}
答案2
我不是使用方面的专家TikZ
(我猜想它提供了更多用于创建新符号的工具),因此我向您展示了我自己的\mapsto
命令作为如何组合现有LaTeX
符号的示例。首先是 MWE:
\documentclass{minimal}
\usepackage{graphicx}
\newcommand\mymapsto{\mathrel{\ooalign{$\rightarrow$\cr%
\kern-.15ex\raise.275ex\hbox{\scalebox{1}[0.522]{$\mid$}}\cr}}}
\begin{document}
$\mymapsto$
\end{document}
以及由此产生的符号:
显然,垂直条比原来的要长,\mapsto
但从你所说的情况来看,我假设你希望垂直条与箭头共享高度。
现在再看一下 MWE,在命令的定义中,\mymapsto
我叠加了一个\rightarrow
(\mid
使用\ooalign
参见这答案是速成课程。显然,确定和\ooalign
的正确尺寸需要做大量工作,但是,使用我的代码作为基础,您应该能够自己构建剩余的 15 个符号 [别忘了,它会很有用!]。我想强调的是,您应该在构建符号时使用单位或,因为这样做时,符号对于不同的字体大小仍然正确(或者我被告知如此)。 \kern
\raise
\rotatebox
em
ex
与使用这种解决方案相比,TikZ
它可能耗费的时间更少,但我想你不会在这个过程中学到新的东西......