多行响应行号而不是行号

多行响应行号而不是行号

我正在尝试在 LaTeX 中创建一个表格,其中包含与表格其余部分高度相同的多行。此表格在我的文档中出现了很多次。问题是第二行可以包含不同数量的换行符。但多行包会预先获取行数而不是总行数。通常每次使用此表格时,我都必须计算实际行数并将数字编辑到多行选项中。

现在我正在寻找一种方法来计算行数并自动调整多行。也许计数器会有所帮助?我已经尝试使用表行计数器来实现这种可能性,并且效果很好(第二次编译后)。类似的选项可以提前获取表内的所有行,这很棒。在 Google 上,我找到了带有选项 edtable 的 lineno 包。这可能有帮助,但我不知道如何使用它来解决我的问题。有人有办法解决这个问题吗?

\documentclass[a4paper,pagesize]{scrartcl} 
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{array} 
\usepackage[edtable]{lineno} %% Could be helpful?
\newcounter{tabline}
\newcolumntype{n}{>{\refstepcounter{tabline}\thetabline\enspace}l} 

\begin{document}
\begin{table}[ht] \centering
        \begin{tabular}{| n | >{\centering\arraybackslash}p{.4\textwidth} | >    {\centering\arraybackslash}p{.4\textwidth} |}
                \hline
                TEST & TEST & \multirow{\ref{FOO}}{*}    {\includegraphics[width=.4\textwidth]{example-image-golden}} \\ \hhline{--~|}
                TEST & TEST & \\ \hhline{--~|}
                TEST & TEST \linebreak HERE IS A LINEBREAK & \\ \hhline{--~|}
                TEST & TEST & \\ \hhline{--~|}
                TEST & TEST & \\ \hhline{--~|}
                TEST & TEST \linebreak HERE IS ONE TOO & \\ \hhline{--~|}
                TEST & TEST \linebreak AND ANOTHER ONE & \\ \hhline{--~|}
                TEST & TEST & \\ \hhline{--~|}
                TEST\label{FOO} & TEST &  \\ \hline
        \end{tabular}   
\end{table}
The table contains~\ref{FOO} rows. \\
\end{document}

答案1

\getrefnumber首先,从refcount或包中使用通常更安全hyperref

要将某个东西放在multirow字段的中心,需要使用参数fixup(其行为方式很神秘)。使用 a\raisebox填充整个空间并将图像放在中心要容易得多。无论哪种情况,您都需要知道字段的高度multirow。这可以使用 s 来完成\tikzmark

\documentclass[a4paper,pagesize]{scrartcl} 
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{array} 
\usepackage[edtable]{lineno} %% Could be helpful?
\usepackage{refcount}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\newcounter{tabline}
\newcolumntype{n}{>{\refstepcounter{tabline}\thetabline\enspace}l} 
\newlength{\tabsize}

\begin{document}
\begin{table}[ht]
\begin{tikzpicture}[remember picture,overlay]
  \coordinate (top) at (pic cs:top);% possibly redundant
  \coordinate (bottom) at (pic cs:bottom);
  \pgfextracty{\global\tabsize}{\pgfpointdiff{\pgfpointanchor{bottom}{center}}{\pgfpointanchor{top}{center}}}%
\end{tikzpicture}
\addtolength{\tabsize}{0.6\baselineskip}% tweak centering
\centering
        \begin{tabular}{| n | >{\centering\arraybackslash}p{.4\textwidth} | >    {\centering\arraybackslash}p{.4\textwidth} |}
                \hline
                TEST & TEST & \tikzmark{top}\multirow{\getrefnumber{FOO}}{*}{\raisebox{-0.5\height}[0.5\tabsize][0.5\tabsize]% center image in field
                  {\includegraphics[width=.4\textwidth]{example-image-golden}}} \\ \hhline{--~|}
                TEST & TEST & \\ \hhline{--~|}
                TEST & TEST \linebreak HERE IS A LINEBREAK & \\ \hhline{--~|}
                TEST & TEST & \\ \hhline{--~|}
                TEST & TEST & \\ \hhline{--~|}
                TEST & TEST \linebreak HERE IS ONE TOO & \\ \hhline{--~|}
                TEST & TEST \linebreak AND ANOTHER ONE & \\ \hhline{--~|}
                TEST & TEST & \\ \hhline{--~|}
                TEST\label{FOO} & TEST & \tikzmark{bottom} \\ \hline
        \end{tabular}   
\end{table}
The table contains~\ref{FOO} rows. \\
\end{document}

多行图像

相关内容