一定有更好/更简单的方法可以做到这一点!!顺便问一下,如何格式化代码(发布问题时),使其看起来美观、紧凑且色彩丰富?
\documentclass{article}
\usepackage[2.5cm]{geometry}% http://ctan.org/pkg/geometry
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\begin{tabular}{ l || l c c c c c c c r |}
$x$ \vspace{1pt}
& $ -\, \infty $
& \hspace*{-0.5cm}
& \hspace*{-0.5cm} $ -\, 1 $
& \hspace*{-0.5cm}
& \hspace*{-0.7cm} $0$
& \hspace*{-1.0cm}
& \hspace*{-0.5cm} $+\, 1$
& \hspace*{-0.5cm}
& \hspace*{-0.5cm} $ +\, \infty $ \\
\hline
\parbox[t][1.0cm]{2.0cm}{\vspace{1pt} $y' \,=\, \dfrac{\,x^{2} \,-\, 1\,}{x^{2}}$ \vspace{1pt}}
& $\begin{array}{c} \\ + \quad +\\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ + \quad + \quad + \\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ 0 \\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ - \quad - \quad - \\ \end{array}$
& \hspace*{-0.7cm} $\begin{array}{c} \\ \vert \\ \end{array}$
& \hspace*{-1.0cm} $\begin{array}{c} \\ - \quad - \quad - \\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ 0 \\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ + \quad + \quad + \\ \end{array}$
& \hspace*{-1.0cm} $\begin{array}{c} \\ + \\ \end{array}$ \\
\hline
\parbox[t][1.0cm]{2.0cm}{\vspace{1pt} $y'' \,=\, \dfrac{2}{\,x^{3}\,}$ \vspace{1pt}}
& $\begin{array}{c} \\ - \quad - \\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ - \quad - \quad - \\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ - \\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ - \quad - \quad - \\ \end{array}$
& \hspace*{-0.7cm} $\begin{array}{c} \\ \vert \\ \end{array}$
& \hspace*{-1.0cm} $\begin{array}{c} \\ + \quad + \quad + \\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ + \\ \end{array}$
& \hspace*{-0.5cm} $\begin{array}{c} \\ + \quad + \quad + \\ \end{array}$
& \hspace*{-1.0cm} $\begin{array}{c} \\ + \\ \end{array}$ \\
\hline
\parbox[t][1.0cm]{2.0cm}{ $y \,=\, x \,+\, \dfrac{1}{\,x\,}$ }
& $-\, \infty \;\; \nearrow$
& \hspace*{-0.5cm} $ \begin{array}{c} \\ \nearrow \quad \nearrow \quad \nearrow \\ \bigcap \end{array} $
& \hspace*{-0.5cm} $ -\, 2 $
& \hspace*{-0.5cm} $ \begin{array}{c} \\ \searrow \quad \searrow \quad \searrow \\ \bigcap \end{array} $
& \hspace*{-0.7cm} $ \;\genfrac{}{}{0.0pt}{}{}{}_{-\,\infty} {\Big |}^{+\, \infty}\; $
& \hspace*{-0.7cm} $ \begin{array}{c} \\ \searrow \quad \searrow \quad \searrow \\ \bigcup \end{array} $
& \hspace*{-0.5cm} $ +\, 2 $
& \hspace*{-0.5cm} $ \begin{array}{c} \\ \nearrow \quad \nearrow \quad \nearrow \\ \bigcup \end{array} \vspace{2pt} $
& \hspace*{-1.0cm} $+\, \infty$ \\
\hline
\end{tabular}\\
\end{document}
答案1
在我最初的评论中,我问过你的代码是否来自WYSIWYG
,因为它看起来好像有很多不必要的代码 - 通常当你(尝试)从另一个程序导出到时会得到这种代码TeX
。
无论如何,这是我的表格版本:
在下面的代码中我有
- 删除了所有
\begin{array}{c}...\end{array}
- 删除了所有
\hspace*{...}
- 加载了
booktabs
为表格提供许多有用功能的包,包括\toprule
、\midrule
和\bottomrule
- 加载
tabularx
包以允许表拉伸到(在这种情况下)\textwidth
- 通过改变使行间距更大
\arraystretch
您还会注意到,我对+
、-
、\searrow
和的使用非常谨慎\nearrow
。随着示例变得越来越复杂,您需要考虑更多间隔,无论如何您都必须删除其中的许多。
如果你想查看表格的宽度,你可以在包showframe=true
的加载中进行更改geometry
。如果你想让你的表格比标准宽度更宽textwidth
,那么你可以将它放在包adjustwidth
的环境中changepage
。
\documentclass{article}
\usepackage[showframe=false]{geometry}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{tabularx}
% use this package if you want to temporarily
% widen the page
%\usepackage{changepage}
% use this columntype if you want to RIGHT justify your columns
\newcolumntype{Y}{>{\raggedleft\arraybackslash}X}
\begin{document}
\renewcommand{\arraystretch}{3}
\noindent\begin{tabularx}{\textwidth}{p{2cm}XXXXXXXXX}
\toprule
$x$ & $-\infty$ & & $-1$ & & $0$ & & $+1$ & & $\infty$ \\ \midrule
$y'=\dfrac{x^2-1}{x^2}$ & $+$ & $+$ & $0$ & $-$ & $|$ & $-$ & $0$ & $+$ & $+$ \\
$y''=\dfrac{2}{x^3}$ & $-$ & $-$ & $-$ & $-$ & $|$ & $+$ & $+$ & $+$ & $+$ \\
$y=x+\dfrac{1}{x}$ & $-\infty$ & $\nearrow\bigcap$& $-2$ & $\searrow\bigcap$ & ${}_{-\infty}|^{+\infty}$&$\searrow\bigcup$ & $+2$ & $\nearrow\bigcup$ & $\infty$\\
\bottomrule
\end{tabularx}
\end{document}
答案2
您可能正在寻找该tablor
软件包。其文档为法语,但包含丰富的示例(示例代码可在 TeX Live 上找到,作者texdoc tablor.html
:)。
还有一个基于 TikZ 的包,tkz-tab
也包含许多示例(和法语文档)。
答案3
这里尝试通过降低到更原始的级别来进一步简化 cmhughes 的答案(没有包,每一列都在对齐前言中定义了数学模式,以及几个宏来缩短输入):
\documentclass{minimal}
\def\myalign#1{% should be used inside displayed equation
\def\trule{\noalign{\medskip\hrule\medskip}}
\def\nebc{\nearrow\bigcup}
\def\sebc{\searrow\bigcup}
\def\pminf{{}_{-\infty}|^{+\infty}}
\let\Inf\infty
% ^make a couple of macros to shorten the input (scoped inside this macro)
\vbox{% enclose inside a vbox so it will not be broken across pages
\openup2\jot% increase interlineskips by a multiple of symbolic unit of
% measure (jot default is 3pt) for consistency
\mathsurround0pt
\tabskip1em plus\displaywidth % tabskip glue gets inserted between columns
% with "optimal" value of 1em, but with stretchability to displaywidth.
\halign to\displaywidth{% try to stretch the table to accomodate the whole
% equation display width
&$\displaystyle\hfil##\hfil$\crcr
% ^alignment preamble; the definition gets repeated for every column by the
% first ampersand. The column content will be centered (\hfil##\hfil)
#1% user input
\crcr}}}
\begin{document}
\[
\myalign{
x & -\Inf & & -1 & & 0 & & +1 & & \Inf \cr
\trule
y'={x^2-1\over x^2} & + & + & 0 & - & | & - & 0 & + & + \cr
y''={2\over x^3} & - & - & - & - & | & + & + & + & + \cr
y=x+{1\over x} & -\Inf & \nebc & -2 & \sebc & \pminf & \sebc & +2 & \nebc & \Inf \cr
}
\]
\end{document}
注意事项:
- 我看到有人说不鼓励原始使用(但我不知道为什么)
- 在开始和结束时有多余的制表符粘连(不过,当列内容居中时,我认为这并不重要)。
编辑:根据评论,为了使它看起来更相似,需要额外的规则,左对齐列并删除多余的制表符粘连。但只是为了制造一些差异,我选择不让它看起来完全相同:
\documentclass{article}
\def\myalign#1{%
\def\trule{\noalign{\smallskip\hrule\medskip}}
\def\nebc{\nearrow\bigcup}
\def\sebc{\searrow\bigcup}
\def\pminf{{}_{-\infty}|^{+\infty}}
\let\Inf\infty
\def\amp{&}% props to Bruno; I just love this trick
\vbox{\mathsurround0pt\openup1\jot
\halign{%
&$\displaystyle##\hfil\tabskip0pt$&\amp##\tabskip1em\crcr
\noalign{\hrule height1pt\smallskip}#1\noalign{\smallskip\hrule height1pt}\crcr}}}
\begin{document}
\[
\myalign{
x & -\Inf & & -1 & & 0 & & +1 & & \Inf \cr
\trule
y'={x^2-1\over x^2} & + & + & 0 & - & | & - & 0 & + & + \cr
y''={2\over x^3} & - & - & - & - & | & + & + & + & + \cr
y=x+{1\over x} & -\Inf & \nebc & -2 & \sebc & \pminf & \sebc & +2 & \nebc & \Inf \cr
}
\]
\end{document}
看起来像:
它删除了第一个版本的第二个警告,但引入了另一个警告:因为它本质上使列数加倍(\amp
在序言中),所以它会影响用于跨越多列的命令。
现在,我想提醒一下,为了保持文档范围的一致性,您需要保持所有这些跳过和规则等内容不变。诸如此类的软件包booktabs
可帮助您轻松实现这一点。