在数学模式下使大写字母的宽度与数字相同?

在数学模式下使大写字母的宽度与数字相同?

我希望有

\[
\begin{array}{c}
\phantom{+} \, 39A_{12} \\
\underline{+ \, 488_{12}} \\
\phantom{+} \, 866_{12}
\end{array}
\]

但“A”的间距看起来很别扭。在这种情况下,有没有办法让大写字母的宽度与数字相同?我不在乎它是$A$还是$\text{A}$$\mathrm{A}$,只要它保持大写即可。

答案1

有一些可能性,我可能会使用最后一种:

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath,graphicx}


\newcommand\w[1]{\resizebox{5pt}{!}{$#1$}}
\begin{document}

\[
\begin{array}{c}
\phantom{+} \, 39A_{12} \\
\underline{+ \, 488_{12}} \\
\phantom{+} \, 866_{12}
\end{array}
\]

\[
\begin{array}{c}
\phantom{+} \, 3\mathtt{9A}_{12} \\
\underline{+ \, \mathtt{488}_{12}} \\
\phantom{+} \, \mathtt{866}_{12}
\end{array}
\]

\[
\begin{array}{c}
\phantom{+} \, 39\w{A}_{12} \\
\underline{+ \, 488_{12}} \\
\phantom{+} \, 866_{12}
\end{array}
\]

\[
\begin{array}{c@{}c@{}c@{}c@{}c@{}c@{}c}
 &3&9&A&_{12} \\
+&4&8&8&_{12} \\
\hline
 &8&6&6&_{12}
\end{array}
\]
\end{document}

答案2

如果您对打字机输入的字母感到满意,可以使用以下方法:

\documentclass{article}
\usepackage{graphicx,calc}
\newenvironment{dozenal}
 {\begingroup\lccode`~=`A \lowercase{\endgroup\def~}{\doz{A}}%
  \begingroup\lccode`~=`B \lowercase{\endgroup\def~}{\doz{B}}%
  \mathcode`A="8000 \mathcode`B="8000 }
 {}
\newcommand{\doz}[1]{%
  \resizebox{\widthof{0}}{\heightof{0}}{\texttt{#1}}%
}

\begin{document}
\begin{dozenal}
\[
\begin{array}{@{}r@{\>}r@{}}
 & 39A_{12} \\
+& 4B8_{12} \\
\hline
 & 896_{12}
\end{array}
\]
\end{dozenal}

\end{document}

在此处输入图片描述

环境限制了和表示需要区别处理的数字dozenal的范围。AB

请注意如何简化操作的输入。

答案3

我可能会选择“穷人窄”,通过缩小粗体字体来实现。另外,我认为作为数字,字母应该始终排版为直立,而不是斜体。

在此处输入图片描述

\documentclass[margin=5pt]{standalone}

\usepackage{amsmath,graphicx,calc}

\makeatletter
\newcommand*\ww[1]{\mathpalette\ww@{#1}}
\newcommand*\ww@[2]{\@tfor\tmp:=#2\do{\ww@@{\tmp}{#1}}}
\newcommand*\ww@@[2]{\ifcat#10#1\else\resizebox{\widthof{$#20$}}{\height}{$#2\mathbf{#1}$}\fi}
\makeatother

\begin{document}

\(
\begin{array}{r}
\phantom{+} \, \ww{39A}_{12} \\
\underline{+ \, \ww{488}_{12}} \\
\phantom{+} \, \ww{866}_{12}
\end{array}
\)

\end{document}

简单解释一下:

  • \ww仅负责上标、下标等的正确工作。
  • \ww@只是逐个标记地获取参数并将其传递给\ww@@
  • \ww@@检查它得到的东西是否是数字(\ifcat#10),如果是,则排版数字(#1),如果不是,则使用 resizebox 并执行调整大小的魔法。

相关内容