我有以下 LaTeX 文本:
$$
sgn(x)=
\begin{cases}
-1 & \mbox{za podmínky } x>0\\
0 & \mbox{za podmínky } x=0\\
1 & \mbox{za podmínky } x>0
\end{cases}
$$
但我想将“0”和“1”向右移动一点。我需要将这些数字移动到“1”的正下方,而不是“-”的下方。
答案1
最简单的方法可能是使用 \phantom{-}1
答案2
参考我的2013-04-05 的聊天消息,这里是接受一个可选参数的环境定义 cases
,即左列的列规范。因此,写入\begin{cases}[r]
左列时设置为右对齐。
这样,您实际上甚至可以使用siunitx
“带有列的表格排版” S
。
代码
\documentclass{article}
\usepackage{amsmath,siunitx}
\DeclareMathOperator{\sgn}{sgn}
\makeatletter
\renewenvironment{cases}[1][l]{\matrix@check\cases\env@cases{#1}}{\endarray\right.}
\def\env@cases#1{%
\let\@ifnextchar\new@ifnextchar
\left\lbrace\def\arraystretch{1.2}%
\array{@{}#1@{\quad}l@{}}}
\makeatother
\begin{document}
\[
\sgn(x)=
\begin{cases}[c]
-1 & \text{za podmínky } x>0\\
0 & \text{za podmínky } x=0\\
1 & \text{za podmínky } x>0
\end{cases}
\]
\[
\sgn(x)=
\begin{cases}[r]
-1 & \text{za podmínky } x>0\\
0 & \text{za podmínky } x=0\\
1 & \text{za podmínky } x>0
\end{cases}
\]
\[
\sgn(x)=
\begin{cases}[{S[table-format=-1.0]}]
-1 & \text{za podmínky } x>0\\
0 & \text{za podmínky } x=0\\
1 & \text{za podmínky } x>0
\end{cases}
\]
\end{document}
输出
答案3
cases
包的环境使用amsmath
与array
列规范@{}l@{\quad}l@{}
。因此\multicolumn
将起作用,例如:
\multicolumn{1}{@{}r@{\quad}}{...}
对齐方式还会受到\hfil
和 的影响\hfill
,因为array
或tabular
使用 、和来\hfil
对齐和证明其列类型l
。c
r
\hfill 0 % puts 0 to the right
下面的例子展示了不同的方法:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
\begin{cases}
\mbox{left/default} & \mbox{left/default} \\
\multicolumn{1}{@{}l@{\quad}}{\mbox{left}} &
\multicolumn{1}{@{}l@{}} {\mbox{left}} \\
%
\hfil \mbox{center} & \hfil \mbox{center} \\
\multicolumn{1}{@{}c@{\quad}}{\mbox{center}} &
\multicolumn{1}{@{}c@{}} {\mbox{center}} \\
%
\hfill \mbox{right} & \hfill \mbox{right} \\
\multicolumn{1}{@{}r@{\quad}}{\mbox{right}} &
\multicolumn{1}{@{}r@{}} {\mbox{right}} \\
%
\multicolumn{1}{@{}p{10em}@{\quad}}{Column type p \dotfill\newline with two lines \hrulefill} &
\multicolumn{1}{@{}p{10em}@{}} {Column type p \dotfill\newline with two lines \hrulefill} \\
\end{cases}
\]
\end{document}
应用于OP的情况:
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\sgn}{sgn}
\begin{document}
\[
\sgn(x)=
\begin{cases}
-1 & \mbox{za podmínky } x>0\\
\hfill 0 & \mbox{za podmínky } x=0\\
\hfill 1 & \mbox{za podmínky } x>0
\end{cases}
\]
\end{document}
答案4
为了更全面地理解这一点,您可以将对齐方式调整cases
为r
右l
对齐,而不是默认的(l
左l
对齐)。方法如下:
\documentclass{article}
\usepackage[utf8]{inputenc}% http://ctan.org/pkg/inputenc
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\makeatletter
\def\env@cases{%
\let\@ifnextchar\new@ifnextchar
\left\lbrace
\def\arraystretch{1.2}%
\array{@{}r@{\quad}l@{}}% Changed from \array{@{}l@{\quad}l@{}}
}
\makeatother
\DeclareMathOperator{\Sign}{sgn}
\begin{document}
\[
\Sign(x) = \begin{cases}
-1 & \text{za podmínky } x > 0 \\
0 & \text{za podmínky } x = 0 \\
1 & \text{za podmínky } x > 0
\end{cases}
\]
\end{document}
您会注意到对齐来自array
列规范@{}l@{\quad}l@{}
,可以根据您的需要进行调整。