我总体上对threeparttable
,但即使我使用了该选项,表格注释中有时也会出现不必要的换行符para
。例如,在下面的 MWE 中,“a”注释后有一个不必要的换行符。
我如何确保笔记之间不会出现换行符?
请注意,MWE 只是一个示例表,用于说明问题。更一般地,我可以通过逐步添加几个单词来生成这些不需要的换行符。(这表明一种解决方案是重新措辞笔记,但我宁愿不这样做。)
\documentclass{article}
\usepackage[para]{threeparttable}
\usepackage{tabularx}
\begin{document}
\begin{table}
\begin{threeparttable}
\caption{Lorem ipsum dolor sit amet, consectetur}
{
\begin{tabularx}{\linewidth}{X r r}
& \textbf{A} & \textbf{B} \\
Lorem\tnote{a} ipsum\tnote{b} dolor\tnote{c} sit amet, consectetur adipisicing elit & 123 & 456
\end{tabularx}
}
\begin{tablenotes}
Note. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
\item[a] Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\item[b] Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
\item[c] Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
答案1
这是一个功能,因此注释不会从行末开始。
我会将此视为一个建议,即使用可配置参数来控制注释的首行需要容纳多少内容。如果没有这种便利,您就只能重新定义宏。
\makeatletter
\def\TPT@doparanotes{\par
\prevdepth\z@ \TPT@hsize
\TPTnoteSettings
\parindent\z@ \pretolerance 8
\linepenalty 200
\renewcommand\item[1][]{\relax\ifhmode \begingroup
\unskip
\penalty -45 \hskip\z@\@plus 10pt\penalty-19
\hskip 25pt \penalty 9999 \hskip-25pt
\hskip 1em\@plus3pt
\endgroup\fi
\tnote{##1}\,\ignorespaces}%
\let\TPToverlap\relax
\def\endtablenotes{\par}%
}
\makeatother
如果你绝对地需要一个齐平的右边距,它可能是
\makeatletter
\def\TPT@doparanotes{\par
\prevdepth\z@ \TPT@hsize
\TPTnoteSettings
\parindent\z@ \pretolerance 8
\linepenalty 200
\renewcommand\item[1][]{\relax\ifhmode \begingroup
\unskip
\hskip 1em\@plus3pt
\endgroup\fi
\tnote{##1}\,\ignorespaces}%
\let\TPToverlap\relax
\def\endtablenotes{\par}%
}
\makeatother