Como criar uma nova notação de acentos

Como criar uma nova notação de acentos

Preciso usar uma nova notação de acentos para denotar uma operação definida por mim mesmo. É uma barra com duas pontas na extremidade esquerda/direita.

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

insira a descrição da imagem aqui

Responder1

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

Ou para simplificar com um \myaccentcomando:

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

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

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

MWE

A distância vertical da barra pode ser ajustada adicionando um \raisebox. Também poderia ficar melhor com barras menores e caracteres verticais porque em itálico as barrasparecenão centralizado. Exemplo:

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

MWE

Para tornar a barra tão longa quanto o caractere, pode-se usar \widthtof{}from package calc. No exemplo encurtei esta regra 2ptdevido aos pontos. Pode ser que deva ser um pouco mais curto, mas a regra é muito pequena em caracteres estreitos como \i. Ajuste como desejar:

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

MWE3

Responder2

Se entendi a pergunta, você precisa colocar seu acento acima das variáveis ​​matemáticas. Eles normalmente estão em itálico (itálico matemático). A \mathaccentprimitiva faz a colocação horizontal do acento por kern entre a base e \skewchar. Podemos simular esse comportamento por macros. Então seu acento ficará melhor acima das variáveis ​​em itálico.

\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

Editei meu código para variar a largura do acento pela largura da base.

Existem três problemas que ficam como exercício:

  • para adicionar a cor dos pontos (depende da outra macro usada, OPmac, xcolor.sty etc.)
  • complicar a macro para que ela funcione em subscript e subsubsript, ou seja, usar \mathchoiceou \mathpalette.
  • para tentar emular o \accentcomportamento primitivo acima das letras em itálico no modo texto.

informação relacionada