我使用 R kableExtra 创建了一个表格。但希望能够在 LATEX 中手动控制表格的注释部分。因此,我使用 \include{table.tex} 命令来引入输出的表格。不幸的是,如果我写:
\documentclass[12pt]{article}
\usepackage{longtable}
\begin{document}
\include{table.tex}\footnotesize{Note: this is a note.}
\end{document}
表格后面出现了一个巨大的缩进,并且仅在下一页上,它显示“这是一个注释”。
该table.tex
文件如下所示:
\begingroup\fontsize{8}{10}\selectfont
\begin{longtable}{|c|c|c|c|}
\caption{A simple longtable example}\label{tab:thetable}\\
\hline
\textbf{First entry} & \textbf{Second entry} & \textbf{Third entry} & \textbf{Fourth entry} \\
\hline
\endfirsthead
\multicolumn{4}{c}%
{\tablename\ \thetable\ -- \textit{Continued from previous page}} \\
\hline
\textbf{First entry} & \textbf{Second entry} & \textbf{Third entry} & \textbf{Fourth entry} \\
\hline
\endhead
\hline \multicolumn{4}{r}{\textit{Continued on next page}} \\
\endfoot
\hline
\endlastfoot
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
\end{longtable}
\endgroup{}
我尝试将所有内容包装在 中minipage
,但由于我在 中为表格建立了标题和标签kableExtra
,因此它位于 table.tex 中。因此,我无法引用该表格,因为我无法在 minipage 中放置表格。
请有人帮忙!
答案1
该命令\include
在其内容前后都插入分页符。您需要的命令是\input
,而不是\include
。
单独观察:字体大小更改命令\tiny
、\scriptsize
、\footnotesize
、\small
、、、和\normalsize
是开关,即它们不接受花括号分隔的参数。因此,您应该更改\large
\Large
\LARGE
\huge
Huge
\footnotesize{Note: this is a note.}
到
{\footnotesize Note: this is a note.}
\documentclass[12pt]{article}
\begin{filecontents*}[overwrite]{table.tex}
\begingroup
\fontsize{8}{10}\selectfont
\begin{longtable}{|c|c|c|c|}
\caption{A simple longtable in \texttt{8pt}}\label{tab:thetable}\\
\hline
\textbf{First entry} & \textbf{Second entry} & \textbf{Third entry} & \textbf{Fourth entry} \\
\hline
\endfirsthead
\multicolumn{4}{c}{%
\tablename\ \thetable\ -- \textit{Continued from previous page}} \\
\hline
\textbf{First entry} & \textbf{Second entry} & \textbf{Third entry} & \textbf{Fourth entry} \\
\hline
\endhead
\hline \multicolumn{4}{r}{\textit{Continued on next page}} \\
\endfoot
\hline
\endlastfoot
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
\end{longtable}
\endgroup
\end{filecontents*}
\usepackage{longtable}
\begin{document}
Bla bla bla in \texttt{\string\normalsize\ (12pt)}.
%\include{table.tex} % <-- not good!
\input table % <-- good
{\footnotesize Note: This note is typeset in \texttt{\string\footnotesize\ (10pt)}.}
More bla bla bla in \texttt{\string\normalsize\ (12pt)}.
\end{document}
答案2
@Mico 评论中给出了您问题的解决方案。因此,这里大部分都是离题的解决方案。我会按照以下方式编写您的文档:
- 主要文件:
\documentclass[12pt]{article}
\usepackage{tabularray} % <--- new
\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\input{table.tex} % <--- changed
\lipsum[4]
\end{document}
- 表格文件,使用包
longtblr
中定义的表格tabularray
。其中一部分是脚注,我假设您喜欢在表格结束后立即添加脚注:
\begingroup
\fontsize{8}{10}\selectfont
\begin{longtblr}[
caption = {A simple longtable example},
label = {tab:thetable},
remark{Note} = {This is a note}
]{
rowhead = 1,
hlines, vlines,
colspec= {*4{Q[c]}},
row{1} = {font=\bfseries}
}
First entry & Second entry & Third entry & Fourth entry \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\ 1 & 2 & 3 & 4 \\
\end{longtblr}
\endgroup
答案3
\input
我同意使用而不是 的建议\include
。
尽管如此,如果有充分的理由坚持使用\include
,可能为了使用\includeonly
,您可以定义一个\include
不添加分页符的版本,如下所示:
\usepackage{etoolbox} % for \patchcmd
\makeatletter
\let\includenobreak=\include
\let\@includenobreak=\@include
\patchcmd{\@includenobreak}%
{\clearpage}{}{}{}
\patchcmd{\includenobreak}%
{\@include}{\@includenobreak}{}{}
\makeatother
并可\includenobreak
用于您的桌子或其他任何东西。