You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Quarto撰写手稿时,添加可交叉引用补充材料文件的推荐方法?

推荐方案:Quarto学术手稿补充材料的双向交叉引用实现

针对你提到的需求(独立补充材料文件、符合期刊编号规则的图表交叉引用、双向引用),以下是两种实用方案,按推荐优先级排序:

方案一:Lua过滤器自定义编号与引用格式

Quarto基于Pandoc,Lua过滤器可以直接修改交叉引用的编号逻辑和显示格式,是最灵活的解决方案,能完美适配期刊的特殊编号规则。

步骤1:编写Lua过滤器

创建supp-crossref.lua文件,内容如下:

-- 检测补充材料标记,修改图表编号前缀
function Image(img)
  local is_supplemental = quarto.doc.metadata.supplemental or false
  if is_supplemental then
    -- 给补充材料的图表添加自定义类用于区分
    img.attr.classes:insert("supp-figure")
    -- 根据期刊需求设置编号格式:可选"Supplemental Figure X"或"Figure SX"
    local fig_format = quarto.doc.metadata.supp_fig_format or "prefix"
    if fig_format == "prefix" then
      img.caption = pandoc.Inlines{pandoc.Str("Supplemental Figure ")} .. img.caption
    elseif fig_format == "suffix" then
      img.caption = pandoc.Inlines{pandoc.Str("Figure S")} .. img.caption
    end
  end
  return img
end

-- 处理正文对补充材料图表的引用格式
function Cite(cite)
  for _, citation in ipairs(cite.citations) do
    -- 通过引用ID前缀判断是否为补充材料图表(假设ID以"supp-"开头)
    if citation.id:match("^supp%-") then
      local ref_format = quarto.doc.metadata.supp_ref_format or "prefix"
      if ref_format == "prefix" then
        citation.prefix = pandoc.Inlines{pandoc.Str("Supplemental ")}
      elseif ref_format == "suffix" then
        citation.prefix = pandoc.Inlines{pandoc.Str("Figure S")}
      end
    end
  end
  return cite
end

步骤2:配置文档元数据

  • 正文文档(如manuscript.qmd):

    ---
    title: "Main Manuscript"
    filters: [supp-crossref.lua]
    crossref:
      fig-prefix: "Figure"
    ---
    

    引用补充材料图表时,直接使用补充材料中定义的标签,比如@fig-supp-1,过滤器会自动转换为符合要求的格式(如"Supplemental Figure 1"或"Figure S1")。

  • 补充材料文档(如supplemental.qmd):

    ---
    title: "Supplemental Materials"
    supplemental: true
    supp_fig_format: "prefix" # 可选"prefix"(显示Supplemental Figure X)或"suffix"(显示Figure SX)
    filters: [supp-crossref.lua]
    ---
    

    补充材料中的图表标签以supp-开头,比如:

    ![Experimental Setup](setup.png){#fig-supp-1}
    

步骤3:编译项目

使用以下命令编译所有文档,确保共享引用数据库:

quarto render --all

方案二:项目级交叉引用前缀配置(轻量方案)

如果不需要复杂的格式切换,可直接利用Quarto的交叉引用前缀配置,实现补充材料图表的独立编号。

步骤1:项目配置(_quarto.yml)

project:
  type: default
  output-dir: _output

crossref:
  fig-prefix: "Figure" # 正文图表前缀

步骤2:补充材料文档配置

在supplemental.qmd中覆盖交叉引用规则:

---
title: "Supplemental Materials"
crossref:
  fig-prefix: "S"
  fig-number-separator: "" # 去掉编号与前缀的分隔符,实现Figure S1格式
  # 若需要Supplemental Figure X格式,改为fig-prefix: "Supplemental Figure"
---

步骤3:双向引用实现

  • 正文引用补充材料图表:使用@fig-supp-1,会自动显示为"Figure S1"或"Supplemental Figure 1"。
  • 补充材料引用正文图表:直接使用正文的标签,如@fig-main-1,会显示为"Figure 1"。

同样需用quarto render --all编译所有文档,确保引用信息互通。

注意事项

  • 所有文档需放在同一Quarto项目目录下,无需书籍格式的index.qmd。
  • 若需要表格的补充引用,可在Lua过滤器中添加Table函数的处理逻辑,类似图片的处理方式。

内容的提问来源于stack exchange,提问作者ekatko1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:03:05