表格中多行对齐

表格中多行对齐

我如何=a=1abbbbbb=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\mathrlapmathtools),或者将它们装入类似大小的盒子中(使用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}

相关内容