问题
我想\tnotex
表现得像\tnote
处理标记的括号一样。
\t注意:
\tnote
删除表格中的括号,但在标记的注释部分显示它们。
\documentclass{scrreprt}
\usepackage{booktabs}
\usepackage[online,referable]{threeparttablex}
\usepackage{multicol}
\begin{document}
\begin{table}[htb]
\centering
\begin{threeparttable}
\caption{MWE 1}
\label{tab:mwe_1}
\begin{tabular*}{0.75\textwidth}{@{\extracolsep{\fill} }
l
c
@{\extracolsep{0.1\linewidth}}
c
c
@{}
}
\toprule
& \multicolumn{3}{c}{Multicolumn} \\
\cmidrule(lr){2-4}
& \textbf{One}\tnote{1} & \textbf{Two} & \textbf{Three} \\
& [sub] & [sub] & [sub] \\
\midrule
A\tnote{1} & 1234\tnote{a} & 12 & 12 \\
B\tnote{2} & 123 & {-} & 12345\tnote{a} \\
C\tnote{3} & 123 & 123 & {-} \\
\bottomrule
\end{tabular*}
\begin{tablenotes}
\setlength\multicolsep{0pt}
\begin{multicols}{2}
\footnotesize
\item[1)] Note 1
\item[2)] Note 2
\item[3)] Note 3
\item[a)] Note a
\note note
\source source
\end{multicols}
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
\tnotex:
不幸的是,\tnotex
行为方式不同,并且在表中也显示括号。
\documentclass{scrreprt}
\usepackage{booktabs}
\usepackage[online,referable]{threeparttablex}
\usepackage{multicol}
\begin{document}
\begin{table}[htb]
\centering
\begin{threeparttable}
\caption{MWE 2}
\label{tab:mwe_2}
\begin{tabular*}{0.75\textwidth}{@{\extracolsep{\fill} }
l
c
@{\extracolsep{0.1\linewidth}}
c
c
@{}
}
\toprule
& \multicolumn{3}{c}{Multicolumn} \\
\cmidrule(lr){2-4}
& \textbf{One}\tnotex{tn:1} & \textbf{Two} & \textbf{Three} \\
& [sub] & [sub] & [sub] \\
\midrule
A\tnotex{tn:2} & 1234\tnotex{tn:a} & 12 & 12 \\
B\tnotex{tn:2} & 123 & {-} & 12345\tnotex{tn:a} \\
C\tnotex{tn:3} & 123 & 123 & {-} \\
\bottomrule
\end{tabular*}
\begin{tablenotes}
\setlength\multicolsep{0pt}
\begin{multicols}{2}
\footnotesize
\item[1)] \label{tn:1} Note 1
\item[2)] \label{tn:2} Note 2
\item[3)] \label{tn:3} Note 3
\item[a)] \label{tn:a} Note a
\note note
\source source
\end{multicols}
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
多一点
我已经查阅了代码,threeparttablex
但老实说,我更喜欢 C/C++ 等,目前没有足够的时间深入研究 TeX 兔子洞。
我希望有人能给我提供一个快速(也许是肮脏的)解决方案。
谢谢你,祝你有美好的一天。
答案1
一个快速解决方法是不要在项目标签中输入右括号,而是将括号单独放在处理标签的内部包命令中,即\TPTnoteLabel
。此命令记录在文档原始threeparttable
包装(第 1 页,重点是我的):
提供了表格注释常见变体的一些选项:
para
注释一个接一个,没有换行flushleft
笔记上无悬挂缩进online
\item
标签打印为正常大小,不是上标normal
恢复默认格式[...]
这几个选项不会提供您可能需要的每种格式,因此您可能会发现需要重新定义一个或多个配置命令。 请注意,混合使用选项和重新定义不太可能顺利运行[...] 配置命令:
\TPTtagStyle
:带有一个参数的命令,用于设置 中标签(数字)的外观\tnote{tag}
。默认为 nil。可以是\textit
。- [...]
\TPTnoteLabel
:带有一个参数的命令,用于格式化 tablenotes 列表中的项目标签(\makelabel
);默认使用\tnote
。
因此,无需使用任何这些选项,您可以通过重新定义这两个命令分别配置表格和注释列表中的注释编号/标签的格式,例如:
\renewcommand{\TPTnoteLabel}[1]{(#1)}
用括号将标签括起来。但是,提供的 MWE 使用了选项online
,因此这是“不太可能顺利运行”的情况之一。事实上,在这里重新定义需要online
完全覆盖选项。您可以在包源中找到原始定义,并且由于此代码包含 @ 符号,因此重新定义需要用 和 括\makeatletter
起来\makeatother
。
梅威瑟:
\documentclass{scrreprt}
\usepackage{booktabs}
\usepackage[online,referable]{threeparttablex}
\usepackage{multicol}
\makeatletter
\def\TPT@opt@online{%
\def\TPTnoteSettings{\leftmargin1.5em \labelwidth1em \labelsep.5em\relax}%
\def\TPTnoteLabel##1{\TPTtagStyle{##1})\hfil}%
}
\makeatother
\begin{document}
\begin{table}[htb]
\centering
\begin{threeparttable}
\caption{MWE 2}
\label{tab:mwe_2}
\begin{tabular*}{0.75\textwidth}{@{\extracolsep{\fill} }
l
c
@{\extracolsep{0.1\linewidth}}
c
c
@{}
}
\toprule
& \multicolumn{3}{c}{Multicolumn} \\
\cmidrule(lr){2-4}
& \textbf{One}\tnotex{tn:1} & \textbf{Two} & \textbf{Three} \\
& [sub] & [sub] & [sub] \\
\midrule
A\tnotex{tn:2} & 1234\tnotex{tn:a} & 12 & 12 \\
B\tnotex{tn:2} & 123 & {-} & 12345\tnotex{tn:a} \\
C\tnotex{tn:3} & 123 & 123 & {-} \\
\bottomrule
\end{tabular*}
\begin{tablenotes}
\setlength\multicolsep{0pt}
\begin{multicols}{2}
\footnotesize
\item[1] \label{tn:1} Note 1
\item[2] \label{tn:2} Note 2
\item[3] \label{tn:3} Note 3
\item[a] \label{tn:a} Note a
\note note
\source source
\end{multicols}
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
结果: