如何在RMarkdown生成的PDF文档左侧添加折叠标记?
在RMarkdown中生成带左侧折叠标记的PDF方案
方案一:基于scrlttr2文档类实现
RMarkdown默认使用article类,要切换到scrlttr2,需在YAML头部指定文档类,同时通过header-includes引入必要LaTeX设置调整折叠标记样式:
修改后的完整RMarkdown代码
--- title: "带折叠标记的文档" output: pdf_document: keep_tex: true documentclass: scrlttr2 date: "2023-01-17" header-includes: - \usepackage{fancyhdr} - \usepackage{xcolor} - \KOMAoptions{foldmark=true,foldmark=blmtP} # 启用折叠标记并设置样式 - \setplength{foldmarkwidth}{1mm} # 调整折叠标记宽度 - \setplength{foldmarkdepth}{5mm} # 调整折叠标记深度 - \setplength{foldmarkheight}{15mm} # 调整折叠标记高度 --- ## R Markdown 这是一份R Markdown文档。Markdown是一种简单的格式化语法,用于编写HTML、PDF和MS Word文档。关于R Markdown的更多细节可参考官方文档。 点击**Knit**按钮后,会生成包含内容及嵌入R代码块输出的文档。你可以像这样嵌入R代码块: ```r summary(cars)
### 关键配置说明 - `documentclass: scrlttr2`:强制使用KOMA-script的信函类,该类原生支持折叠标记 - `\KOMAoptions{foldmark=true,foldmark=blmtP}`:开启折叠标记,`blmtP`指定左侧垂直+顶部/底部水平的标记组合 - `\setplength`系列命令:自定义折叠标记的宽度、深度和高度,可根据需求调整数值 ## 方案二:通用文档类(如`article`)添加折叠标记 若不想切换到`scrlttr2`,可借助`fancyhdr`、`everypage`和`tikz`包手动绘制折叠标记: ### 修改后的完整RMarkdown代码 ```yaml --- title: "Untitled" output: pdf_document date: "2023-01-17" header-includes: - \usepackage{fancyhdr} - \usepackage{xcolor} - \usepackage{everypage} - \usepackage{tikz} - \AddEverypageHook{ \begin{tikzpicture}[overlay,remember picture] % 顶部折叠标记 \draw[black, thick] ($(current page.north west)+(1cm,-1cm)$) -- ++(0,-5mm) -- ++(5mm,0); % 底部折叠标记 \draw[black, thick] ($(current page.south west)+(1cm,1cm)$) -- ++(0,5mm) -- ++(5mm,0); % 垂直中线折叠标记 \draw[black, thick] ($(current page.west)+(1cm,0)$) -- ++(0,15mm); \end{tikzpicture} } --- ## R Markdown 这是一份R Markdown文档。Markdown是一种简单的格式化语法,用于编写HTML、PDF和MS Word文档。关于R Markdown的更多细节可参考官方文档。 点击**Knit**按钮后,会生成包含内容及嵌入R代码块输出的文档。你可以像这样嵌入R代码块: ```r summary(cars)
### 关键配置说明 - `\usepackage{everypage}`:用于在每一页执行自定义绘图命令 - `\usepackage{tikz}`:提供绘图功能,通过坐标定位绘制折叠标记线条 - `\AddEverypageHook`:将绘图逻辑绑定到每一页,`current page`用于定位页面边缘,可调整坐标修改标记的位置和尺寸 内容的提问来源于stack exchange,提问作者TobKel
相关产品推荐
相关产品推荐

