So erstellen Sie eine neue Akzentnotation

So erstellen Sie eine neue Akzentnotation

Ich muss eine neue Akzentnotation verwenden, um eine von mir definierte Operation zu kennzeichnen. Es handelt sich um einen Balken mit zwei Punkten am linken/rechten Ende.

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

Bildbeschreibung hier eingeben

Antwort1

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

Oder vereinfacht mit einem \myaccentBefehl:

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

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

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

MWE

Der vertikale Abstand des Balkens kann durch Hinzufügen eines angepasst werden \raisebox. Außerdem könnte es mit kleineren Balken und aufrechten Buchstaben besser aussehen, da in Kursivschrift die Balkenscheintnicht zentriert. Beispiel:

\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

Um den Balken so lang wie das Zeichen zu machen, könnte man \widthtof{}aus dem Paket verwenden calc. Im Beispiel habe ich diese Regel 2ptwegen der Punkte kürzer gemacht. Vielleicht sollte sie noch etwas kürzer sein, aber dann ist die Regel bei schmalen Zeichen wie sehr klein \i. Passen Sie sie nach Wunsch an:

\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

Antwort2

Wenn ich die Frage richtig verstehe, müssen Sie Ihren Akzent über mathematische Variablen setzen. Diese sind normalerweise kursiv (mathematische Kursivschrift). Das \mathaccentPrimitiv bewirkt die horizontale Platzierung des Akzents durch Kern zwischen der Basis und \skewchar. Wir können dieses Verhalten durch Makros simulieren. Dann sieht Ihr Akzent über kursiven Variablen besser aus.

\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

Ich habe meinen Code bearbeitet, um die Breite des Akzents entsprechend der Breite der Basis zu variieren.

Es gibt drei Probleme, die als Übung übrig bleiben:

  • um die Farbe der Punkte hinzuzufügen (dies hängt von dem anderen verwendeten Makro ab, OPmac, xcolor.sty usw.)
  • um das Makro so zu komplizieren, dass es mit Index und Unterindex arbeitet, d. h. um \mathchoiceoder zu verwenden \mathpalette.
  • \accentum zu versuchen, das primitive Verhalten über kursiven Buchstaben im Textmodus zu emulieren .

verwandte Informationen