继续这个问题:
如何在使用 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
或:只需在其中发布即可。enumerate
p
\@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]
将文本向下移动一行。相反,我需要在表格外定义一个新的长度。只有这样,上下移动才能正常工作。(我的乳胶技能不够好,不知道为什么会这样。)