RMarkdown用Papaya编译APA文档时表格标题错位、无表格目录问题求助
问题一:表格标题换行+未居中的解决方法
你遇到的问题是\captionof默认对齐规则不符合需求,且表格宽度可能超出文本宽度导致换行,可按以下步骤调整:
- 优先采用APA模板原生的浮动表格环境替换手动写的
center+captionof组合,修改后的表格代码如下:
\begin{table}[htbp] \centering \begin{tabular}{| c | c | c | c | c | c | c |} \hline Model & Composability & Unboundness & Comm. & Sync. & Distribution & Mobility\\ \hline $\pi$ & explicit & explicit & shared-mem & sync & NA & NA \\ \hline Join & explicit & implicit & shared-mem & sync & implicit & implicit\\ \hline Ambient & explicit & explicit & shared-mem & sync & explicit & explicit\\ \hline Actor & NA & implicit & message-pass & async & implicit & implicit \\ \hline \end{tabular} \caption{Summary of Properties of Concurrency Models}\label{summary} \end{table}
Papaya模板针对table环境的标题默认已经适配APA的居中对齐规则,不需要额外加命令。
- 如果调整后标题仍然换行,说明表格整体宽度超过了文本宽度,可在
\centering后添加\small或\footnotesize缩小表格字体,也可以引入tabularx包实现自适应列宽:先在header-includes中添加\usepackage{tabularx},再将tabular环境替换为:
\begin{tabularx}{\linewidth}{|>{\centering\arraybackslash}X|>{\centering\arraybackslash}X|>{\centering\arraybackslash}X|>{\centering\arraybackslash}X|>{\centering\arraybackslash}X|>{\centering\arraybackslash}X|>{\centering\arraybackslash}X|}
- 如果你一定要保留
captionof的写法,直接给标题添加居中命令即可:
\captionof{table}[Summary of Properties of Concurrency Models]{\centering Summary of Properties of Concurrency Models}
方括号内的短标题用于表格目录渲染,避免居中命令污染目录格式。
问题二:表格目录生成失败+tocloft警告的解决方法
你遇到的两个问题是Papaya模板的内置逻辑和包冲突导致的,按以下步骤处理:
- 首先删除你手动添加的
\listoftables命令,保留YAML配置中的tablelist: yes参数,Papaya模板会自动处理表格目录的插入位置,手动加的命令会被pandoc默认过滤。 - 处理
tocloft警告:在header-includes的最开头添加一行参数传递命令,避免包冲突:
header-includes: - \PassOptionsToPackage{titles}{tocloft} - \usepackage{amsmath} - \usepackage{mathtools} - \usepackage{listings} - \usepackage{caption}
- 如果警告仍然存在,可在YAML配置中添加
tocloft: no关闭Papaya对tocloft包的自动加载,冲突会直接消失。 - 如果上述方法都不生效,可改用raw LaTeX标记绕过pandoc的命令过滤,将你原本写的
\listoftables替换为\listoftables{=latex},同时将YAML的tablelist改回no即可。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

