如何才能使左箭头作为数学重音符号越过单个符号和符号组,这样:
- 单个字符和多个字符上的左箭头具有相同的权重;并且
- 单个字符上的左箭头是否不太长?
以下是我迄今为止尝试过的:
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{newtxtext,newtxmath}
\usepackage{accents}
\usepackage{extarrows}
\linespread{1.1} % just to display output here more clearly
\newcommand{\reverse}[1]{\accentset{\leftarrow}{#1}}
\newcommand{\xreverse}[1]{\accentset{\xlongleftarrow{}}{#1}}
\newcommand{\longreverse}[1]{\overleftarrow{#1}}
\begin{document}
Accent single character with left arrow:
\smallskip
$\reverse{\sigma}$ \quad Arrow too short, too light, too small?
$\longreverse{\sigma}$ \quad Arrow too long and heavy!
\medskip
Accent multiple characters with left arrow:
\smallskip
$\xreverse{\sigma \ast \tau}$ \quad Use \verb!\xreverse!: arrow definitely too short.
$\longreverse{\sigma \ast \tau}$ \quad Use \verb!\longreverse!: arrow long enough, but perhaps too heavy?
\bigskip
Want to use better arrows in the alternative to \dots
\[(\sigma \ast \tau)^{\leftarrow} \simeq \reverse{\tau} \ast \reverse{\sigma}
\]
\dots that instead puts the long left arrow over the whole group of 3 symbols:
\begin{itemize}
\item $\longreverse{\sigma \ast \tau} \simeq \reverse{\tau} \ast \reverse{\sigma}$ \quad Use \verb!\longreverse! on left, \verb!\reverse! on right.
\item $\longreverse{\sigma \ast \tau} \simeq \longreverse{\tau} \ast \longreverse{\sigma}$ \quad Use \verb!\longreverse! for all.
\end{itemize}
\end{document}
我强烈希望避免使用 TikZ 或其他绘图方法。我需要一种在使用不同字体系列(例如lucidabr
, )而不是时相对稳健的方法。当与需要的数学字体一起使用时也是如此。mathtimepro2
newtx
unicode-math
xelatex
我知道可配置和可扩展的强调元素(箭头、点、矢量)和项目符号上方虚线左箭头这是被接受的答案所引用的。
附录:使用halloween
命令\overscriptleftarrow
根据@GuM的评论,我尝试了包\overscriptleftarrow
中的命令halloween
。这做似乎可以与我尝试过的所有字体系列配合使用,无论我是否使用pdflatex
或 以及unicode-math
。xelatex
例如:
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{fontspec}
%\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
%\setmainfont[Ligatures=TeX,SmallCapsFont={Latin Modern Roman Caps}]{Latin Modern Roman}
\usepackage{unicode-math}
\setmathfont[Ligatures=TeX]{TeX Gyre Termes Math}
%\setmathfont[Ligatures=TeX]{Latin Modern Math}
\usepackage{halloweenmath}
\newcommand{\reverse}[1]{\overscriptleftarrow{#1}}
\begin{document}
$\reverse{\sigma \ast \tau} \eqsim \reverse{\tau} \ast \reverse{\sigma}$
\end{document}
输出:
答案1
calc
这是使用和包的解决方案adjustbox
。您可以调整箭头的粗细及其高度,如下所述。
首先我们定义箭头:
\newcommand{\newarrow}{\scalebox{.7}{$\leftarrow$}}
调整.7
会使箭头变轻或变重。使用1
将使箭头恢复原来的重量\leftarrow
,并增加箭头的尺寸。
\clipbox
接下来,我们使用包中的命令剪掉箭的主体adjustbox
。(实际上它来自trimclip
属于的包adjustbox
。)剩下的就是.3em
箭头:大部分只是箭头。
之后,我们缩放箭头主体,使箭头和主体一起构成箭头下方符号的宽度。(实际上,我们.1em
从右端进行裁剪,因为那里有一些空白。)
之后,我们使用包中的raise
和rlap
键将重新组装的箭头放在符号上方adjustbox
。如果要调整箭头的高度,可以raise=\myheight
用raise=1.2\myheight
或任何缩放因子替换。
这是的宏\newreverse
:
\newcommand{\newreverse}[1]{\settoheight{\myheight}{\ensuremath{#1}}%
\adjustbox{raise=\myheight,rlap}{%
\clipbox*{0 0 {.3em} {1.5\height}}{$\newarrow$}%
\resizebox{\widthof{\ensuremath{#1}}-.3em}{\height}{\clipbox*{{.3em} 0 {\width-.1em} {1.1\height}}{$\newarrow$}}%
}%
#1}
请注意,您必须\myheight
使用进行定义\newlength{\myheight}
。由于某种原因,该\adjustbox
命令不接受raise=\heightof{#1}
。
完整代码如下:
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{newtxtext,newtxmath}
\usepackage{calc} % for subtracting lengths
\usepackage{adjustbox} % \adjustbox, \clipbox, \scalebox
\newcommand{\newarrow}{\scalebox{.7}{$\leftarrow$}}
\newcommand{\newreverse}[1]{\settoheight{\myheight}{\ensuremath{#1}}%
\adjustbox{raise=\myheight,rlap}{%
\clipbox*{0 0 {.3em} {1.5\height}}{$\newarrow$}%
\resizebox{\widthof{\ensuremath{#1}}-.3em}{\height}{\clipbox*{{.3em} 0 {\width-.1em} {1.1\height}}{$\newarrow$}}%
}#1}
\newlength{\myheight}
\begin{document}
\begin{itemize}
\item $\newreverse{\sigma \ast \tau} \simeq \newreverse{\tau} \ast \newreverse{\sigma}$
\item $\newreverse{\mathit{abcdefghijklmnop}}$
\end{itemize}
\end{document}