Makro übernimmt Argument ohne Einschließen in Klammern?

Makro übernimmt Argument ohne Einschließen in Klammern?

Ich möchte ein Makro erstellen, das keine geschweiften Klammern benötigt, um ein Argument zu akzeptieren. Lassen Sie uns ein Beispiel erfinden. Angenommen, ich möchte ein Makro, das ein optionales Argument fund ein Argument akzeptiert x:

\dd[f]{x}

Und das entspricht der Schreibweise:

\frac{\mathrm{d} f }{\mathrm{d} x }

Die Frage ist nun: Kann ich ein Makro so erstellen, dass ich die Klammern nicht schreiben muss, das Argument aber trotzdem akzeptiert?

Es wäre sehr praktisch, wenn ich die Klammern vermeiden könnte. So etwas wäre hervorragend:

\dd f,x

Gibt es eine Möglichkeit, das Schreiben der Klammern zu vermeiden?

Antwort1

Diese Art von Makro ist eine einfache Tex-Konstruktion und wird als „begrenztes Makro“ bezeichnet. In Latex wird davon abgeraten, zumindest teilweise, weil leicht Fehler passieren können.

hier ist ein Beispiel, das tut, was Sie verlangen:

\documentclass{article}
\def\dd #1,#2 {\frac{\mathrm{d} #1 }{\mathrm{d} #2 }}
\begin{document}
\thispagestyle{empty}
$\dd f,x $
\end{document}

Ausgabe des Beispielcodes

Beachten Sie, dass, wenn Sie das Leerzeichen nach dem zweiten Argument in der Eingabe weglassen

$\dd f,x$

Sie erhalten eine Fehlermeldung:

! Missing } inserted.
<inserted text> 
                }
l.5 $\dd f,x$

Das Fehlen eines definitiven „Closers“ beschränkt die Erkennung des Arguments jedoch auf ein einzelnes Eingabetoken, was sehr einschränkend sein könnte, obwohl dies in diesem Beispiel nicht der Fall ist.

bearbeiten: als Antwort auf eine Anfrage nach einem ähnlichen abgegrenzten Makro, bei dem Argumente optional sein können, hier dasselbe, für diesen Zweck modifiziert. In diesem speziellen Fall ist es lediglich erforderlich, dass jedes Argument klar abgegrenzt ist.

\documentclass{article}
\def\dd #1,#2;{\frac{\mathrm{d} #1 }{\mathrm{d} #2 }}
\begin{document}
\[\dd f,x; \quad \dd ,x; \quad \dd ,; \]
\end{document}

Ausgabe des Beispielcodes

In diesem Fall, wo jedes Argument wahrscheinlich nur aus einem Buchstaben oder einer Steuerfolge (z. B. \phi) besteht, wird ein Argument beim Weglassen einfach aus der Ausgabe weggelassen. (Geben Sie einfach keinen Punkt statt eines Kommas ein, wie ich es beim Einrichten des Beispiels getan habe.)

in komplizierteren Situationen, in denen die Argumente aus mehrstelligen Zeichenfolgen bestehen, muss die Wahl der Trennzeichen aufgrund der möglichen Anwesenheit von Satzzeichen in einem Argument mit viel größerer Sorgfalt erfolgen; in solchen Fällen könnte man die betroffenen Argumente auch in Klammern einschließen, damit sie für (la)tex als ein einziges Tokan erscheinen, wie in einem Kommentar von @SeanAllred vorgeschlagen.

und wenn dieses Makro im Text und nicht in der Mathematik verwendet werden soll,sehrAchten Sie auf Leerzeichen in der Erweiterung.

verwandte Informationen