在表格中使用小页面时,如何保持恒定的基线跳跃?

在表格中使用小页面时,如何保持恒定的基线跳跃?

继续这个问题:

如何在使用 minipages (或 \parboxes) 时保持恒定的 baselineskip?

问题的答案表明,\strut就以下行而言,将小页面分隔开并不完美。他们建议将命令\par\xdef\tpd{\the\prevdepth}(在小页面内) 和\prevdepth\tpd(在小页面外) 结合起来。

但是,建议的解决方案在表格中不起作用,因为\prevdepth\tpd需要在单独的间隔行中写入才能起作用:

...
\par\xdef\tpd{\the\prevdepth}   
\end{minipage}

\prevdepth\tpd
...

该命令不允许我使用\\空行代替。但是,tabular-environment 需要用\\来分隔行。

我试过

\begin{tabular}[t]{p{0.2 \linewidth}p{0.2 \linewidth}}
    lipsum & %
    \begin{minipage}[t]{\linewidth}
        lipsum\\lipsum
        \par\xdef\tpd{\the\prevdepth} 
    \end{minipage}\par
    \prevdepth\tpd 
    lipsum & lipsum
\end{tabular}

\prevdepth\tpd和类似的东西。我要么因为或tabular缺少而得到编译错误\\。如果我使用空行和\\,我会得到一个额外的不需要的换行符。

有没有什么办法可以让这个解决方案奏效?

编辑:根据要求,提供完整的示例

\documentclass[fontsize=11pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}
\setlength{\tabcolsep}{0pt}
\setlength{\parskip}{0pt}
\setlength{\parindent}{0pt}

\begin{tabular}[t]{p{0.2 \linewidth}p{0.2 \linewidth}}
lipsum & %
 \begin{minipage}[t]{\linewidth}lipsum\\libsum
 \end{minipage}\\ 
lipsum & lipsum
\end{tabular}
lipsum
\end{document}

无修复输出

使用上面建议的间距命令我得到以下结果: 输出修复

这接近所需的输出,但却带来了编译错误(因为\\表中缺少行分隔符)。

答案1

您不需要迷你页面来在列中拥有itemize或:只需在其中发布即可。enumeratep\@minipagetrue

\documentclass[fontsize=11pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{enumitem}
\makeatletter
\newcolumntype{P}[1]{>{\@minipagetrue}p{#1}}
\makeatother

\begin{document}

\begin{tabular}{|P{0.2 \linewidth}|P{0.2 \linewidth}|}
\hline
lipsum & 
\begin{itemize}
\item A
\item B
\end{itemize}
lipsum \\
\hline
lipsum & lipsum\\
\hline
\end{tabular}

\bigskip

\begin{tabular}{|P{0.2 \linewidth}|P{0.2 \linewidth}|}
\hline
lipsum & 
\begin{itemize}[nosep]
\item A
\item B
\end{itemize}
lipsum \\
\hline
lipsum & lipsum\\
\hline
\end{tabular}

\end{document}

我添加这些规则只是为了更好地展示各种单元格,而不是因为我认可它们的用法。

在此处输入图片描述

答案2

我找到了一个相当笨拙的答案来回答我的问题。我希望会有更好的答案,但它确实有效。

\documentclass[fontsize=11pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\newlength{\bls}

\begin{document}
\setlength{\bls}{\baselineskip}
\begin{tabular}[t]{p{0.2 \linewidth}p{0.2 \linewidth}}
    lipsum & %
    \begin{minipage}[t]{\linewidth}
        lipsum\\lipsum
        \par\xdef\tpd{\the\prevdepth} 
    \end{minipage}

    \prevdepth\tpd\\[\-bls]
    lipsum & lipsum
\end{tabular}

\end{document}

如上所述,我可以让代码以增加一行为代价运行。然后我可以使用 将文本向上移动一行\\[-\bsl]。出于某种原因,它不允许我\\[-\baselineskip]直接使用 将文本向上移动,而我可以使用\\[\baselineskip]将文本向下移动一行。相反,我需要在表格外定义一个新的长度。只有这样,上下移动才能正常工作。(我的乳胶技能不够好,不知道为什么会这样。)

相关内容