默认情况下,在生成 html 时,quarto 将图形的标题添加到自动生成的文本“Figure NN.”中,其中 NN 是图形的编号。例如:下面的R块
```{r}
#| label: myFirstFigure
#| fig-cap: A caption
plot(1:10)
```
将生成如下所示的标题:
图 1. 标题
但是,我需要的是一个看起来像这样的标题:
图 1. 标题
我怎样才能实现这一目标?
编辑:@shafee 在他的回答中显示,可以将其设为“Figure 1.”,即只是粗体的“图形”,而不是数字。但是,我想将两者都加粗(包括点)。科学期刊经常使用粗体来表示“图”、数字和标题的第一句。
*-title
选项指定用于字幕的标题前缀。
---
title: "Figure"
format: html
crossref:
fig-title: '**Figure**'
fig-labels: arabic
title-delim: "**.**"
---
## Quarto
```{r}
#| label: fig-myFirstFigure
#| fig-cap: A caption
plot(1:10)
```
需要注意的一个非常重要的细节,您必须在块标签名称前面添加
fig-
(例如 fig-yourChunkLabelName
)才能使这些选项起作用。
另请注意,此解决方案只能将数字前缀
Figure
和前缀分隔符.
加粗,但找不到加粗数字的方法。
与此同时,我想出了另一个解决方案,它可以创建所需的输出,至少对于 HTML 来说是这样,但可能并非在所有情况下都是如此。基本上,我发现为四开创建一个 lua 过滤器不是一个选项,因为显然过滤器是在四开添加数字编号之前运行的。因此,有必要在 quarto 渲染输出后使用自定义 lua 过滤器运行 pandoc。我发现以下内容对我有用:
quarto render test.qmd -t html | pandoc -L ./figfilt.lua -o test.html
这是文件
figfilt.lua
:
function Div(a)
if a.classes[1] ~= "quarto-figure" then return end
a.content = a.content:walk({
Plain = function(el)
if el.content[1].t == "Str" and
string.find(el.content[1].text, "^Figure") then
el.content[1] = pandoc.Strong(el.content[1])
end
return el
end,
})
return a
end
Image
选项,图像将不再属于
-f html
类(但如果您这样做,那么您将失去所有 Quarto 的好东西,例如 javascript)。所以这实际上是一种猜测,我不认为这个解决方案是最好的。