我想实现类似的东西。但我发现很难将多行对齐的方程式放在一个单元格中。我搜索了很多,即使我曾经\parbox
将对齐的方程式放入单元格中,我仍然无法将此单元格左对齐或将其旁边单元格的内容顶部对齐。以下是我想要的,在 MicroSoft Word 中完成。请注意,虚线网格线不会打印到 pdf 中,仅显示以显示对齐。
以下是我尝试过的一些不完美的代码。我的目标包括:
- 与其他实现(例如)相比,表格更受青睐
align
。framed
因为我有一张关于三角函数的很长的表格,必须优雅地对齐。 - 在一个单元格中插入多行方程式,并希望(不一定)将同一单元格内的方程式在符号处对齐
=
。 - 所有单元格均与左上角对齐,没有任何左边距。
- 最好在顶部和底部留一些填充。(我现在可以做到
\renewcommand{\arraystretch}{2}
,但我想知道是否有更好的方法。)
编译后的 PDF 粘贴在下面。我目前的解决方案不知何故导致第二行出现奇怪的右移。我不知道哪里出了问题。此外,无论如何我都不认为我的解决方案是正确的。
\documentclass{article}
\usepackage{enumitem,amssymb}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{array}
\usepackage{booktabs}
\begin{document}
\everymath{\displaystyle}
\renewcommand{\arraystretch}{2}
\begin{tabular}[t]{|lll|}
\hline
\(\sin (x + \pi) = -\sin x\) &
\(\sin (x + \pi) = -\sin x\) &
\(\tan (x + \pi) = \tan x\) \\ \hline
\parbox{100pt}{
\begin{align*}
& \sin (\alpha+\beta) \\
& = \sin\alpha\cos\beta + \cos\alpha\sin\beta
\end{align*}
} &
\parbox{100pt}{
\begin{flalign*}
& \cos (\alpha+\beta) \\
& = \sin\alpha\cos\beta + \cos\alpha\sin\beta
\end{flalign*}
} &
\parbox{100pt}{
\begin{flalign*}
& \tan (\alpha+\beta) \\
& = \frac{\tan\alpha + \tan\beta}{1 - \tan\alpha\tan\beta}
\end{flalign*}
} \\
\(\sin 2x = 2 \cos x \sin x\) &
\parbox{100pt}{
\begin{flalign*}
\cos 2x & = \cos^2 x - \sin^2 x \\
& = 2\cos^2 x - 1 \\
& = 1 - 2\sin^2 x
\end{flalign*}
} &
\(\tan 2x = \frac{2\tan x}{1 - \tan^2 x}\) \\
\(\sin \frac{x}{2} = \sqrt{\frac{1 - \cos x}{2}}\) &
\(\cos \frac{x}{2} = \sqrt{\frac{1 + \cos x}{2}}\) &
\(\tan \frac{x}{2} = \sqrt{\frac{1 - \cos x}{1 + \cos x}}\) \\
\hline
\end{tabular}
\end{document}
答案1
首先要说的是:声称某种解决方案是最好的不知道排版目标和约束是什么。希望以下解决方案建议能够有用。当然,我并没有声称它们是“最好的”。
以下屏幕截图和代码显示了两种可能的解决方案:第一个表使用固定列宽(因为您发布的屏幕截图中就是这样做的),而第二个表使用自然列宽。在我看来,使用自然列宽看起来更好——至少对于手头的表格来说是这样。
在这两种解决方案中,单元格内容都是左对齐的,同样是因为您的屏幕截图中显示的是左对齐的;如果您希望选择其他对齐方式,请告知。请注意aligned
在“中间”单元格中使用环境来排版三行表达式,使三个=
符号垂直对齐。最后,在这两种解决方案中,我故意省略了所有垂直规则,并使用包的宏booktabs
来创建两个可见的水平规则;这样做是为了让表格看起来更开放、更吸引人。
\documentclass{article}
\usepackage{fourier} % optional (to match font used in OP's screenshot)
\usepackage{array} % for 'w' col. type and '\newcolumntype' macro
\newcolumntype{W}[1]{>{$\displaystyle}w{l}{#1}<{$}}
\newcolumntype{L}{>{\displaystyle}l}
\usepackage{amsmath} % for 'aligned' env.
\usepackage{booktabs} % for well-spaced horizontal rules
\usepackage{geometry} % (set page parameters suitably)
%% Material that's common to both tables created below:
\newcommand\blurb{%
\toprule
\sin(x+\pi)=-\sin x & \cos(x+\pi)=-\cos x & \tan(x+\pi)=\tan x \\
\addlinespace[2ex]
\sin2x=2\sin x\cos x &
\begin{aligned}[t] % <-- note the 't' ("top") placement specifier
\cos2x &=\cos^2x-\sin^2x\\
&=2\cos^2x-1\\
&=1-2\sin^2x
\end{aligned} &
\tan2x = \frac{2\tan x}{1-\tan^2x} \\
\addlinespace[2ex]
\sin\frac{x}{2}=\sqrt{\frac{1-\cos x}{2}} &
\cos\frac{x}{2}=\sqrt{\frac{1+\cos x}{2}} &
\tan\frac{x}{2}=\sqrt{\frac{1-\cos x}{1+\cos x}} \\
\addlinespace
\bottomrule}
\begin{document}
\[
\begin{array}{@{} *{3}{W{4cm}} @{}}
\blurb
\end{array}
\]
\[
\setlength\arraycolsep{15pt} % default is '5pt'
\begin{array}{@{} *{3}{L} @{}}
\blurb
\end{array}
\]
\end{document}