2. Exibição e alinhamento para equações de LaTeX
O pacote amsmath contém uma série de definições de ambientes para digitar fórmulas de matemática exibidas. Eles podem ser classificados pelo número de linhas de materiais (únicas ou múltiplas) e pelo número de pontos de alinhamento.
Nesta secção, utilizaremos o termo equação da seguinte forma: para nos referirmos a uma parte lógica distinta de uma apresentação matemática, que é geralmente numerada para referência e também rotulada (por exemplo, pelo seu número entre parênteses). Estes rótulos também são chamados de tags.
A lista a seguir contém os ambientes de exibição mais populares. Quando apropriado, eles estrelaram formas nas quais não há marcação das equações.
equação | equação* | Uma linha, uma equação |
multline | multline* | Uma equação de linha múltipla não alinhada, um número da equação |
Gather | Gather | Várias equações sem alinhamento |
align | alinhe* | Várias equações com múltiplos alinhamentos |
flalign | flalign* | Várias equações: Spreads em horizontalmente se espalham de `alinhamento ' |
split | Um alinhamento simples dentro de uma equação de múltiplas linhas |
Todos os exemplos deste capítulo são digitados com o material matemático centrado e os números de equações (tags) à direita. Para visualizar o posicionamento, apresentamos linhas verticais azuis na saída que representam as margens esquerda e direita, bem como a linha central. No código-fonte do LATEX, usamos o % -----...
Comente para separar linhas que devem ser colocadas no preâmbulo do documento daquelas que devem ser colocadas no corpo.
1\usepackage[leqno]{amsmath}
2% -------------------------------------------------------------------------------
3\begin{equation} (a-b)^2 = a^2-2ab+b^2 \end{equation}
4\[ \cos2\eta = \cos^2\eta-\sin^2\eta \]
Se você deseja posicionar a matemática em um recuo fixo da margem esquerda, em vez de centralizado na coluna de texto, a opção fleqn
estará disponível. Você pode especificar o tamanho do recuo no preâmbulo, definindo o valor do comprimento da borracha \mathindent
. Seu valor padrão é o mesmo que o recuo de uma lista de primeiro nível. Se você estiver contente com esse valor, poderá pular a configuração do comprimento \mathindent
.
1\usepackage[fleqn,reqno]{amsmath}
2\setlength\mathindent{0.2in}
3% -------------------------------------------------------------------------------
4\begin{equation} (a-b)^2 = a^2-2ab+b^2 \end{equation}
5\[ \cos2\eta = \cos^2\eta-\sin^2\eta \]
Não há necessidade de passar na opção reqno
aqui (como é o padrão), mas substitui as configurações da classe de documentos, para que o número da equação seja forçado à direita, o que quer que aconteça.
No LATEX padrão, &
e \\
são usados para separação de coluna e linha dentro de alinhamentos exibidos. Os detalhes de sua mudança de uso nos ambientes amsmath
.
2.1. Comparação com LaTeX padrão
Alguns dos ambientes de exibição de várias linhas permitem alinhar partes da fórmula. Comparado aos ambientes de LaTeX padrão eqnarray
e eqNarray*
, as estruturas definidas no pacoteamsmath
fornecem uma maneira ligeiramente diferente e mais simples de marcar os pontos de alinhamento. No LATEX padrão, eqNarray*
é semelhante a um ambiente Array
com{rcl}
como o preâmbulo, o que significa que dois chars são necessários para indicar os dois pontos de alinhamento. No pacote amsmath
, as estruturas equivalentes têm apenas um único ponto de alinhamento (como searray
tivesse um {rl}
preâmbulo), então você precisava colocar apenas um &
`` char à esquerda do símbolo (geralmente uma relação) que deve ser alinhada.
O ambiente eqNarray
produz espaço extra nos pontos de alinhamento, dependendo das configurações de parâmetros paraArray
. As estruturas amsmath
, ao mesmo tempo, dão espaçamento fixo. A diferença é claramente ilustrada pelo próximo exemplo. A mesma equação é digitada usando os ambientes equação
, align
e eqNarray
.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{equation}
4x^2 + y^2 = z^2
5\end{equation}
6\begin{align}
7x^2 + y^2 &= z^2 \\
8x^3 + y^3 &< z^3
9\end{align}
10\begin{eqnarray}
11x^2 + y^2 &=& z^2 \\
12x^3 + y^3 &<& z^3
13\end{eqnarray}
Observe que os espaços no ambiente eqNarray
são amplos demais para os padrões convencionais de composição matemática.
Como no LATEX padrão, as linhas em uma tela amsmath
são marcadas com \\
(ou o fim do ambiente). Como a quebra de linha em uma exibição matemática geralmente requer uma compreensão profunda da estrutura da fórmula, ela é comumente considerada além dos recursos de software de hoje.
2.2. Uma única equação em uma linha
Uma única equação pode ser produzida pelo ambiente ‘Equação’. Uma tag é gerada e colocada automaticamente na extrema esquerda ou direita de acordo com a opção em uso. O ambiente equação*
produz a mesma equação sem uma tag. O LATEX padrão também possui equação
, mas não equação*
, pois o último é semelhante ao ambiente matemático exibido padrão.
Um fato notável é que a presença da tag não afeta o posicionamento do conteúdo. A tag será deslocada para cima ou para baixo, caso não haja espaço suficiente para ela em uma linha: para a linha anterior quando as tags de equação estão à esquerda e para a próxima linha quando as tags estiverem à direita.
1\usepackage[leqno]{amsmath}
2% -------------------------------------------------------------------------------
3\begin{equation*}
4n^2 + m^2 = k^2
5\end{equation*}
6\begin{equation}
7n^p + m^p \neq k^p \qquad p > 2
8\end{equation}
2.3. Uma única equação em várias linhas sem alinhamento
Uma variação do ambiente Equação
é o ambiente multline
. É usado apenas para equações que não se encaixam em uma única linha. O char \
deve ser usado para marcar as quebras da linha, pois elas não são encontradas automaticamente.
A primeira linha do MultLine
será alinhada em um recuo da margem esquerda e a última no mesmo recuo da margem direita. O valor do comprimento \multlineGap
define o tamanho desse indentação.
Cada linha que não a primeira e a última é centrada individualmente dentro da largura da exibição (a menos que a opção fleqn
seja usada). No entanto, se você adicionar o comando \shoveleft
ou \shoveright
dentro de uma linha, essa linha será forçada para a esquerda ou para a direita.
Um ambiente multline
possui uma única tag, pois logicamente é uma única equação. Portanto, nenhuma das linhas individuais pode ser alterada pelo uso de \tag
ou\notag
. A tag, se presente, é colocada descarrega direita/esquerda na última/primeira linha quando a opção reqno
/ leqno
for usada.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{multline}
4\text{First line of a multline} \\
5\text{Centered Middle line} \\
6\shoveright{\text{A right Middle}} \\
7\text{Another centered Middle} \\
8\text{Yet another centered Middle} \\
9\shoveleft{\text{A left Middle}} \\
10\text{Last line of the multline}
11\end{multline}
O próximo exemplo mostra como \multlineGap
afeta o resultado. No primeiro caso, a formação “dy”, que parece uma tag está faltando na primeira linha da equação. Quando \multlineGap
está definido como 0
, o espaço à esquerda da segunda linha não muda devido à tag, enquanto a primeira linha é deslocada para a margem esquerda, deixando claro que essa é uma única equação.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{multline} \tag{2}
4\sum_{t \in \mathbf{T}} \int_a^t \biggl\lbrace \int_a^t f(t - x)^2 \, g(y)^2 \,dx \biggr\rbrace \,dy \\
5= \sum_{t \notin \mathbf{T}} \int_t^a \biggl\lbrace g(y)^2 \int_t^a f(x)^2 \,dx \biggr\rbrace \,dy
6\end{multline}
7\setlength\multlinegap{0pt}
8\begin{multline} \tag{2}
9\sum_{t \in \mathbf{T}} \int_a^t \biggl\lbrace \int_a^t f(t - x)^2 \, g(y)^2 \,dx \biggr\rbrace \,dy \\
10= \sum_{t \notin \mathbf{T}} \int_t^a \biggl\lbrace g(y)^2 \int_t^a f(x)^2 \,dx \biggr\rbrace \,dy
11\end{multline}
2.4. Uma única equação em várias linhas com alinhamento
Quando você precisa alinhar uma única equação multilina, o ambiente Split
está ao seu serviço. Basta usar um único &
char em cada linha para marcar os pontos de alinhamento.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{equation}
4\begin{split}
5(a + b)^4 &= (a + b)^2 (a + b)^2 \\
6 &= (a^2 + 2ab + b^2)(a^2 + 2ab + b^2) \\
7 &= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4
8\end{split}
9\end{equation}
Um split
não cria uma tag de equação (portanto, a variante estrelada não é necessária), porque é sempre usada como o conteúdo de uma única equação. Para esse fim, você pode colocá -lo em um ambiente externo.
Por padrão, a tag (assim como qualquer parte da equação fora do split
) está centrada verticalmente na altura total do material de ambiente split
. Esse comportamento corresponde à opção Centertags
. Quando você especifica a opção TBTAGS
, a tag é colocada na última linha do split
quando a tag está à direita e na primeira linha quando a tag estiver à esquerda.
1\usepackage[tbtags]{amsmath}
2% -------------------------------------------------------------------------------
3\begin{equation}
4\begin{split}
5(a - b)^3 &= (a - b) (a - b)^2 \\
6 &= (a - b)(a^2 - 2ab + b^2) \\
7 &= a^3 - 3a^2b + 3ab^2 - b^3
8\end{split}
9\end{equation}
2.5. Grupos de equações sem alinhamento
Quando você precisa colocar duas ou mais equações em uma única exibição sem alinhamento entre as equações, você pode usar o ambiente coleta
. Ele também centraliza separadamente cada equação dentro da largura da exibição e equipa com uma tag individual, se necessário. Cada linha de um coletor
é logicamente uma equação única.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{gather}
4(a + b)^2 = a^2 + 2ab + b^2 \\
5(a + b) \cdot (a - b) = a^2 - b^2
6\end{gather}
Pode ser necessário suprimir o número da equação para uma determinada linha. O comando \notag
, colocado na linha lógica, é a resposta. O ambiente Gather
não identifica as equações.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{gather}
4D(a,r) \equiv \{ z \in \mathbf{C} \colon |z - a| < r \} \notag \\
5\operatorname{seg} (a, r) \equiv \{ z \in \mathbf{C} \colon \Im z < \Im a, \ |z - a| < r \} \\
6C (E, \theta, r) \equiv \bigcup_{e \in E} c (e, \theta, r)
7\end{gather}
2.6. Grupos de equações com alinhamento simples
Quando você precisa digitar mais de uma equação em uma única exibição e alinhá -los verticalmente, o ambiente alinhado
vem em socorro. No caso mais simples, você usa um único &
em cada linha para marcar o ponto de alinhamento.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{align}
4(a - b)^3 &= (a - b) (a - b)^2 \\
5 &= (a - b)(a^2 - 2ab + b^2) \\
6 &= a^3 - 3a^2b + 3ab^2 - b^3
7\end{align}
8\begin{align}
9x^2 + y^2 &= 1 \\
10 y &= \sqrt{1-x^2}
11\end{align}
2.7. Múltiplos alinhamentos
Um ambiente alinhado
pode definir vários pontos de alinhamento. O layout contém tantos pares de colunas forem necessários e é semelhante a uma array
com o preâmbulo{rlrl ...}
semelhante a. Supondo que consista em pares de colunas ntais rl
, o número de&
‘por linha será *2n-1 *: um para alinhamento dentro de cada par de colunas doando n; e * n - 1 * &
‘para separar os pares de colunas.
O ambiente ALIGN
espalha o material uniformemente pela largura da tela. Se houver espaço extra, ele será distribuído igualmente entre pares de colunas adjacentes e as duas margens de exibição.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3This example has two column-pairs.
4\begin{align} \text{Compare }
5x^2 + y^2 &= 1 & x^3 + y^3 &= 1 \\
6x &= \sqrt {1-y^2} & x &= \sqrt[3]{1-y^3}
7\end{align}
8This example has three column-pairs.
9\begin{align}
10 x &= y & X &= Y & a &= b+c \\
11 x' &= y' & X' &= Y' & a' &= b \\
12x + x' &= y + y' & X + X' &= Y + Y' & a'b &= c'b
13\end{align}
O layout do Flalign
é semelhante, mas não há espaço nas margens. No próximo exemplo, você pode ver que a equação (3) se encaixa em uma única linha devido a esse fato (enquanto a equação (2) ainda não o faz).
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3This example has two column-pairs.
4\begin{flalign} \text{Compare }
5x^2 + y^2 &= 1 & x^3 + y^3 &= 1 \\
6 x &= \sqrt {1-y^2} & x &= \sqrt[3]{1-y^3}
7\end{flalign}
8This example has three column-pairs.
9\begin{flalign}
10 x &= y & X &= Y & a &= b+c \\
11 x' &= y' & X' &= Y' & a' &= b \\
12x + x' &= y + y' & X + X' &= Y + Y' & a'b &= c'b
13\end{flalign}
Nos dois casos, o espaço mínimo entre os pares de colunas pode ser definido alterando \minalignsep
. O valor padrão é 10pt
e pode ser alterado com \renewCommand
, pois é um comando macro em vez de um parâmetro de comprimento. O próximo exemplo demonstra o efeito de alterar \minalignsep
.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3This example has two column-pairs.
4\renewcommand\minalignsep{0pt}
5\begin{align} \text{Compare }
6x^2 + y^2 &= 1 & x^3 + y^3 &= 1 \\
7 x &= \sqrt {1-y^2} & x &= \sqrt[3]{1-y^3}
8\end{align}
9This example has three column-pairs.
10\renewcommand\minalignsep{15pt}
11\begin{flalign}
12 x &= y & X &= Y & a &= b+c \\
13 x' &= y' & X' &= Y' & a' &= b \\
14x + x' &= y + y' & X + X' &= Y + Y' & a'b &= c'b
15\end{flalign}
O próximo exemplo ilustra um uso muito comum para alinhamento
. Observe o uso de \text
para produzir texto normal dentro do material matemático.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{align}
4 x &= y && \text{by hypothesis} \\
5 x' &= y' && \text{by definition} \\
6x + x' &= y + y' && \text{by Axiom 1}
7\end{align}
2.8. Displays de interrupção: \Intertext
Você pode colocar um pequeno pedaço de texto entre as linhas de um alinhamento de exibição. Isso é feito com o comando \Intertext
. É muito importante que todas as propriedades de alinhamento permaneçam não afetadas pelo texto, enquanto o próprio texto é composto como um parágrafo normal definido para a largura da exibição. O alinhamento não funcionará se você apenas terminar a tela e iniciar um novo após o texto. Este comando deve sempre seguir imediatamente um comando \\
ou \\*
`.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{align}
4A_1 &= N_O (\lambda ; \Omega') - \phi ( \lambda ; \Omega') \\
5A_2 &= \phi (\lambda ; \Omega') \phi (\lambda ; \Omega) \\
6\intertext{and finally}
7A_3 &= \mathcal{N} (\lambda ; \omega)
8\end{align}
The words “and finally” are outside the alignment, at the left margin, but all three equations are aligned.
2.9. Numeração de equações e tags
No LATEX, as tags para equações são normalmente geradas automaticamente e são essencialmente uma representação impressa da “equação” do contador de LaTeX. Isso é feito pelo LATEX em três etapas: definindo o valor do contador equação
; formatando a tag; e imprimi -lo na posição correta.
As duas primeiras etapas estão intimamente vinculadas, porque o valor do contador equação
é aumentado apenas quando a tag correspondente é impressa automaticamente. Vamos dar uma olhada em um ambiente de exibição que estrelou e as formas não se Wharred. Somente o formulário não marcado altera o valor do contador de equação
, pois ele marca automaticamente cada equação lógica enquanto o formulário estrelado não.
Quando você precisa suprimir a configuração de uma tag para uma certa equação lógica dentro do formulário não setrado, você coloca \notaG
(ou\não tumber
) antes do \\
. Você também pode substituir as tags padrão por suas próprias design usando o comando \tag
antes do\\
. O argumento deste comando pode ser um texto normal arbitrário, com os parênteses, como a tag para essa equação.
Observe que o incremento do valor do contador também é suprimido quando \tag
é usado. Isso significa que a configuração de tag padrão é visualmente a mesma que \tag {\ theEquation}
; Eles não são equivalentes. O formulário estrelado, \tag*
, digita o texto em seu argumento sem os parênteses (e sem nenhuma outra coisa que de outra forma possa ser adicionada com uma classe de documento específica).
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{align}
4x^2+y^2 &= z^2 \label{eq:A} \\
5x^3+y^3 &= z^3 \notag \\
6x^4+y^4 &= r^4 \tag{$*$} \\
7x^5+y^5 &= r^5 \tag*{$*$} \\
8x^6+y^6 &= r^6 \tag{\ref{eq:A}$'$} \\
9A_1 &= N_0 (\lambda ; \Omega') - \phi ( \lambda ; \Omega') \\
10A_2 &= \phi (\lambda ; \Omega') \, \phi (\lambda ; \Omega) \tag*{ALSO (\theequation)} \\
11A_3 &= \mathcal{N} (\lambda ; \omega)
12\end{align}
Note como os comandos
\label
e\ref
são utilizados para fornecer algum tipo de “numeração relativa” para as equações.
2.10. Sequências de numeração subordinada
O pacote * AMSMATH * também suporta a chamada “Sub-Número de Equação”. O ambiente de Subequações
produz tags da forma (2a), (2b), (2c) e assim por diante. Esse esquema de numeração é baseado em dois contadores normais de LaTeX: ParentEquation
e equação
. Todas as equações marcadas em um ambiente de subamques
usam esse esquema.
O exemplo a seguir mostra que a tag pode ser redefinida até certo ponto, mas observe que a redefinição para \theEquation
deve ser colocada no ambiente de subequações
.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{subequations} \label{eq:1}
4\begin{align}
5 f &= g \label{eq:1A} \\
6 f' &= g' \label{eq:1B} \\
7\mathcal{L}f &= \mathcal{L}g \label{eq:1C}
8\end{align}
9\end{subequations}
10
11\begin{subequations} \label{eq:2}
12\renewcommand\theequation{\theparentequation\roman{equation}}
13\begin{align}
14 f &= g \label{eq:2A} \\
15 f' &= g' \label{eq:2B} \\
16\mathcal{L}f &= \mathcal{L}g + K \label{eq:2C}
17\end{align}
18\end{subequations}
19Note the relationship between~\eqref{eq:1}
20and~\eqref{eq:2}: only~\ref{eq:1C} and~\ref{eq:2C} differ.
O ambiente
subequations
deve aparecer fora dos ecrãs que afecta. Ele também não deve estar aninhado dentro de si mesmo. O contador de equações “principal” é incrementado a cada utilização deste ambiente. Um comando\label
dentro do ambientesubequations
, mas fora de qualquer equação individual (lógica), produzirá um\ref
para o número pai (por exemplo, para 2 em vez de 2i).
2.11. Redefinindo o contador de equações
É prática comum ter equações numeradas dentro de seções ou capítulos com tags do formulário (1.1), (1.2), …, (2.1), (2.2), …. O pacote amsmath
fornece uma maneira fácil de configurar isso com a declaração\numberWithin
.
Por exemplo, para obter tags de equação, incluindo o número da seção, com o contador de equações sendo redefinido automaticamente para cada seção, coloque essa declaração no preâmbulo: \numberWithin {equação} {seção}
.
Apêndice A. Renderizando equações de LaTeX com API Aspose.TeX
Agora, veremos a maneira como a API Aspose.TeX permite obter equações de LaTeX como figuras independentes.
Digamos que você precise obter uma equação como uma imagem raster para que você possa usá-la em alguma publicação não-TEX (uma página da web, por exemplo). Usando a API Aspose.TeX, você pode fazê -lo da seguinte forma:
1string equation = @"\begin{equation} (a-b)^2 = a^2-2ab+b^2 \end{equation}
2\[ \cos2\eta = \cos^2\eta-\sin^2\eta \]";
3Aspose.TeX.Features.PngMathRendererOptions options = new Aspose.TeX.Features.PngMathRendererOptions();
4using (Stream stream = File.Open("your-file-name-and-path", FileMode.Create))
5{
6 new Aspose.TeX.Features.PngMathRenderer().Render(equation, stream, options, out System.Drawing.SizeF size);
7 // Below is the short version for rendering with SVG
8 // new Aspose.TeX.Features.SvgMathRenderer().Render(equation, stream, new Aspose.TeX.Features.SvgMathRendererOptions(), out System.Drawing.SizeF size);
9}
Como você pode ver, a API também é capaz de converter uma equação de LaTeX em um arquivo SVG. E esse foi um exemplo de uso do Aspose.TeX para .Net. Abaixo está o código equivalente para a versão Java.
1String equation = "\\begin{equation} (a-b)^2 = a^2-2ab+b^2 \\end{equation}\r\n" +
2 "\\[ \\cos2\\eta = \\cos^2\\eta-\\sin^2\\eta \\]";
3Size2D size = new Size2D.Float();
4com.aspose.tex.PngMathRendererOptions options = new com.aspose.tex.PngMathRendererOptions();
5final OutputStream stream = new FileOutputStream(Helper.getOutputFile(Path.combine(getCurrentPath(), "doc.png")));
6try
7{
8 new com.aspose.tex.PngMathRenderer().render(equation, stream, options, size);
9}
10finally {
11 stream.close();
12}
Você pode encontrar detalhes sobre o uso de opções de renderizador no artigo sobre a renderização de fórmulas de matemática do LaTeX com Aspose.TeX para .NET ou Aspose.TeX para java. Mas um deles é importante para nós aqui. Usando esta opção, você pode especificar o preâmbulo do documento LATEX que precisaria obter o resultado desejado. (Daqui em diante, apresentaremos apenas a versão C# do código -fonte.)
1// The preamble for the very first example on this page
2options.Preamble = @"\usepackage[leqno]{amsmath}";
Você também pode usar esta opção quando precisar estabelecer uma equação em uma área mais estreita do que o LATEX \textWidth
define por padrão. Você tem duas opções para atingir esse objetivo:
1// The preamble for the 2.7 examples
2options.Preamble = @"\usepackage[textwidth=232pt]{geometry}
3\usepackage{amsmath}";
4// or
5options.Preamble = @"\usepackage{amsmath}
6\setlength{\textwidth}{232pt}";
Na API Aspose.TeX, o preâmbulo a seguir é usado por padrão; portanto, a menos que você precise passar opções para o pacote amsmath
ou alterar o padrão \textWidth
ou outra coisa, não há necessidade de especificar o preâmbulo nas opções do renderizador:
1\usepackage{amsmath}
2\usepackage{amsfonts}
3\usepackage{amssymb}
Apêndice B. Renderizando equações de LaTeX com o aplicativo Web de equação de LaTeX Aspose
Há também o App Web do Editor de Equações de Latex que permite editar e visualizar as equações do LATEX. Você pode inserir sua equação no campo de texto e clicar no botão * View * para ver o resultado. Ou você pode usar o painel de controle acima do campo para construir a equação selecionando uma categoria de subexpressão e subexpressão e editando o argumento, se houver. Você pode encontrar o preâmbulo e outras opções abaixo do campo Fórmula.