Compondo o quadrado de um operador matemático

Compondo o quadrado de um operador matemático

Suponha que eu queira compor o quadrado de algum operador matemático A. Usando \operatorname(amsmathpacote), existem basicamente duas maneiras de fazer isso:

  1. \(\operatorname{A^{2}}\)(ou seja, o expoente é considerado parte do nome do operador)
  2. \(\operatorname{A}^{2}\)(ou seja, o expoente não é considerado parte do nome do operador)

De acordo com meus testes, as duas fórmulas acima não são equivalentes. Na verdade, a primeira fórmula tem uma altura menor que a segunda. Exemplo mínimo:

\documentclass{article}

\usepackage{amsmath}

\newlength{\len}

\begin{document}

\begin{enumerate}
\item
  \settoheight{\len}{\(\operatorname{A^{2}}\)}
  \(\operatorname{A^{2}}\): height = \the\len
\item
  \settoheight{\len}{\(\operatorname{A}^{2}\)}
  \(\operatorname{A}^{2}\): height = \the\len
\end{enumerate}

\end{document}

Alguém pode explicar o que está por trás da minha observação?

Responder1

A razão para a diferença é que o TeX formata os sobrescritos de maneira diferente, quer siga um caractere ou uma caixa, conforme descrito na regra 18a do Apêndice G doO TeXbook. Como a macro \operatornameencaixota seu conteúdo (porque ela chama \mathopo que faz), é por isso que \operatorname{A}^2e \operatorname{A^2}difere (o primeiro sobrescrito diz respeito a uma caixa, enquanto o segundo apenas ao A anterior). Você pode ver facilmente que an \operatornamee an \hboxse comportam de maneira semelhante:

resultado do código

\documentclass{article}

\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{xcolor}

\begin{document}

\begin{tabular}{ccc}
\scalebox{5}{$\operatorname{A}^2$} & \scalebox{5}{$\hbox{A}^2$} & \scalebox{5}{$\operatorname{A^2}$} \\
\verb"$\operatorname{A}^2$" & \verb"$\hbox{A}^2$" & \verb"$\operatorname{A^2}$" \\
\end{tabular}

\raisebox{1.22cm}[0pt]{\color{red}\rule{\textwidth}{0.4pt}}

\end{document}

Aqui estão os detalhes técnicos dos cálculos reais feitos pelo TeX no presente caso:

resultado do código

\documentclass[a4paper]{article}

\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{geometry}

\begin{document}

\setbox0=\hbox{$a$}% to initialize the maths fonts

\begingroup
\newdimen\h
\newdimen\q
\newdimen\boxedu
\newdimen\unboxedu
\newdimen\sigmafourteen
\newdimen\sigmafive
\q=\the\fontdimen18\scriptfont2
\sigmafourteen=\the\fontdimen14\textfont2
\sigmafive=\the\fontdimen5\textfont2
\def\tabularheading{\itshape\color{red!70!black}}

\noindent List of relevant font parameters and their values:
\begin{quote}
\begin{tabular}{lll}
\tabularheading Name & \tabularheading Symbol & \tabularheading Value \\
\texttt{x\_height} & $\sigma_5$ & \the\sigmafive \\
\texttt{sup2}      & $\sigma_{14}$ & \the\sigmafourteen \\
\texttt{sup\_drop} & $q$ (it's $\sigma_{18}$ of superscript font) & \the\q \\
\end{tabular}
\end{quote}
Comparison of the amount the superscript is shifted up for a boxed and unboxed $A$:
\begin{quote}
\setbox0=\hbox{$A$}
\h=\the\ht0
\def\maxof#1#2{%
  \ifdim#1>#2%
      #1%
    \else
      #2%
    \fi}
\begin{tabular}{lll}
& \tabularheading Boxed $A$ & \tabularheading Unboxed $A$ \\
\tabularheading height $h$ & \the\h & \the\h \\
\tabularheading base superscript shift $u_0$ & $h-q = \mathrm{\the\dimexpr\h-\q\relax}$ & 0pt \\
\tabularheading real shift $u = \max(u_0,\sigma_{14},\frac{1}{4}\sigma_5)$ &
\boxedu=\dimexpr\h-\q\relax
\boxedu=\maxof{\boxedu}{\sigmafourteen}%
\global\boxedu=\maxof{\boxedu}{.25\sigmafive}%
\the\boxedu
&
\unboxedu=0pt
\unboxedu=\maxof{\unboxedu}{\sigmafourteen}%
\global\unboxedu=\maxof{\unboxedu}{.25\sigmafive}%
\the\unboxedu
\end{tabular}
\end{quote}
Comparision of the calculations with the real typesetting:
\begin{quote}
\begin{tabular}{cc}
\scalebox{5}{$\hbox{$A$}^2$\hbox{$A$\raise\boxedu\hbox{$\scriptstyle2$}}} & \scalebox{5}{$A^2$\hbox{$A$\raise\unboxedu\hbox{$\scriptstyle2$}}} \\
\tabularheading boxed $A$ & \tabularheading unboxed $A$ \\
\end{tabular}

\raisebox{1.35cm}[0pt]{\color{blue}\rule{9.5cm}{0.4pt}}
\end{quote}
\endgroup

\end{document}

Responder2

Aqui está uma explicação bastante detalhada do que acontece na execução de uma \operatornameinstrução. Observe que esta explicação é simplificada para o caso do uso deste comandosemo *qualificador ("estrela"). (Veja amsopn.styos detalhes completos.)

A \operatornameinstrução (sem o qualificador "estrela") é configurada como

\DeclareRobustCommand{\operatorname}{{\qopname\newmcodes@ o}}

onde \qopname, por sua vez, é definido como

\DeclareRobustCommand{\qopname}[3]{%
    \mathop{#1\kern\z@\operator@font#3}%
    \csname n#2limits@\endcsname},

\operator@fontÉ dado por

\def\operator@font{\mathgroup\symoperators},

e \newmcodes@é fornecido - dentro de um grupo TeX para o qual "possui catcode 12 - por

\gdef\newmcodes@{\mathcode`\'39\mathcode`\*42\mathcode`\."613A%
  \ifnum\mathcode`\-=45 \else
    \mathchardef\std@minus\mathcode`\-\relax
  \fi
  \mathcode`\-45\mathcode`\/47\mathcode`\:"603A\relax} 

(Basicamente, o \newmcodes@comando modifica os significados dos caracteres ' * . - /e :de suas configurações "regulares" do modo matemático.) Finalmente, o comando \z@é equivalente a 0pt(comprimento zero).

Portanto, executar o comando \operatorname{xyz}é equivalente a executar

{\qopname\newmcodes@ o xyz}

que se resume a executar, após (i) reconhecer que nenhum dos caracteres especiais afetados pelo \newmodes@comando está envolvido no exemplo atual, (ii) resolver a construção no \csname ... \endcsnamecomplexo para \nolimitse (iii) observar que \nolimitsnão tem efeitos se nós não especifique limites:

{\mathop{\kern0pt \operator@font xyz}

Portanto, $\operatorname{A}^2$resolve

${\mathop{\kern0pt \operator@font A}^2$

Considerando que $\operatorname{A^2}$resolve

${\mathop{\kern0pt \operator@font A^2}$

Se a "instrução de quadratura" fordentroa \mathopinstrução, parece que a altura das letras que precedem o sobrescrito-2 não afeta o posicionamento vertical do 2. Por exemplo, verifique as posições do 2glifo em

$\mathop{\kern0pt \operator@font ln^2}$
$\mathop{\kern0pt \operator@font sin^2}$
$\mathop{\kern0pt \operator@font cos}^2$`

Eles são todos iguais.

Por outro lado, se a "instrução de quadratura" fornão dentroa \mathopinstrução, o que entra em jogo é a altura de toda a caixa que contém a parte “nome” da \operatornameinstrução; se a parte “nome” contiver letras com ascendentes, a altura da caixa aumentará e isso afetará o posicionamento do sobrescrito-2. Por exemplo, para $\ln^2$, $\det^2$e $\cos^2$, o sobrescrito está em alturas diferentes devido às diferenças nas alturas das caixas que contêm ln, sine cos, respectivamente.

Responder3

Você obteve ótimas respostas explicando os TeXnicalities (e, assim, respondendo à sua pergunta). Eu gostaria de salientar que você deverianuncause \(\operatorname{A^{2}}\), e que você provavelmente só quer \(A^2\):

Se você tiver algum operador matemático, poderá usar ovariávelA para denotar esse operador. Nesse caso você deve apenas usar A^2. Somente para operadores especiais (não variáveis) deve-se usar \operatorname, por exemplo, \operatorname{E}para ovalor esperado. (Neste exemplo acontece que isso \operatorname{E}^{2}não faz muito sentido, mas você sempre colocaria o quadradoforao \operatorname.)

informação relacionada