对齐环境中的水平对齐问题

对齐环境中的水平对齐问题

我的 MWE,

\documentclass[a4paper,11pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{empheq}

\begin{document}

\begin{align}
\left(\frac{4}{2 \cdot 2 \cdot 10 ^{-6}}\right)^2 \; &? \; \left(\frac{1}{2 \cdot 10 ^{-6} \cdot 450 \cdot 10 ^{-12}}\right)\\\nonumber
1 \cdot 10 ^{12} \; &< \; 1{,}\overline{1} \cdot 10 ^{15}
\end{align}

\end{document}

并显示

在此处输入图片描述

<没有对齐。它如何改变我的 MWE 中的宏?

答案1

在这种情况下,水平对齐依赖于对齐的符号具有相同的宽度。

\documentclass{article}
\usepackage{amsmath}
\newcommand{\qrel}{\mathrel{\mathpalette\doqrel\relax}}

\makeatletter
\newcommand{\doqrel}[2]{%
  \ooalign{\hidewidth$\m@th#1?$\hidewidth\cr\hphantom{$\m@th#1=$}\cr}%
}
\makeatother

\begin{document}
\begin{equation}
\begin{aligned}
\left(\frac{4}{2 \cdot 2 \cdot 10 ^{-6}}\right)^{\!2}
  &\qrel \left(\frac{1}{2 \cdot 10 ^{-6} \cdot 450 \cdot 10 ^{-12}}\right)\\
1 \cdot 10 ^{12}
  &< 1{,}\overline{1} \cdot 10 ^{15}
\end{aligned}
\end{equation}
\end{document}

在此处输入图片描述

如果你只需要在文本大小中使用“未知关系”符号(而不是在下标或上标中),则可以将定义简化为

\makeatletter
\newcommand{\qrel}{\mathrel{%
  \ooalign{\hidewidth$\m@th?$\hidewidth\cr\hphantom{$\m@th=$}\cr}%
}
\makeatother

请注意empheq,这里无关紧要:align环境由 定义amsmath(但由 加载empheq)。

还要注意,唯一的间距细化是\!在指数中;\;在方程中添加是很少需要的。

答案2

您需要通过键入?为 赋予与 相同的间距。此外,您可能希望省略两边的多余部分,因为 TeX 会跟踪关系的正确间距。<\mathrel{?}\;

\documentclass{article}
\usepackage{empheq}
\begin{document}
\begin{align}
\left(\frac{4}{2 \cdot 2 \cdot 10 ^{-6}}\right)^2 &\mathrel{?} \left(\frac{1}{2 \cdot 10 ^{-6} \cdot 450 \cdot 10 ^{-12}}\right)\\\nonumber
1 \cdot 10 ^{12} &< 1{,}\overline{1} \cdot 10 ^{15}
\end{align}
\end{document}

在此处输入图片描述


如果你想拥有它确切地在 的中间<,那么你应该使用下面定义的宏\maybe。你可以像这样使用它

\maybe[<relation>]

其中是要模仿其宽度的<relation>关系符号(例如=<、 、……)。默认关系是,为空,或者当然恢复默认,但仍使用左右。在下标和上标中也可以正常工作(尽管这不是必要的)。>=[][?]\mathrel\maybe

\documentclass{article}
\usepackage{empheq}
\makeatletter
\newcommand*\maybe[1][=]{
  \ifx\relax#1\relax
    \mathpalette\@maybe{?}
  \else
    \mathpalette\@maybe{#1}
  \fi
}
\newcommand*\@maybe[2]{
  \mathrel{\ooalign{$#1?$\cr\hidewidth$#1\hphantom{#2}$\hidewidth\cr}}
}
\makeatother
\begin{document}
$(a \maybe b)_{(a \maybe b)_{(a \maybe b)}}$
\begin{align}
\left(\frac{4}{2 \cdot 2 \cdot 10 ^{-6}}\right)^2 &\maybe[<] \left(\frac{1}{2 \cdot 10 ^{-6} \cdot 450 \cdot 10 ^{-12}}\right)\\\nonumber
1 \cdot 10 ^{12} &< 1{,}\overline{1} \cdot 10 ^{15}
\end{align}
\end{document}

红线不是由上面的 MWE 产生的。

在此处输入图片描述

答案3

这是一个 TABstack 方法。

\documentclass{article}
\usepackage{tabstackengine,amsmath,calc}
\stackMath
\begin{document}
\begin{equation}
\setstackgap{S}{6pt}
\alignShortunderstack{
\left(\dfrac{4}{2 \cdot 2 \cdot 10 ^{-6}}\right)^2 
\mathrel{\protect\makebox[\widthof{$<$}]{$?$}}&
\left(\dfrac{1}{2 \cdot 10 ^{-6} \cdot 450 \cdot 10 ^{-12}}\right)
\\
1 \cdot 10 ^{12} <& 1{,}\overline{1} \cdot 10 ^{15}
}
\end{equation}
\end{document}

在此处输入图片描述

答案4

在这种情况下,直接使用array环境,将第一列和第三列中的材料设置进去\displaystyle

?要更改插入在和符号周围的空格量<,请修改参数\arraycolsep;在大多数(所有?)文档类中,它的默认值是5pt;在下面的代码中,我将其设置为2.5pt。我建议使用2.5pt,而不是更小的值,是因为我认为重要的是不要冒险在视觉上抹去?两个大括号组之间的小符号。(为了进行比较,走这条align路线会插入\thickmuskip,大约节省 40%空格。

在此处输入图片描述

\documentclass{article}
\usepackage{array}
\begin{document}
\begin{equation}
\setlength\arraycolsep{2.5pt} % default value: 5pt
\begin{array}{ >{\displaystyle}r c >{\displaystyle}l }
\left(\frac{4}{2 \cdot 2 \cdot 10 ^{-6}}\right)^{\!2}
   &?& 
   \left(\frac{1}{2 \cdot 10 ^{-6} \cdot 450 \cdot 10 ^{-12}}\right)\\[3ex]
1 \cdot 10 ^{12} 
   &<& 
   1{,}\overline{1} \cdot 10 ^{15}\\
\end{array}
\end{equation}
\end{document}

相关内容