我如何=
对a=1
、abbbbbb=5
和字符进行对齐csf=6
?
它看起来应该像这样,但在表格内部:
a=1
abbbbbb=5234
csf=6
我的代码是:
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage[latin1]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{shapes.multipart}
\usetikzlibrary{positioning}
\usepackage{flowchart}
\usetikzlibrary{arrows}
\usepackage{fix-cm}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\setlength{\heavyrulewidth}{1.5pt}
\setlength{\abovetopsep}{4pt}
\usepackage{amsmath}
\begin{document}
\begin{table}[htbp]
\centering
\begin{tabular}{|c|c|}
\hline
\multicolumn{1}{|l|}{a } & looooooooooong \\
\hline
\multirow{3}[6]{*}{c} & a=1 \\
\cline{2-2} & abbbbbb=5234 \\
\cline{2-2} & csf = 6 \\
\hline
\end{tabular}%
\end{table}%
\end{document}
我尝试过的(但没有效果):
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage[latin1]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{shapes.multipart}
\usetikzlibrary{positioning}
\usepackage{flowchart}
\usetikzlibrary{arrows}
\usepackage{fix-cm}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}
\setlength{\heavyrulewidth}{1.5pt}
\setlength{\abovetopsep}{4pt}
\usepackage{amsmath}
\begin{document}
\begin{table}[htbp]
\centering
\begin{tabular}{|c|c|}
\hline
\multicolumn{1}{|l|}{a } & looooooooooong \\
\hline
\multirow{3}[6]{*}{c} &\begin{align} a&=1 \\
\cline{2-2} & abbbbbb&=5234 \\
\cline{2-2} & csf &= 6 \end{align} \\
\hline
\end{tabular}%
\end{table}%
\end{document}
我希望有人能帮助我。我在论坛上搜索了一下,但对于像这样一个相当简单的问题,所有的解决方案似乎都太复杂了。而且它是 Tex,所以应该有一个很好的分析解决方案,我希望因为我经常在我的表格中需要这个功能。
答案1
以下解决方案是对@JohnKormylo 建议的改进:将表格设置从 2 列更改为 3 列,并让 LaTeX=
在第 2 列和第 3 列之间自动插入(在数学模式下输入 mathrel)。这样,=
符号周围的间距将自动适合数学模式材料。
\documentclass{article}
\usepackage{array,amsmath,multirow}
\newcommand\mc[1]{\multicolumn{2}{c|}{#1}} % handy shortcut macro
\begin{document}
\begin{table}[htbp]
\centering
\begin{tabular}{| c | r @{${}={}$} l |}
\hline
\multicolumn{1}{|l|}{a} & \mc{looooooooooong} \\ \hline
\multirow{3}{*}{cc} & a & 1 \\ \cline{2-3}
& abbbbbb & 5234 \\ \cline{2-3}
& csf & 6 \\ \hline
\end{tabular}
\end{table}
\end{document}
答案2
那么只有两行和一个环境的解决方案怎么样aligned
?对于对齐环境内的水平规则,我使用 的功能\cmidrule
通过参数在两侧进行扩展。这是通过一个相当简单的代码获得的。通过反复试验发现(lr)
0.95em 的延长:\cmidrule
\documentclass{article}
\usepackage{array,amsmath}
\usepackage{booktabs}
\begin{document}
\begin{table}[htbp]
\centering\setlength{\aboverulesep}{0pt}\setlength{\belowrulesep}{0pt}
\begin{tabular}{| c |c|}
\hline
a & looooooooooong\\ \hline
c & $\begin{aligned} a & = 1 \\
\cmidrule(l{-0.95em} r{-0.95em}){1-3}
abbbbbb & = 5234 \\
\cmidrule(l{-0.95em} r{-0.95em}){1-3}
csf & = 6 \end{aligned}$ \\ \hline
\end{tabular}
\end{table}
\end{document}
答案3
这里有两种使用内容重叠的方法(因为它看起来应该是数学,所以我使用\mathllap
了\mathrlap
mathtools
),或者将它们装入类似大小的盒子中(使用eqparbox
):
\documentclass{article}
\usepackage{mathtools,eqparbox}
\begin{document}
\begin{tabular}{|c|c|}
\hline
a & looooooooooong \\
\hline
& $a = 1$ \\
\cline{2-2}
& $abbbbbb = 5234$ \\
\cline{2-2}
c & $csf = 6$ \\
\hline
\end{tabular} \qquad
\begin{tabular}{|c|c|}
\hline
a & looooooooooong \\
\hline
& $\phantom{abbbbbb}\mathllap{a} = \mathrlap{1}\phantom{5234}$ \\
\cline{2-2}
& $abbbbbb = 5234$ \\
\cline{2-2}
c & $\phantom{abbbbbb}\mathllap{csf} = \mathrlap{6}\phantom{5234}$ \\
\hline
\end{tabular} \qquad
\begin{tabular}{|c|c|}
\hline
a & looooooooooong \\
\hline
& $\eqmakebox[lhs][r]{$a$} = \eqmakebox[rhs][l]{$1$}$ \\
\cline{2-2}
& $\eqmakebox[lhs]{$abbbbbb$} = \eqmakebox[rhs]{$5234$}$ \\
\cline{2-2}
c & $\eqmakebox[lhs][r]{$csf$} = \eqmakebox[rhs][l]{$6$}$ \\
\hline
\end{tabular}
\end{document}