我希望在以下 LaTeX 代码中将 1 居中:
\begin{align*}
v'(k,\CS)=
\begin{cases}
\displaystyle\frac{G_{max}(k){-}q_k'(CS)}{G_{max}(k){-}\Gmin(k)} & \text{if }G_{max}(k) {\neq} G_{min}(k) \\
1 & \text{if }G_{max}(k) {=}G_{min}(k)
\end{cases}
\end{align*}
LaTeX 的图像如下所示:
答案1
cases
包的环境amsmath
在内部使用array
具有 类型的列的环境l
。列规范为@{}l@{\quad}l@{}
。因此\multicolumn
将起作用:
\multicolumn{1}{@{}c@{\quad}}{1}
array
还有一种更简单的方法。 /的对齐代码只是在类型为 的列的右侧tabular
添加一个。这会将单元格内容移到左侧。通过在左侧添加,内容将居中。添加将覆盖右侧,内容将移到右侧。因此,居中的代码是:\hfil
l
\hfil
\hfill
\hfil
\hfil 1
完整示例:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
v'(k,CS)=
\begin{cases}
\dfrac{G_{\text{max}}(k) - q_k'(CS)}
{G_{\text{max}}(k) - G_{\text{min}}(k)}
& \text{if }G_{\text{max}}(k) \neq G_{\text{min}}(k) \\
% \multicolumn{1}{@{}c@{\quad}}{1} % variant with \multicolumn
\hfil 1 % variant with \hfil
& \text{if }G_{\text{max}}(k) = G_{\text{min}}(k)
\end{cases}
\end{align*}
\end{document}
评论:
- 纠正了不完整 MWE 的各种代码错误。
- 文本下标“min”和“max”被放入
\text{...}
。 - 删除二元运算符和关系符号周围的括号,以纠正符号周围的间距。(添加括号会使这些符号变成
\mathord
原子,而无需额外的间距。) - 包提供了的
amsmath
简写。\dfrac
\displaystyle\frac
环境支撑cases
环境cases
使用\left\lbrace
...\right.
来设置左花括号。我认为,在代码中\lbrace
优先使用的原因是为了优化。定义为 ( ):\{
\{
latex.ltx
\DeclareRobustCommand{\{}{\ifmmode\lbrace\else\textbraceleft\fi}
- 不需要稳健性,因为宏
\end
由于而不稳健\@checkend
。 - 我们已经处于数学模式,因此可以保存对该模式的测试。
右侧需要一个空分隔符,因为\left
和\right
必须以正确嵌套的对使用。但\right.
将添加空格\nulldelimiterspace
。如果环境始终是行中的最新元素,则可以通过重新定义末尾部分来提供此空间cases
:
\def\endcases{\endarray\right.\kern-\nulldelimiterspace}
答案2
您可以使用和来分隔array
环境,从而伪造环境,以便您可以调整水平对齐方式,使字母居中和左对齐。cases
\left\{
\right.
cl
以下是 MWE:
\documentclass[a4paper]{article}
%
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{amsmath}
%
\begin{document}
%
\[
\addtolength{\arraycolsep}{-2.5pt} % local modifications
\renewcommand{\arraystretch}{1.1}%
v'(k,CS)=
\left\{
\begin{array}{cl} % first column is centered
\dfrac{G_{max}(k)-q_k'(CS)}{G_{max}(k)-G_{min}(k)} & \text{if }G_{max}(k)\neq G_{min}(k) \\
1 & \text{if }G_{max}(k)=G_{min}(k)
\end{array}
\right.
\]
%
\end{document}
输出如下:
顺便说一句,您可以通过简单地在\arraystretch
局部添加长度来扩大行之间的距离,或者如果您想通常应用此规则,您可以在文档的序言中定义一个新环境:
\newenvironment{MyCases}{%
\addtolength{\arraycolsep}{-2.5pt}%
\renewcommand{\arraystretch}{1.1}%
\left\{\begin{array}%
}{%
\end{array}\right.%
}