数学符号上方可扩展的左箭头重音

数学符号上方可扩展的左箭头重音

如何才能使左箭头作为数学重音符号越过单个符号和符号组,这样:

  • 单个字符和多个字符上的左箭头具有相同的权重;并且
  • 单个字符上的左箭头是否不太长?

以下是我迄今为止尝试过的:

\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, )而不是时相对稳健的方法。当与需要的数学字体一起使用时也是如此。mathtimepro2newtxunicode-mathxelatex

我知道可配置和可扩展的强调元素(箭头、点、矢量)和项目符号上方虚线左箭头这是被接受的答案所引用的。

附录:使用halloween命令\overscriptleftarrow

根据@GuM的评论,我尝试了包\overscriptleftarrow中的命令halloween。这似乎可以与我尝试过的所有字体系列配合使用,无论我是否使用pdflatex或 以及unicode-mathxelatex例如:

\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}

输出:

来自 halloween.sty 和 unicode-math 的 \overscriptleftarrow

答案1

calc这是使用和包的解决方案adjustbox。您可以调整箭头的粗细及其高度,如下所述。

在此处输入图片描述

首先我们定义箭头:

\newcommand{\newarrow}{\scalebox{.7}{$\leftarrow$}}

调整.7会使箭头变轻或变重。使用1将使箭头恢复原来的重量\leftarrow,并增加箭头的尺寸。

\clipbox接下来,我们使用包中的命令剪掉箭的主体adjustbox。(实际上它来自trimclip属于的包adjustbox。)剩下的就是.3em箭头:大部分只是箭头。

之后,我们缩放箭头主体,使箭头和主体一起构成箭头下方符号的宽度。(实际上,我们.1em从右端进行裁剪,因为那里有一些空白。)

之后,我们使用包中的raiserlap键将重新组装的箭头放在符号上方adjustbox。如果要调整箭头的高度,可以raise=\myheightraise=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}

相关内容