Quarto文档列表内嵌代码块格式异常求助
解决Quarto嵌套列表中代码块PDF格式错乱问题
问题分析
嵌套列表内的代码块(或数据输出)生成PDF时格式错乱,核心原因有两点:
- 直接用
print输出的纯文本数据,在LaTeX嵌套列表环境中无法自动适配缩进规则,导致排版混乱。 - YAML配置中重复设置了
geometry参数,可能引发布局冲突,加重格式问题。
修复方案
1. 清理YAML配置中的重复项
移除include-in-header里重复的\geometry设置,避免布局参数冲突:
--- execute: cache: false jupyter: python3 format: pdf: number-sections: true fontsize: 12pt papersize: A4 fig-pos: 'H' geometry: "left=2.54cm,right=2.54cm,top=2.54cm,bottom=2.54cm" classoption: abstract, table include-in-header: text: | \usepackage{fvextra} \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\\\}} \usepackage[font=small]{caption} \usepackage{float} \usepackage{makecell} \usepackage{graphicx} ---
2. 替换数据输出方式,适配嵌套列表
用Markdown表格格式输出DataFrame,让Quarto生成能适配列表缩进的LaTeX代码,替换原有的print输出:
1. This is an item. a) Something ```{python} #|echo: false #|output: asis import pandas as pd data = {'A': [15, 30], 'b': [8, 5]} df = pd.DataFrame(data) # 输出Markdown格式表格,自动适配嵌套列表布局 print(df.to_markdown()) ```
额外说明
如果需要保留代码块的高亮显示(而非表格输出),可以在include-in-header中添加LaTeX命令,强制代码块适配列表缩进:
\usepackage{etoolbox} % 调整嵌套列表中的代码块缩进 \AtBeginEnvironment{Highlighting}{\setlength{\leftskip}{\parindent}}
将这段代码加入include-in-header的text块中,即可让代码块在嵌套列表中保持正确的缩进对齐。
内容的提问来源于stack exchange,提问作者PaulS
相关产品推荐
相关产品推荐

