新增與 pandoc/markdown 一起使用的自訂 Latex 指令

新增與 pandoc/markdown 一起使用的自訂 Latex 指令

所以我用的是流行的艾斯沃格爾模板為了我的個人工作。我基本上在 Markdown 中輸入所有內容,然後使用 pandoc 將其轉換為漂亮的 pdf。

使用區塊引號(> text)會產生一個漂亮的條形。然而,我遇到了添加更多樣式選項的願望。假設我不僅想將這些區塊引號用於實際報價,而且還想用於「資訊面板」或「警報面板」。我希望能夠選擇以某種方式在我的 Markdown 文件中給出前綴或自訂 tex 命令,並顯示正確的框。

讓我們說,而不是擁有:> text這會產生一個好看的灰色盒子,左側有一個破折號,我想要類似的東西,\alert > text以便盒子被渲染為一些紅色,而不是原始的塊引用顏色。

當然,語法可能看起來完全不同,但我只需要找到一種方法來自訂這個很酷的 pandoc-latex 東西,最好是使用自訂命令。我對編寫純 LaTeX 有點熟悉,但使用 pandoc 速度更快,因為我​​還在 Markdown 文件中做筆記。

有人有主意嗎?

乾杯

答案1

好吧,看看 eisvogel 模板,它看起來像是在customblockquote使用 mdframed 套件定義的特殊環境中排版塊引用:參見它的文檔

您可以使用 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引用重新定義範例

您當然可以根據需要定義任意數量的此類樣式。

如果我對 pandoc 過濾器和模板有更多了解,很可能會有一種更直接的方法,但這可能足以滿足您的目的。

答案2

考慮切換到四開本,這旨在成為 R markdown 的進化飛躍。如果您掛鉤於自訂模板,也許這不是一個好主意(我沒有測試它是否可以在四開本中使用,在進行一些/許多更改之後或根本不使用),但除此之外,四開本包含一些易於使用的預定義「標註」:

姆韋


來源 (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 的標註可匯出為 HTML 和 DOCX 表格,很好地模仿了 es tcolorbox

答案3

由於討論似乎傾向於警告塊,我建議看一下 Awesome Boxes:

https://www.nic.funet.fi/pub/TeX/CTAN/graphics/awesomebox/awesomebox.pdf

易於使用,與 Markdown 和 Pandoc 搭配良好。

相關內容