案件对齐

案件对齐

我有以下 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包的环境使用amsmatharray列规范@{}l@{\quad}l@{}。因此\multicolumn将起作用,例如:

\multicolumn{1}{@{}r@{\quad}}{...}

对齐方式还会受到\hfil和 的影响\hfill,因为arraytabular使用 、和来\hfil对齐和证明其列类型lcr

\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

为了更全面地理解这一点,您可以将对齐方式调整casesrl对齐,而不是默认的(ll对齐)。方法如下:

在此处输入图片描述

\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@{},可以根据您的需要进行调整。

相关内容