
Ich versuche zu lernen, wie man die \eqref
Befehle verwendet, anstatt einfach nur zu tun tag{1.1}
, damit ich nicht zurückgehen und neu nummerieren muss. Ich habe Probleme: In Problem 3b sage ich
Now \eq{y(t, \epsilon)= y_0(t) + \epsilon y_1(t) + O(\epsilon^2), \label{eq:aa}}
(\eq ist eine Abkürzung, die ich definiert habe, es ist \newcommand{\eq}[1]{\begin{align*}#1\end{align*}}
). Später gehe ich zurück und schreibe So we can fill in \eqref{eq:aa}
, und die Probleme sind
- Es beschriftet nicht die Gleichung
- Wenn darauf zurückgegriffen wird, nennt man es (1.2), obwohl es die erste markierte Gleichung ist.
Hier ist ein Link zu meinem Code, falls er Ihnen bei der Diagnose hilft.https://www.writelatex.com/read/zjhhjpndjpkz
Ich schätze Ihre Hilfe!
Antwort1
okay, mit deiner Definition gibt es ein paar Probleme.
beliebigDie mit Sternchen markierte mathematische Anzeigeumgebung soll die Nummerierung unterdrücken. Sie können ein \tag{...}
in eine mit Sternchen markierte Umgebung setzen, aber die Nummer wird nicht automatisch erhöht. Allerdings kann ein \label
in einem solchen TagWille\ref
durch oder berücksichtigt werden \eqref
. (alles, \eqref
was tatsächlich geschieht, ist, das Argument von a so zu formatieren, \ref
dass es aufrecht steht und in Klammern steht.)
next. align
ist für mehrzeilige Ausdrücke gedacht, wobei jede Zeile einen linken und einen rechten Teil hat. Obwohl viele Leute es für einzeilige Anzeigen verwenden \align
, ist das keine gute Idee, da der vertikale Abstand um eine mehrzeilige Anzeige absichtlich anders ist als um eine einzeilige Anzeige. Und wenn eine Zeile nicht aus zwei Teilen besteht (durch getrennt &
), wird die Struktur nicht horizontal zentriert.
Und schließlich wird es durch die Umwandlung von Umgebungen in Befehle für andere wesentlich schwieriger, Ihre Eingaben zu lesen und zu entziffern, was zu schlechten Eingabegewohnheiten führt – etwa dazu, dass Anzeigematerial in lange Zeilen eingefügt wird. Glauben Sie mir, dies führt bei den Zeitschriftenredakteuren zu erheblichem Haarausfall.
Wenn Sie wirklich eine einzeilige, nummerierte Anzeige mit einer Kurzschrift wie dieser wünschen, ist dies beispielsweise folgendermaßen möglich:
\newcommand{\eq}[1]{\begin{equation} #1\end{equation}}
aber es ist besser, vorher zweimal darüber nachzudenken. jemand hat vorgeschlagen, Ihre Eingabeumgebung/Ihren Editor zu überreden, „Vervollständigung“ zu verwenden. das sorgt fürvielbesser durchsuchbare Dateien und auf lange Sicht effizienteres Debuggen und Warten.
Antwort2
Ich habe mir den Code angesehen, den Sie in dem Link angeben. Das Hauptproblem scheint darin zu liegen, dass Sie die align*
Umgebung in der Definition des \eq
Makros verwenden. Die align*
Umgebung ist von Natur ausnichtGleichungsnummern erhöhen oder drucken. Daher \label
wird keine mit dieser Gleichung (oder Gleichungsgruppe) verknüpfte Anweisung auf das verweisen, was von generiert wird \eq
.
Als Ergebnis wird eine nachfolgende \ref
oder \eqref
Anweisung nicht auf diese Struktur verweisen. Stattdessen (??)
wird entweder ausgedruckt oder der Querverweis wird auf das Objekt verweisen, dessen zugehöriger Zähler vor der verlorenen \label
Anweisung zuletzt erhöht wurde. Dieses Objekt könnte ein Abschnitt, ein Theorem, eine andere Gleichung sein, die auf die „normale“ Weise (also nicht über ) generiert wurde \eq
, usw.
Sie sollten ein besseres Ergebnis erzielen können, wenn Sie das \eq
Makro wie folgt definieren:
\newcommand{\eq}[1]{\begin{equation}\begin{split} #1 \end{split}\end{equation}}
und fügen Sie eine \label
Anweisung hinzu, wie in
\eq{y(t, \epsilon)= y_0(t) + \epsilon y_1(t) + O(\epsilon^2),} \label{eq:aa}
\tag
Beachten Sie, dass Sie bei diesem Setup alle Anweisungen innerhalb einer \eq
Anweisung mit umbenennen sollten \label
.