
Estoy tratando de aprender a usar los \eqref
comandos en lugar de simplemente hacerlos tag{1.1}
, para no tener que volver atrás y volver a numerar. Tengo problemas: en el problema 3b, digo
Now \eq{y(t, \epsilon)= y_0(t) + \epsilon y_1(t) + O(\epsilon^2), \label{eq:aa}}
(\eq es una abreviatura que he definido, lo es \newcommand{\eq}[1]{\begin{align*}#1\end{align*}}
). Luego vuelvo y escribo So we can fill in \eqref{eq:aa}
, y los problemas son
- No etiqueta la ecuación.
- Cuando vuelve a referirse a ella, la llama (1.2), aunque es la primera ecuación etiquetada.
Aquí hay un enlace a mi código, si le ayuda a diagnosticar.https://www.writelatex.com/read/zjhhjpndjpkz
¡Aprecio tu ayuda!
Respuesta1
bueno. Aquí hay algunos problemas con su definición.
cualquierEl entorno de visualización de matemáticas con estrellas tiene como objetivo suprimir la numeración. puedes poner \tag{...}
un entorno destacado, pero el número no se incrementará automáticamente. sin embargo, \label
en dicha etiquetavoluntadser honrado por \ref
o \eqref
. (Todo \eqref
lo que realmente se hace es formatear el argumento de a \ref
para que esté en posición vertical y entre paréntesis).
próximo. align
está destinado a ser utilizado para expresiones de varias líneas y cada línea tiene una parte izquierda y una parte derecha. aunque mucha gente lo utiliza \align
para pantallas de una sola línea, es una mala idea, ya que el espacio vertical alrededor de una pantalla de varias líneas es intencionalmente diferente del que hay alrededor de una pantalla de una sola línea. y si no hay dos partes en una línea (separadas por &
), la estructura no estará centrada horizontalmente.
Finalmente, convertir entornos en comandos hace que su entrada sea mucho más difícil de leer y descifrar para otra persona, y conduce a malos hábitos de entrada, como ejecutar el material de visualización en largas filas. Créanme, esto provoca una grave pérdida de cabello por parte de los editores de las revistas.
Si realmente desea una visualización numerada de una línea usando una abreviatura como esta, puede hacerlo, tal vez así:
\newcommand{\eq}[1]{\begin{equation} #1\end{equation}}
pero es mejor pensarlo dos veces antes de hacerlo. alguien sugirió persuadir a su entorno de entrada/editor para que utilice "finalización". esto hace paramuchoarchivos más escrutables y una depuración y un mantenimiento más eficientes a largo plazo.
Respuesta2
He echado un vistazo al código que proporcionas en el enlace. El principal problema, al parecer, es que se utiliza el align*
entorno en la definición de la \eq
macro. El align*
medio ambiente, por diseño, nonoincrementar o imprimir números de ecuaciones. Por lo tanto, cualquier \label
instrucción asociada con esta ecuación (o grupo de ecuaciones) no apuntará a lo generado por \eq
.
Como resultado, una instrucción posterior \ref
no \eqref
apuntará a esa estructura. En su lugar, (??)
se imprimirá o la referencia cruzada apuntará al objeto cuyo contador asociado se incrementó más recientemente antes de la \label
instrucción perdida. Este objeto podría ser una sección, un teorema, alguna otra ecuación que se generó de forma "normal" (es decir, no mediante \eq
), etc.
Debería poder lograr un mejor resultado definiendo la \eq
macro de la siguiente manera:
\newcommand{\eq}[1]{\begin{equation}\begin{split} #1 \end{split}\end{equation}}
y colocarle una \label
instrucción, como en
\eq{y(t, \epsilon)= y_0(t) + \epsilon y_1(t) + O(\epsilon^2),} \label{eq:aa}
Tenga en cuenta que con esta configuración, debe cambiar el nombre de todas \tag
las instrucciones dentro de una \eq
declaración con \label
.