我输入了不同的方程式,如果可以添加可变长度,我会很高兴知道。这是我的最小代码:
\documentclass{article}
\usepackage{amsfonts, amsmath}
\begin{document}
\begin{itemize}
\item $\forall a,b,c, \in \mathbb{R} : \qquad a \le b \Rightarrow a+c \le b + c$
\item $\forall a,b,c, \in \mathbb{R} : \qquad a \le b \Rightarrow
\begin{cases}
a \cdot c \le b \cdot c \ \text{falls} \ c \ge 0 \\
a \cdot c \ge b \cdot c \ \text{falls} \ c \le 0
\end{cases}
$
\end{itemize}
\end{document}
结果是
现在我想告诉 LaTeX:
“LaTeX,因为我希望此处列表中的行能够水平对齐,所以请取第二个项目中括号的高度(此处:左侧端点和右侧端点之间的水平空间),并在第一个项目之前添加相同长度的空间a+c
”。
因此,我只希望空格与括号宽度一致。在 LaTeX 中可以实现这样的功能吗?
答案1
\hphantom
是正确的。但是,空环境的完整大小cases
将不起作用,因为它还会在两列之间添加空格,这两列之间用 分隔\quad
(此空格应位于“falls”之前)。最后,TeX 会添加\nulldelimiterspace
匹配的空格\right.
以关闭。包中\left\lbrace
的完整定义:cases
amsmath
\renewenvironment{cases}{%
\matrix@check\cases\env@cases
}{%
\endarray\right.%
}
\def\env@cases{%
\let\@ifnextchar\new@ifnextchar
\left\lbrace
\def\arraystretch{1.2}%
\array{@{}l@{\quad}l@{}}%
}
下面的例子定义了\HPhantomLeftCases
模拟环境左括号的空间cases
。它接受一个参数,其中元素最多的行将去哪里获取左括号的正确大小。
此外,该示例进一步垂直对齐变量a
、b
和 ,c
通过增加 的空间来\cdot
占用加号的水平空间。
顺便说一句,该示例使用\colon
,其行为类似于标点符号,而不是关系运算符:
。
\documentclass{article}
\usepackage{amsfonts, amsmath}
\newcommand*{\HPhantomLeftCases}[1]{%
\hphantom{%
\renewcommand*{\arraystretch}{1.2}%
\left\lbrace
\vphantom{\begin{array}{@{}l@{}}#1\end{array}}%
\right.%
\kern-\nulldelimiterspace
}%
}
\makeatletter
\newcommand*{\WideCDot}{%
\mathbin{\mathpalette\@WideCDot{}}%
}
\newcommand*{\@WideCDot}[2]{%
% #1: math style
% #2: unused
\sbox0{$#1+\m@th$}%
\hbox to \wd0{\hfil$#1\cdot\m@th$\hfil}%
}
\makeatother
\begin{document}
\begin{itemize}
\item $\forall a,b,c, \in \mathbb{R}\colon \qquad a \le b \Rightarrow
\HPhantomLeftCases{a\\b}
a+c \le b + c$
\item $\forall a,b,c, \in \mathbb{R}\colon \qquad a \le b \Rightarrow
\begin{cases}
a \WideCDot c \le b \WideCDot c & \text{falls} \ c \ge 0 \\
a \WideCDot c \ge b \WideCDot c & \text{falls} \ c \le 0
\end{cases}
$
\end{itemize}
\end{document}
当然,垂直对齐有些夸张(恕我直言,我认为没有必要为左括号添加幻像空间)。但是,该示例显示了如何做到这一点,并给出了选择。
答案2
看起来\hphantom{\Bigg\{}
可能会奏效。
\documentclass{article}
\usepackage{amsfonts, amsmath}
\begin{document}
\begin{itemize}
\item $\forall a,b,c, \in \mathbb{R} : \qquad a \le b \Rightarrow \hphantom{\Bigg\{} a+c \le b + c$
\item $\forall a,b,c, \in \mathbb{R} : \qquad a \le b \Rightarrow
\begin{cases}
a \cdot c \le b \cdot c \ \text{falls} \ c \ge 0 \\
a \cdot c \ge b \cdot c \ \text{falls} \ c \le 0
\end{cases}
$
\end{itemize}
\end{document}
答案3
您来决定是否真的需要这个。
我定义了一个cases+
行为类似的环境cases
,但将括号的宽度存储在aux
文件中以便在下次 LaTeX 运行中处理。
每个cases+
环境都必须有一个在相应命令中使用的标签\phantombrace
。
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{eqparbox}
\usepackage{environ}
\makeatletter
\NewEnviron{cases+}[1]{%
\sbox\z@{% measure the cases without the brace
\def\lbrace{.\kern-\nulldelimiterspace}%
$\begin{cases}\BODY\end{cases}$%
}%
\sbox\tw@{$\begin{cases}\BODY\end{cases}$}%
\protected@write\@auxout{}{\string\caseswidthstore{#1}{\the\dimexpr\wd\tw@-\wd\z@}}%
\begin{cases}\BODY\end{cases}
}
\newcommand{\caseswidthstore}[2]{%
\expandafter\xdef\csname cws@@#1\endcsname{#2}%
}
\newcommand{\phantombrace}[1]{%
\kern\@ifundefined{cws@@#1}{0pt}{\@nameuse{cws@@#1}}\relax
}
\makeatother
\begin{document}
Two line \texttt{cases}
\begin{itemize}
\item $\forall a,b,c, \in \mathbb{R} : \qquad a \le b \Rightarrow
\phantombrace{foo2} a+c \le b + c$
\item $\forall a,b,c, \in \mathbb{R} : \qquad a \le b \Rightarrow
\begin{cases+}{foo2}
a \cdot c \le b \cdot c \ \text{falls} \ c \ge 0 \\
a \cdot c \ge b \cdot c \ \text{falls} \ c \le 0
\end{cases+}
$
\end{itemize}
Five line \texttt{cases}
\begin{itemize}
\item $\forall a,b,c, \in \mathbb{R} : \qquad a \le b \Rightarrow
\phantombrace{foo5} a+c \le b + c$
\item $\forall a,b,c, \in \mathbb{R} : \qquad a \le b \Rightarrow
\begin{cases+}{foo5}
a \cdot c \le b \cdot c \ \text{falls} \ c \ge 0 \\
a \cdot c \le b \cdot c \ \text{falls} \ c \ge 0 \\
a \cdot c \le b \cdot c \ \text{falls} \ c \ge 0 \\
a \cdot c \le b \cdot c \ \text{falls} \ c \ge 0 \\
a \cdot c \ge b \cdot c \ \text{falls} \ c \le 0
\end{cases+}
$
\end{itemize}
\end{document}
文件中的代码.aux
如下
\caseswidthstore{foo2}{8.05559pt}
\caseswidthstore{foo5}{8.8889pt}
所以您会看到,两个支架的宽度确实不同。