如何添加图形的长度?

如何添加图形的长度?

我输入了不同的方程式,如果可以添加可变长度,我会很高兴知道。这是我的最小代码:

\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的完整定义:casesamsmath

\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。它接受一个参数,其中元素最多的行将去哪里获取左括号的正确大小。

此外,该示例进一步垂直对齐变量ab和 ,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}

所以您会看到,两个支架的宽度确实不同。

在此处输入图片描述

相关内容