Ayuda para hacer referencias cruzadas de una ecuación.

Ayuda para hacer referencias cruzadas de una ecuación.

Estoy tratando de aprender a usar los \eqrefcomandos 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

  1. No etiqueta la ecuación.
  2. 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, \labelen dicha etiquetavoluntadser honrado por \refo \eqref. (Todo \eqreflo que realmente se hace es formatear el argumento de a \refpara que esté en posición vertical y entre paréntesis).

próximo. alignestá 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 \alignpara 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 \eqmacro. El align*medio ambiente, por diseño, nonoincrementar o imprimir números de ecuaciones. Por lo tanto, cualquier \labelinstrucción asociada con esta ecuación (o grupo de ecuaciones) no apuntará a lo generado por \eq.

Como resultado, una instrucción posterior \refno \eqrefapuntará 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 \labelinstrucció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 \eqmacro de la siguiente manera:

\newcommand{\eq}[1]{\begin{equation}\begin{split} #1 \end{split}\end{equation}}

y colocarle una \labelinstrucció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 \taglas instrucciones dentro de una \eqdeclaración con \label.

información relacionada