如何强制将脚注标记放在页边距内?

如何强制将脚注标记放在页边距内?

我正在完成一份报告的表格,并发现其中一个脚印标记突出到边缘(MWE 图像):

在此处输入图片描述

脚注标记 B 突出,我不知道如何强制将其视为 的一部分protein,我尝试将它们都包裹起来,{protein\tabularnote{...}}但毫无效果。B请问我怎样才能使脚注标记不突出到页边距?

删除单词可能是不可能的,因为我已经将句子缩减到最基本的部分,如果我添加更多单词,该部分2000-04将变成 5 行而不是 4 行,占用了太多空间(表格刚好适合放在底部,顶部有一张图片,中间有一些正文)。更改顺序会破坏时间顺序,所以我不知道该怎么做。(注意:表格中的文本与我的报告不同,其中包含我为 MWE 删除的biblatex \cite{...}等和自定义命令\denovo\,我只是添加了填充内容来展示问题)。

在 MWE 中,我pdflatex使用了 3 次进行编译nicematrix,在我的实际文档中,我的表格比 MWE 更复杂,因此nicematrix是必要的。

梅威瑟:

\documentclass[oneside]{book}

\usepackage{lipsum} % for dummy text

\usepackage[a4paper,inner=2.5cm,outer=2.5cm,top=3cm,bottom=3cm]{geometry}
\usepackage{booktabs}
\usepackage{nicematrix}
\usepackage{enumitem}

\begin{document}

\begin{table}[tb]
\caption{\lipsum[1][1]}
\footnotesize
\NiceMatrixOptions
  {
    notes =
     {
       para,
       enumitem-keys-para = { itemjoin = ;\; },
       bottomrule,
       style = {\textit{\Alph{#1}}},
     }
  }
\begin{NiceTabularX}{\textwidth}{@{} c @{\hspace{4pt}} X @{}}
\toprule
\textbf{Year} & \textbf{\lipsum[1][1]}\\ \midrule
2000--04 & First \textit{de novo} metalloproteins described with a minimal-model diiron protein\tabularnote{2000} (17), \textit{de novo} diiron diiron protein\tabularnote{2002} (18) and \textit{de novo} diiron phenol oxidase\tabularnote{2004} (19). First computational design procedure.\\ \addlinespace[0.1em]
\bottomrule
\end{NiceTabularX}
\end{table}

\end{document}

我在这个网站上搜索以前的问题没有找到太多结果,主要是涉及不同软件包或方法的问题,例如脚注超出页边距。如果这是重复的,或者有类似的问题用不同的措辞,如果可能的话,我将非常感激链接。

答案1

nicematrix包将注释编号设置在\rlap-box 中,并在其后面添加一个空格。在行末,此空格消失,并且方框插入边距。您可以通过将注释放在方框中来节省空间:protein\mbox{\tabularnote{2002}}

答案2

包装nicematrix用途

\hbox_overlap_right:n { \box_use:N \l_tmpa_box }
\skip_horizontal:n { \box_wd:N \l_tmpa_box }

将脚注编号明确地设置在边距中,因为\hbox_overlap_right:n将内容打印到右侧但没有宽度(您可能知道这是\rlap),并且行末的\skip_horizontal:n(即)将被忽略。如果您\hskip绝不想要这种突起,你可以修补nicematrix使用

\box_use:N \l_tmpa_box

反而:

\documentclass[oneside]{book}

\usepackage{lipsum} % for dummy text

\usepackage[a4paper,inner=2.5cm,outer=2.5cm,top=3cm,bottom=3cm]{geometry}
\usepackage{booktabs}
\usepackage{nicematrix}
\usepackage{enumitem}
\usepackage{xpatch}
\ExplSyntaxOn
\xpatchcmd{\__nicematrix_tabularnote:nn}{%
  \hbox_overlap_right:n { \box_use:N \l_tmpa_box }
  \skip_horizontal:n { \box_wd:N \l_tmpa_box }
}{%
  \box_use:N \l_tmpa_box
}{}{\PatchFailure}
\ExplSyntaxOff

\begin{document}

\begin{table}[tb]
\caption{\lipsum[1][1]}
\footnotesize
\NiceMatrixOptions
  {
    notes =
     {
       para,
       enumitem-keys-para = { itemjoin = ;\; },
       bottomrule,
       style = {\textit{\Alph{#1}}},
     }
  }
\begin{NiceTabularX}{\textwidth}{@{} c @{\hspace{4pt}} X @{}}
\toprule
\textbf{Year} & \textbf{\lipsum[1][1]}\\ \midrule
2000--04 & First \textit{de novo} metalloproteins described with a minimal-model diiron protein\tabularnote{2000} (17), \textit{de novo} diiron diiron protein\tabularnote{2002} (18) and \textit{de novo} diiron phenol oxidase\tabularnote{2004} (19). First computational design procedure.\\ \addlinespace[0.1em]
\bottomrule
\end{NiceTabularX}
\end{table}

\end{document}

补丁结果

答案3

我已经修改nicematrix以解决该问题。在最新版本(6.20a 2023-06-30)中,cabohah 的回答中描述的机制(为了让脚注的编号在右边距突出)仅当列的对齐模式为c或时才会激活r

因此,就您而言,您可以直接获得预期的输出。

\documentclass[oneside]{book}

\usepackage{lipsum} % for dummy text

\usepackage[a4paper,inner=2.5cm,outer=2.5cm,top=3cm,bottom=3cm]{geometry}
\usepackage{booktabs}
\usepackage{nicematrix}
\usepackage{enumitem}

\begin{document}

\begin{table}[tb]
\caption{\lipsum[1][1]}
\footnotesize
\NiceMatrixOptions
  {
    notes =
     {
       para,
       enumitem-keys-para = { itemjoin = ;\; },
       bottomrule,
       style = {\textit{\Alph{#1}}},
     }
  }
\begin{NiceTabularX}{\textwidth}{@{} c @{\hspace{4pt}} X @{}}
\toprule
\textbf{Year} & \textbf{\lipsum[1][1]}\\ \midrule
2000--04 & First \textit{de novo} metalloproteins described with a minimal-model diiron protein\tabularnote{2000} (17), \textit{de novo} diiron diiron protein\tabularnote{2002} (18) and \textit{de novo} diiron phenol oxidase\tabularnote{2004} (19). First computational design procedure.\\ \addlinespace[0.1em]
\bottomrule
\end{NiceTabularX}
\end{table}

\end{document}

上述代码的输出

相关内容