我的 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}