Euler und Minuszeichen

Euler und Minuszeichen

Ich versuche, ein Makro zu definieren, um Eulers komplexe E-Power mit oder ohne Minuszeichen im Argument zu setzen. Ich möchte, dass das Makro automatisch erkennt, ob sein Argument mit einem beginnt -. Ich habe das folgende MWE, das ein optionales Argument verwendet:

\documentclass[a4paper,12pt,fleqn]{article}

\def\imaginaryunit{j}                  % the imaginary unit, i for mathematician and theoretical physicist, j for the rest of the world.
\def\imunit{\mathrm{\imaginaryunit}}   % ... in upright math
\def\ce{\mathrm{e}}                    % the constant e, upright of course
\makeatletter
\def\epowim{\@ifnextchar[{\epowimi}{\epowimi[]}}       % e to-the-power-of imaginary unit
\def\epowimi[#1]#2{\ce^{#1\if\imaginaryunit j\relax\,\fi\imunit#2}}       % e to-the-power-of imaginary unit
\makeatother

\begin{document}

\begin{equation}
\epowim{\alpha}\qquad \epowim[-]{\alpha} \qquad \ce^{-\imunit\alpha}
\end{equation}

\end{document}

Daher hätte ich gerne ein Makro, das erkennt, ob sein Argument mit einem beginnt -:

\epowim{-\alpha}

sollte dies erkennen -und es vor der imaginären Einheit platzieren, anstatt es nach der imaginären Einheit zu platzieren.

Die Frage ist also, ob und wie es möglich ist.

Antwort1

Etwas wie das?

\documentclass[a4paper,12pt,fleqn]{article}
\def\imaginaryunit{j}                  % the imaginary unit, i for mathematician and theoretical physicist, j for the rest of the world.
\def\imunit{\mathrm{\imaginaryunit}}   % ... in upright math
\def\ce{\mathrm{e}}                    % the constant e, upright of course
\newcommand\epowim[1]{\ce^{\epowimaux#1\relax\endep}}
\def\epowimaux#1#2\endep{\ifx-#1\relax-\imunit\else%
  \if j\imaginaryunit\relax\,\fi\imunit#1\fi#2}
\begin{document}
\[
\epowim{\alpha}\qquad \epowim{-\alpha} \qquad \ce^{-\imunit\alpha}
\]
\[
\epowim{x+t}\quad\epowim{-x+t}\quad\epowim{-}\quad\epowim{}
\]
\def\imaginaryunit{i}
\[
\epowim{\alpha}\qquad \epowim{-\alpha} \qquad \ce^{-\imunit\alpha}
\]
\[
\epowim{x+t}\quad\epowim{-x+t}\quad\epowim{-}\quad\epowim{}
\]
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Vermeiden Sie \def, Ihr Leben wird einfacher.

Da Sie anscheinend Bescheid wissen über \@ifnextchar:

\documentclass[a4paper,12pt,fleqn]{article}

% the imaginary unit, j for engineers and i for the rest of the world
\newcommand\imaginaryunit{j}
% in upright type as engineers do; also Euler's constant
\newcommand\imunit{\mathrm{\imaginaryunit}}
\newcommand\ce{\mathrm{e}}

\newcommand{\fiximunit}{\if\imaginaryunit j\,\fi}

\makeatletter
\newcommand{\epowim}[1]{\ce^{\epowim@#1}}
\newcommand{\epowim@}{\@ifnextchar-{\epowim@@}{\epowim@@{\fiximunit}}}
\newcommand{\epowim@@}[1]{#1\imunit}
\makeatother

\begin{document}

\begin{equation}
\epowim{\alpha}\qquad \epowim{-\alpha} \qquad \ce^{-\imunit\alpha}
\qquad \epowim{} \qquad \epowim{-}
\end{equation}

\end{document}

Erklärung: \@ifnextchar-verwendet das nächste Argument, wenn -gefunden wird, andernfalls das darauffolgende, aberohneEntfernen -. Wenn also -aufgerufen wird, ist das Ergebnis

\epowim@@-\alpha

das -als Argument an übergeben wird \epowim@@. Andernfalls \epowim@@wird mit \fiximunitals Argument aufgerufen.

Dies würde mit \epowim{}oder \epowim{-}zum Setzen von e j bzw. e −j nicht fehlschlagen .

Eine vielleicht einfachere Implementierung mit xparse:

\documentclass[a4paper,12pt,fleqn]{article}

\usepackage{xparse}

% the imaginary unit, j for engineers and i for the rest of the world
\newcommand\imaginaryunit{j}
% in upright type as engineers do; also Euler's constant
\newcommand\imunit{\mathrm{\imaginaryunit}}
\newcommand\ce{\mathrm{e}}

\newcommand{\fiximunit}{\if\imaginaryunit j\,\fi}

\NewDocumentCommand{\epowim}{m}{\ce^{\powim#1}}
\NewDocumentCommand{\powim}{t-}{\IfBooleanTF{#1}{-\imunit}{\fiximunit\imunit}}

\begin{document}

\begin{equation}
\epowim{\alpha}\qquad \epowim{-\alpha} \qquad \ce^{-\imunit\alpha}
\qquad \epowim{} \qquad \epowim{-}
\end{equation}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen