ある数学演算子Aの2乗をタイプセットしたいとします\operatorname
。amsmath
パッケージ) の場合、基本的に 2 つの方法があります。
\(\operatorname{A^{2}}\)
(つまり、指数は演算子名の一部とみなされます)\(\operatorname{A}^{2}\)
(つまり、指数は演算子名の一部とはみなされません)
ただし、私のテストによると、上記の 2 つの式は同等ではありません。実際、最初の式の高さは 2 番目の式の高さよりも小さくなります。最小限の例:
\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}
私の観察の根底にあるものは何なのか、誰か説明してくれませんか?
答え1
この違いの理由は、TeXでは上付き文字が文字に続くかボックスに続くかによって異なる設定を行うためである。これは、付録Gの規則18aに記載されている。TeXbook についてマクロは\operatorname
内容をボックス化するため ( \mathop
which を呼び出すため)、 と は\operatorname{A}^2
異なります (最初の上付き文字はボックスに関するものですが、2 番目は先行する A のみに関するものです)。 とが同じように動作する\operatorname{A^2}
ことは簡単にわかります。\operatorname
\hbox
\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}
この場合に TeX によって行われた実際の計算の技術的な詳細は次のとおりです。
\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}
答え2
ここでは、命令の実行中に何が起こるかについてかなり詳しく説明します\operatorname
。この説明は、このコマンドの使用例に簡略化されていることに注意してください。それなし*
(「スター」) 修飾子。(詳細については、を参照してください。amsopn.sty
)
命令\operatorname
(「スター」修飾子なし)は次のように設定されます。
\DeclareRobustCommand{\operatorname}{{\qopname\newmcodes@ o}}
ここ\qopname
で、は次のように定義される。
\DeclareRobustCommand{\qopname}[3]{%
\mathop{#1\kern\z@\operator@font#3}%
\csname n#2limits@\endcsname},
\operator@font
によって与えられます
\def\operator@font{\mathgroup\symoperators},
そして、catcode 12を持つ\newmcodes@
TeXグループ内で次のように与えられます。"
\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}
(基本的に、この\newmcodes@
コマンドは文字の意味を「通常の」数式モード設定から変更します'
*
.
-
/
。:
) 最後に、コマンドは(ゼロ長さ)\z@
と同等です。0pt
したがって、コマンドを実行すること\operatorname{xyz}
は、
{\qopname\newmcodes@ o xyz}
これは、(i) コマンドの影響を受ける特殊文字が現在の例には含まれていないことを認識し、(ii)複合\newmodes@
体内の構造を に解決し、(iii)制限を指定しない場合は効果がないことに気づいた後に、 を実行することになります。\csname ... \endcsname
\nolimits
\nolimits
{\mathop{\kern0pt \operator@font xyz}
$\operatorname{A}^2$
したがって、
${\mathop{\kern0pt \operator@font A}^2$
$\operatorname{A^2}$
一方、
${\mathop{\kern0pt \operator@font A^2}$
「二乗命令」が内部指示による\mathop
と、上付き文字2の前の文字の高さは、の垂直位置に影響を与えないようです2
。例えば、2
$\mathop{\kern0pt \operator@font ln^2}$
$\mathop{\kern0pt \operator@font sin^2}$
$\mathop{\kern0pt \operator@font cos}^2$`
それらはすべて同じです。
逆に、「二乗命令」が内部ではない命令\mathop
の場合、命令の「名前」部分を含むボックス全体の高さが影響します\operatorname
。「名前」部分にアセンダ付きの文字が含まれている場合、ボックスの高さが増加し、上付き文字 2 の位置に影響します。たとえば、、、$\ln^2$
および$\det^2$
の場合、上付き文字の高さが異なりますが、これは、それぞれ、、$\cos^2$
およびを含むボックスの高さが異なるためです。ln
sin
cos
答え3
あなたは、TeXnicalitiesを説明する素晴らしい回答をいくつか得ました(そして、あなたの質問に答えました)。私は、あなたがすべきことを指摘したいと思います。一度もないを使用します\(\operatorname{A^{2}}\)
。おそらく、次のようになります\(A^2\)
。
数学演算子がある場合は、変数A はその演算子を表します。その場合は を使用してくださいA^2
。特別な(変数ではない)演算子の場合のみ を使用してください。\operatorname
たとえば、\operatorname{E}
期待値(この例では、\operatorname{E}^{2}
実際には意味をなさないことが起こりますが、常に正方形を置くことになります外。\operatorname