我有一个 Markdown 文档,其中的代码块根据输出格式而采用不同的格式。这是一个例子:
::: {.content-visible when-format="html"}
```{python}
# | label: fig-scores
fig = plot_scores(grammar_dict)
fig.show() # html version
```
:::
::: {.content-visible when-format="docx"}
```{python}
# | label: fig-scores-docx
fig = plot_scores(grammar_dict)
plot_file = "figures/scores.png"
fig.write_image(plot_file)
display(Image(filename=plot_file))
```
:::
::: {.content-visible when-format="pdf"}
```{python}
# | label: fig-scores-latex
fig = plot_scores(grammar_dict)
plot_file = "figures/scores.png"
fig.write_image(plot_file)
# Display the image plot_file in LaTeX environment, scaled to fit text width
display(Latex(r"\includegraphics[width=\textwidth]{" + plot_file + "}"))
```
:::
如您所见,每个代码块都有一个条件属性
{.content-visible when-format="html"}
、{.content-visible when-format="docx"}
或 {.content-visible when-format="pdf"}
来确定哪个块应该在哪种输出格式中可见。这些是必要的,因为无花果是使用plotly
创建的。
但是,我觉得这样可能更有效率。有没有更好的方法来使用 Python 在 Markdown 中编写条件代码块,也许使用可以根据所需输出格式输出不同格式的单个代码块?我尝试在 Python 中使用 knitr (
is_html_output()
) 但无法正常工作。所以条件代码块是一种解决方案,但效率不高。理想情况下,我将能够调用像 display_plots(fig)
这样的函数,它会根据输出格式自动设置正确的无花果。
提前致谢!
补充资料: 使用 Quarto 和 plotly.