
Estou tentando aprender como usar os \eqref
comandos em vez de apenas fazer tag{1.1}
, para não precisar voltar e renumerar. Estou tendo problemas: no problema 3b, eu digo
Now \eq{y(t, \epsilon)= y_0(t) + \epsilon y_1(t) + O(\epsilon^2), \label{eq:aa}}
(\eq é uma abreviatura que defini, é \newcommand{\eq}[1]{\begin{align*}#1\end{align*}}
). Mais tarde volto e escrevo So we can fill in \eqref{eq:aa}
, e os problemas são
- Não rotula a equação
- Quando se refere a ela, chama-se (1.2), embora seja a primeira equação marcada.
Aqui está um link para o meu código, se isso ajudar você a diagnosticar.https://www.writelatex.com/read/zjhhjpndjpkz
Eu aprecio sua ajuda!
Responder1
OK. aqui estão alguns problemas com sua definição.
qualquerO ambiente de exibição matemática com estrela destina-se a suprimir a numeração. você pode colocar \tag{...}
um ambiente com estrela, mas o número não será incrementado automaticamente. no entanto, um \label
em tal tagvaiser homenageado por \ref
ou \eqref
. (tudo \eqref
o que realmente faz é formatar o argumento de a \ref
para ficar na vertical e entre parênteses).
próximo. align
destina-se a ser usado para expressões de múltiplas linhas, com cada linha tendo uma parte esquerda e uma parte direita. embora muitas pessoas usem \align
telas de uma linha, é uma má ideia, já que o espaçamento vertical em torno de uma tela de múltiplas linhas é intencionalmente diferente daquele em torno de uma tela de uma linha. e se não houver duas partes em uma linha (separadas por &
), a estrutura não será centralizada horizontalmente.
finalmente, transformar ambientes em comandos torna sua entrada muito mais difícil de ser lida e decifrada por outra pessoa, e leva a maus hábitos de entrada - como colocar material de exibição em longas filas. acredite, isso leva a uma grave perda de cabelo por parte dos editores de periódicos.
se você realmente deseja uma exibição numerada de uma linha usando uma abreviação como esta, isso pode ser feito, talvez assim:
\newcommand{\eq}[1]{\begin{equation} #1\end{equation}}
mas é melhor pensar duas vezes antes de fazer isso. alguém sugeriu persuadir seu ambiente/editor de entrada a usar "conclusão". isso faz paramuitoarquivos mais examinados e depuração e manutenção mais eficientes no longo prazo.
Responder2
Dei uma olhada no código que você fornece no link. O principal problema, ao que parece, é que você usa o align*
ambiente na definição da \eq
macro. O align*
ambiente, por design, nãonãoincrementar ou imprimir números de equações. Conseqüentemente, qualquer \label
instrução associada a esta equação (ou grupo de equações) não apontará para o que é gerado por \eq
.
Como resultado, uma instrução \ref
ou subseqüente \eqref
não apontará para essa estrutura. Em vez disso, (??)
será impressa ou a referência cruzada apontará para o objeto que teve seu contador associado incrementado mais recentemente antes da \label
instrução perdida. Este objeto poderia ser uma seção, um teorema, alguma outra equação que foi gerada da maneira “normal” (ou seja, não via \eq
), etc.
Você deve conseguir um resultado melhor definindo a \eq
macro da seguinte forma:
\newcommand{\eq}[1]{\begin{equation}\begin{split} #1 \end{split}\end{equation}}
e afixar uma \label
instrução nele, como em
\eq{y(t, \epsilon)= y_0(t) + \epsilon y_1(t) + O(\epsilon^2),} \label{eq:aa}
Observe que com esta configuração, você deve renomear todas \tag
as instruções dentro de uma \eq
instrução com \label
.