如何在表格中产生不规则的单元格合并?

如何在表格中产生不规则的单元格合并?

如何在表格中不规则地合并单元格?我需要做这些作业,不想打印出来,手写,然后扫描回来上传。

我可以隐藏答案列上方单元格的边框,但文本不会流入该区域。我想要一个真正的非矩形单元格。

不规则表格单元格

答案1

这是一个肮脏的伎俩,重叠“答案”并插入一个空白 wrapfig以在“工作”文本中腾出空间。当然,您需要根据实际内容更改要重叠的行数并找到插入空白 wrapfig 环境的正确位置。

\documentclass{article}
\usepackage{tabularx,lipsum,wrapfig,parskip}
\begin{document}
\sffamily
\extrarowheight2pt
\newcolumntype{A}{p{\dimexpr.25\linewidth-2\tabcolsep}}
\newcolumntype{B}{p{\dimexpr.5\linewidth-2\tabcolsep}}
\newcolumntype{C}{p{\dimexpr.75\linewidth-2\tabcolsep}}
\newcolumntype{D}{p{\dimexpr1\linewidth-2\tabcolsep}}
\noindent\begin{tabular}{|A|A|A|A|}
\hline
\multicolumn{2}{|B}{\centering Foo} & \multicolumn{2}{|B|}{\centering Bar}   \\
\hline
\multicolumn{4}{|D|}{\bfseries Assumptions}\\
\multicolumn{4}{|D|}{\lipsum[2][1-3]}\\
\hline
\multicolumn{4}{|D|}{\bfseries Work}\\
\multicolumn{4}{|D|}{  
    \lipsum[2][1-4]
    \begin{wrapfigure}[4]{r}[-\tabcolsep]{\dimexpr.25\linewidth} % <===
    \end{wrapfigure}
    \lipsum[4][1-7] 
    \vspace{-4\baselineskip}}\\ % <===
\cline{4-4}
\multicolumn{3}{|C}{} & \multicolumn{1}{|A|}{\bfseries Answer}  \\
\multicolumn{3}{|C}{} & \multicolumn{1}{|A|}{\lipsum[1][1]}\\
\hline
\end{tabular}
\end{document}

姆韦

答案2

我推荐表格数组在评论中,但后来我意识到你想将单元格作为插入。在这种情况下,我推荐另一个包:好矩阵。一个优点是能够跟踪线交叉点的位置以及单元格位置。然后,您可以tikz在这些位置插入图形。

下面的解决方案仍然需要您计算两个参数:

  • hangafter
  • hangindent

以及一些关于 的知识tikz

这是代码。

\documentclass{article}
\usepackage{microtype}
\usepackage{tikz}
\usepackage{nicematrix}
\usepackage[nopar]{kantlipsum}

\begin{document}
\begin{table}[tbh]
  \renewcommand*{\arraystretch}{1.5}
  \NiceMatrixOptions{cell-space-limits=4pt}
  \centering
  \caption{example}\label{tab:lab}
  \begin{NiceTabular}{X[c]|X[c]}[hvlines]
      Column 1 & Column 2 \\
      \Block{1-2}{\parbox{\dimexpr2\hsize+2\tabcolsep}{%
          \textbf{Assumptions}
          \par\kant[1][1]}} \\
      \Block{1-2}{\parbox{\dimexpr2\hsize+2\tabcolsep}{%
          \textbf{Work}
          \par\hangindent-\dimexpr0.25\linewidth+3\tabcolsep\hangafter3
          \kant[1][2-5]}}
    \CodeAfter\tikz
    \node[
      draw,
      line width = 1.2pt,
      inner sep = \tabcolsep,
      anchor=south east,
      yshift=-\arrayrulewidth,
    ] at (4-|3) {%
      \parbox{0.25\linewidth}{%
        \textbf{Answer}
        \par Human reason depends on our sense perceptions of something}};
  \end{NiceTabular}
\end{table}
\end{document}

在此处输入图片描述

相关内容