所以我用的是流行的Eisvogel 模板对于我的个人工作。我基本上用 markdown 输入所有内容,然后使用 pandoc 将其转换为漂亮的 pdf。
使用 blockquotes ( > text ) 会产生一个漂亮的栏。但是,我突然想到要添加更多样式选项。假设我不仅想将这些块引用用作真正的引文,还想将其用作“信息面板”或“警报面板”。我希望能够以某种方式在我的 markdown 文件中给出前缀或自定义文本命令,并显示正确的框。
假设不是这样:> text
这会产生一个美观的灰色框,左侧带有破折号,我希望得到类似的效果,\alert > text
这样框就会呈现为红色,而不是原始的块引用颜色。
当然,语法可能看起来完全不同,但我只需要找到一种方法来进一步自定义这个很酷的 pandoc-latex 东西,最好使用自定义命令。我对编写纯 LaTeX 有点熟悉,但使用 pandoc 速度更快,因为我也在 markdown 文件中做笔记。
有人有主意吗?
干杯
答案1
好吧,看看 eisvogel 模板,它看起来像是在customblockquote
使用 mdframed 包定义的特殊环境中排版 blockquote:参见其文档。
您可以使用 yaml 选项定义新的 LaTeX 命令以用于 pandoc header-includes:
。(或者在命令行标志中包含的单独文件中-H
。)我认为一个选项是使用这样的命令来重新定义此环境。如果您想恢复正常,您必须将其重新定义为模板定义的方式
---
title: My Document
author: Someone
date: 7 May 2022
header-includes: |
\definecolor{myred}{RGB}{245,20,20}
\newcommand{\normalquote}{
\definecolor{blockquote-text}{RGB}{119,119,119}
\renewmdenv[rightline=false,
bottomline=false,
topline=false,
linewidth=3pt,
linecolor=blockquote-border,
skipabove=\parskip]{customblockquote}
}
\newcommand{\redalert}{
\definecolor{blockquote-text}{RGB}{240,240,240}
\renewmdenv[
linewidth=2pt,
linecolor=black,
leftmargin=10pt,
rightmargin=10pt,
backgroundcolor=myred,
fontcolor=white,
shadow=true,
skipabove=\parskip]{customblockquote}
}
...
This is some regular text.
> This is a regular quote.
\redalert
> This is a *very* red box with a shadow and light text.
\normalquote
> This is a normal blockquote again.
当然,您可以根据需要定义任意数量的此类样式。
最有可能的是,如果我对 pandoc 过滤器和模板有更多的了解,就会有一种更直接的方法,但这可能足以满足您的目的。
答案2
考虑切换到 quarto,这旨在成为 R markdown 的一次进化飞跃。如果您使用自定义模板,这可能不是一个好主意(我没有测试过它是否可以在 quarto 中直接使用,在进行一些/许多更改或根本不使用之后),但除此之外 quarto 包含一些易于使用的预定义“标注”:
来源 (mwe.qmd
):
---
format: pdf
---
## Callouts in Quarto
In Quarto (next generation of R markdown) you can use "callouts"
to show predefined alert boxes. For PDF output, \LaTeX\
`tcolorbox` package is used in the background automatically.
::: callout-note
There are five types of callouts:
`note`, `tip`, `warning`, `caution` and `important`.
:::
::: callout-tip
## Tip with custom caption
This is an example of a tip with custom caption.
:::
::: callout-warning
foo
:::
::: {.callout-caution}
## Take care !
foo
:::
::: callout-important
foo
:::
请注意,在“经典” R markdown 中,您还可以使用自定义块生成不同的 LaTeX 环境。例如,一个简单的示例tcolorbox
可以是:
::: {.tcolorbox data-latex="[title=Warning]"}
foo
:::
但如您所见,即使是默认框的语法也有点复杂,您需要负责在模板中包含所需的包,或者其他header-includes
,而制作更复杂的框将需要一些额外的工作(参见链接),而在 Quarto 中只需键入简单的标注块。此外,这些块不能导出为其他格式,而 Quarto 的标注可以导出为 HTML 和 DOCX 表,这些表可以很好地模仿 es tcolorbox
。
答案3
由于讨论似乎倾向于警告块,我建议看一下 Awesome Boxes:
https://www.nic.funet.fi/pub/TeX/CTAN/graphics/awesomebox/awesomebox.pdf
易于使用,与 markdown 和 pandoc 配合良好。