简洁的分段定义函数

简洁的分段定义函数

我想编写一个干净的分段定义函数。

这里有一个类似的帖子:如何编写带有外面括号的函数(分段)?,但我还有一些后续问题。

我现在有两个选择:

\[ f(n) = \begin{cases} 
      \frac{n}{2} & \textrm{ if $n$ is even} \\
      -\frac{n-1}{2} & \textrm{ if $n$ is odd} \\
   \end{cases} \]

(使用该amsmath包),以及

For every $n \in \mathbb{N}$, let
\[ f(n) = \left\{ 
\begin{array}{l l}
\frac{n}{2} & \quad \mbox{if $n$ is even}\\
-\frac{n-1}{2} & \quad \mbox{if $n$ is odd}\\
\end{array} \right. \]

对于如此简单的事情来说,两者似乎都非常复杂...此外,有没有办法将“居中” $\frac{n}{2}$,使其看起来对齐$-\frac{n-1}{2}$(而不是偏左)?

答案1

对齐分数的一个更简单的解决方案是让 TeX 决定添加什么空格:

\[
 f(n) =
  \begin{cases} 
      \hfill \frac{n}{2}    \hfill & \text{ if $n$ is even} \\
      \hfill -\frac{n-1}{2} \hfill & \text{ if $n$ is odd} \\
  \end{cases}
\]

正如评论中所解释的,\hfill占用了尽可能多的空间,因此在两边都放置一个 会产生使文本居中的效果。如果在两行中都这样做,则不必弄清楚哪一行更长。与使用 相比,这更能抵抗代码的更改\phantom。我还继续将其更改\textrm\text,因为这\text是预期的。

答案2

这只是一条信息丰富的长评论。

amsmath将环境定义cases

\left\lbrace
\def\arraystretch{1.2}%
\array{@{}l@{\quad}l@{}}%
% cases content
\endarray\right.%

因此,为了实现相同的间距,并cases在其中包含的元素的水平对齐方面具有一定的灵活性,您可以使用

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{amsfonts}% http://ctan.org/pkg/amsfonts
\begin{document}
For every $n \in \mathbb{N}$, let
\[
  f(n) = \left\{\def\arraystretch{1.2}%
  \begin{array}{@{}c@{\quad}l@{}}
    \frac{n}{2} & \text{if $n$ is even}\\
    -\frac{n-1}{2} & \text{if $n$ is odd}\\
  \end{array}\right.
\]
\end{document}

答案3

如果你的问题是“我该如何对齐我的分数”?那么轰隆隆:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
A function is defined:
\[
f(X) = 
\begin{cases}
  \phantom{-}x & \text{if}\ x>0 \\
  -x           & \text{if}\ x<0
\end{cases}
\]
\end{document}

\phantom添加与其参数大小相同的空格。

此外,通过适当的换行和间距(LaTeX 会忽略这些),您可以使其相当易读(这似乎回答了您的另一个问题)。hasemacsalign-currentLaTeX 表格对齐,&这非常酷。

相关内容