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

如何在RMarkdown Beamer演示中自定义自动引用的字体大小与颜色?

解决方案:RMarkdown Beamer演示文稿中设置灰色小号引用字体

问题背景

作为RMarkdown新手,制作beamer_presentation格式PDF时,希望将自动引用([@shortname])设置为比普通文本稍小的灰色字体。此前在LaTeX Beamer中可通过重定义cite命令实现,但在RMarkdown中无效;手动用\textcolor{gray}{[e.g., @shortname]}修改时出现“Missing $ inserted”错误。

解决方法

由于使用了CSL格式定义引用样式,直接修改LaTeX cite命令无法生效,需通过Pandoc Lua过滤器处理引用的格式输出:

步骤1:创建Lua过滤器文件

新建名为gray-citations.lua的文件,内容如下:

function Cite(cite)
  -- 给引用添加灰色、小号字体的LaTeX命令
  return pandoc.RawInline('latex', '\\textcolor{gray}{\\small ') .. cite .. pandoc.RawInline('latex', '}')
end

步骤2:修改RMarkdown文档的YAML配置

在原MWE的YAML头部添加过滤器引用,并确保相关LaTeX包加载:

---
title: "演示文稿标题"
author: "Till"
date: 2022.07.25
output:
  beamer_presentation:
    incremental: true
    toc: false
    slide_level: 2
    latex_engine: lualatex 
    keep_tex: TRUE
    filter: gray-citations.lua  # 引用Lua过滤器
bibliography: literature.bib
csl: american-sociological-association.csl
header-includes: 
  - \usepackage{xcolor}
---

步骤3:调整幻灯片内容中的引用方式

无需手动包裹颜色命令,直接使用标准RMarkdown引用语法:

# 第一部分

## 示例幻灯片

- 一些文本,后跟引用 [@shortname]
- 更多无引用的文本

对应的literature.bib文件保持不变

@article{shortname,
    title = {引用标题},
    journaltitle = {期刊名},
    shortjournal = {期刊名},
    author = {Lastname, Firstname},
    date = {2022},
}

原理说明

Lua过滤器会拦截Pandoc处理过程中的所有引用元素(Cite节点),自动为其包裹\textcolor{gray}{\small ...}命令,既实现格式需求,又避免手动嵌套LaTeX命令导致的语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:57:36