如何创建新的重音符号

如何创建新的重音符号

我需要使用一种新的重音符号来表示我自己定义的操作。它是一个左右两端有两个点的条。

\documentclass{article}
\begin{document}
\[myaccents{A}\]
\end{document}

在此处输入图片描述

答案1

\documentclass{article}
\usepackage{amsmath,xcolor}
\begin{document}
\[\overset{\textcolor{red}{\cdot}\!-\!\textcolor{red}{\cdot}}{A}\]
\end{document}

或者使用\myaccent命令来简化:

\documentclass{article}
\usepackage{amsmath,xcolor}

\def\myaccent#1{\overset{\textcolor{red}{\cdot}\!-\!\textcolor{red}{\cdot}}{#1}}

\begin{document}
\[\myaccent{A}\]
\end{document}

平均能量损失

可以通过添加 来调整条形图的垂直距离\raisebox。此外,使用较小的条形图和直立字符看起来会更好,因为斜体条形图似乎不居中。例如:

\documentclass{article}
\usepackage{xcolor}
\usepackage{amsmath}
\def\myaccent#1{\overset{%
\hskip0pt   
\raisebox{-.2ex}[0ex][0ex]{%   
$_{\textcolor{red}{\cdot}\text{-}\textcolor{red}{\cdot}}$%
}}{\text{#1}}}
\begin{document}
\[\myaccent{t} \neq \myaccent{\i} \neq \myaccent{m} \neq \myaccent{e} \]
\[\myaccent{T} = \myaccent{I} = \myaccent{M} = \myaccent{E} \]
\end{document}

\begin{document}
\[\myaccent{t} \myaccent{m} \myaccent{M}  \myaccent{g} \]
\end{document}

平均能量损失

要使条形尽可能长,可以使用\widthtof{}包中的 calc。在示例中,我 2pt由于点而使此规则更短。可能应该更短一些,但对于 这样的窄字符,规则很少\i。根据需要进行调整:

\documentclass{article}
\usepackage{xcolor,calc}
\usepackage{amsmath}
\def\myaccent#1{\overset{
\hskip0pt % add 2 or 3 pt if you change \text{#1} to #1 to use italics 
\raisebox{-.3ex}[0ex][0ex]{%   
$_{\textcolor{red}{\cdot}\rule[.35ex]{\widthof{#1}-2pt}{.4pt}\textcolor{red}{\cdot}}$%
}}{\text{#1}}}
\begin{document}
\[\myaccent{t} \neq \myaccent{\i} \neq \myaccent{m} \neq \myaccent{e} \]
\[\myaccent{T} = \myaccent{I} = \myaccent{M} = \myaccent{E} \]
\end{document}

3型

答案2

如果我理解了这个问题,你需要将重音放在数学变量上方。它们通常为斜体(数学斜体)。基\mathaccent元通过字距在基线和之间水平放置重音\skewchar。我们可以通过宏模拟此行为。然后你的重音在斜体变量上方看起来会更好。

\mathchardef\myskewchar="717F 

\def\myaccent#1{\vbox{\offinterlineskip \lineskip=-.066em
   \setbox0=\hbox{$#1\myskewchar$}\dimen0=\wd0
   \setbox0=\hbox{$#1\kern0pt\myskewchar$}\advance\dimen0 by-\wd0
   \setbox0=\hbox{$#1$}\dimen1=\wd0 \advance\dimen1 by-.3em
                       \ifdim\dimen1<.2em \dimen1=.2em \fi
   \ialign{\hfil##\hfil\cr \hbox to0pt{\hss\kern2\dimen0
       ${\cdot}\hbox to\dimen1{\leaders\vrule height .28em depth-.23em\hfil}{\cdot}$%
       \hss}\cr$#1$\cr}}}

$\myaccent A \dot A + \myaccent x + \dot x + \myaccent t + \myaccent {xx}$.

skewchar02

我已经编辑了我的代码,以便根据基座的宽度来改变重音的宽度。

有三个问题留作练习:

  • 添加点的颜色(这取决于另一个使用的宏,OPmac、xcolor.sty 等)
  • 使宏复杂化以便它在下标和下标中起作用,即使用\mathchoice\mathpalette
  • 尝试\accent在文本模式下模拟斜体字母上方的原始行为。

相关内容