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

如何在Quarto中运行/输出HTML代码片段并嵌入PDF为静态图?

在Quarto中处理HTML代码块与PDF静态图嵌入的解决方案

一、HTML代码块的echo控制方法

Quarto对HTML代码块的处理分两种场景,你之前遇到的#| echo: false无效问题,核心是没区分纯代码展示和HTML渲染的代码块类型:

  • 仅展示HTML代码(echo生效):直接用普通的```html代码块即可,不需要添加任何#|指令。这种方式下代码会被语法高亮显示,不会被渲染成网页元素:

    <div class="container">
      <p>这是要展示的HTML代码</p>
    </div>
    
  • 渲染HTML内容且隐藏代码:如果需要让HTML代码被渲染(比如显示样式化文本),同时不展示代码,需要将HTML代码块标记为可执行代码块,并添加两个关键指令:

    #| echo: false
    #| results: asis
    <div style="color: darkred; font-size: 1.2em;">这段HTML会被渲染,且不会显示代码</div>
    
    • #| results: asis告诉Quarto直接输出代码的原始结果(即渲染HTML),而不是当成普通代码展示;
    • #| echo: false则控制不显示代码本身。

二、自动将代码运行结果转为静态图嵌入PDF

Quarto支持自动捕获代码生成的可视化结果,并转为静态图嵌入PDF,不需要手动保存和插入图片,具体实现方式如下:

1. 常规可视化代码(Python/R等)

对于Python的matplotlib、R的ggplot2这类生成静态图的库,直接运行代码即可,Quarto会自动捕获图表输出,转为PDF兼容的格式(默认是PDF或PNG)嵌入文档:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title("正弦曲线")
plt.show()

渲染PDF时,这段代码的图表会自动作为静态图插入到对应位置。

2. 交互式图表转静态图

如果代码生成的是交互式图表(比如Python的plotly),需要添加指令强制转为静态图:

#| fig-format: png
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length")
fig.show()

#| fig-format: png会让Quarto自动将交互式图表转为PNG静态图,再嵌入PDF。

3. 全局配置统一处理

如果希望所有代码块的图表都自动转为静态图,可以在文档开头的YAML配置中设置:

---
title: "你的文档标题"
format: pdf
execute:
  fig-format: png  # 全局指定图表输出格式为PNG
  echo: true       # 可选:控制是否显示代码
---

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:50:37