Composición tipográfica del cuadrado de un operador matemático

Composición tipográfica del cuadrado de un operador matemático

Supongamos que quiero componer el cuadrado de algún operador matemático A. Usando \operatorname(amsmathpaquete), hay básicamente dos maneras de hacerlo:

  1. \(\operatorname{A^{2}}\)(es decir, el exponente se considera parte del nombre del operador)
  2. \(\operatorname{A}^{2}\)(es decir, el exponente no se considera parte del nombre del operador)

Sin embargo, según mis pruebas, las dos fórmulas anteriores no son equivalentes. De hecho, la primera fórmula tiene una altura menor que la segunda. Ejemplo 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}

¿Alguien puede explicar qué hay en el fondo de mi observación?

Respuesta1

La razón de la diferencia es que TeX compone los superíndices de manera diferente ya sea que sigan a un carácter o a un cuadro, como se describe en la regla 18a del Apéndice G deEl libro de texto. Como la macro \operatornameencuadra su contenido (porque llama \mathopa cuál lo hace), es por eso que \operatorname{A}^2difieren \operatorname{A^2}(el primer superíndice se refiere a un cuadro, mientras que el segundo solo a la A anterior). Puedes ver fácilmente que an \operatornamey an \hboxse comportan de manera similar:

resultado del 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}

Aquí están los detalles técnicos de los cálculos reales realizados por TeX en el presente caso:

resultado del 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}

Respuesta2

Aquí hay una explicación bastante detallada de lo que sucede en la ejecución de una \operatornameinstrucción. Tenga en cuenta que esta explicación se simplifica al caso del uso de este comando.sinel *calificativo ("estrella"). (Consulte amsopn.stypara conocer todos los detalles).

La \operatornameinstrucción (sin el calificador "estrella") se configura como

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

donde \qopname, a su vez, se define como

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

\operator@fontes dado por

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

y \newmcodes@viene dado, dentro de un grupo TeX para el cual "tiene 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} 

(Básicamente, el \newmcodes@comando modifica los significados de los caracteres ' * . - /y :de su configuración "normal" del modo matemático). Finalmente, el comando \z@es equivalente a 0pt(longitud cero).

Por lo tanto, ejecutar el comando \operatorname{xyz}es equivalente a ejecutar

{\qopname\newmcodes@ o xyz}

lo que se reduce a ejecutar, después de (i) reconocer que ninguno de los caracteres especiales afectados por el \newmodes@comando está involucrado en el ejemplo actual, (ii) resolver la construcción en el \csname ... \endcsnamecomplejo a \nolimitsy (iii) observar que \nolimitsno tiene efectos si no especifique límites:

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

Por lo tanto, $\operatorname{A}^2$resuelve

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

mientras que $\operatorname{A^2}$resuelve

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

Si la "instrucción de elevar al cuadrado" esadentroSegún la \mathopinstrucción, parece que la altura de las letras que preceden al superíndice-2 no afecta la posición vertical del archivo 2. Por ejemplo, compruebe las posiciones del 2glifo en

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

Son todos iguales.

Por el contrario, si la "instrucción de elevar al cuadrado" esno en el interiorla \mathopinstrucción, lo que entra en juego es la altura de todo el cuadro que contiene la parte "nombre" de la \operatornameinstrucción; si la parte "nombre" contiene letras con ascendentes, la altura del cuadro aumenta y esto afectará la posición del superíndice-2. Por ejemplo, para $\ln^2$, $\det^2$y $\cos^2$, el superíndice está a diferentes alturas debido a las diferencias en las alturas de los cuadros que contienen ln, siny cos, respectivamente.

Respuesta3

Obtuviste excelentes respuestas que explican las TeXnicalidades (y, por lo tanto, responden a tu pregunta). Me gustaría señalar que usted debenuncause \(\operatorname{A^{2}}\), y que probablemente solo desee \(A^2\):

Si tienes algún operador matemático, entonces puedes usar elvariableA para denotar ese operador. En ese caso sólo deberías usar A^2. Sólo para operadores especiales (no variables) se debe utilizar \operatorname, por ejemplo \operatorname{E}para elvalor esperado. (En este ejemplo sucede que eso \operatorname{E}^{2}no tiene mucho sentido, pero siempre pondrías el cuadradoafuerael \operatorname.)

información relacionada