pandoc/markdownで使用するカスタムLaTeXコマンドを追加する

pandoc/markdownで使用するカスタムLaTeXコマンドを追加する

私は人気のあるアイスフォゲルテンプレート個人的な仕事用です。基本的にすべてをマークダウンで入力し、Pandoc を使用してきれいな PDF に変換します。

blockquotes ( > text ) を使用すると、きれいなバーが表示されます。しかし、スタイルのオプションをさらに追加したいという要望に遭遇しました。これらのブロック引用を実際の引用だけでなく、「情報パネル」や「アラート パネル」にも使用したいとします。マークダウン ファイル内でプレフィックスまたは custom-tex コマンドを指定して、適切なボックスが表示されるようにするオプションがあればいいと思います。

たとえば、次のようにすると> text、左側にダッシュが付いた見栄えの良い灰色のボックスが表示されますが、次のようにする\alert > textと、ボックスは元の blockquote の色ではなく、赤色でレンダリングされます。

確かに、構文はまったく異なるように見えるかもしれませんが、この優れた pandoc-latex を、できればカスタム コマンドを使用してもう少しカスタマイズする方法を見つける必要があります。純粋な LaTeX の記述には多少慣れていますが、マークダウン ファイル内にメモも記録しているので、pandoc を使用するとはるかに高速になります。

誰かアイデアありますか?

乾杯

答え1

customblockquoteさて、eisvogelテンプレートを見ると、 mdframedパッケージを使用して定義された特別な環境内でblockquoteをタイプセットしているようです。その文書

pandocで使用する新しいLaTeXコマンドは、header-includes:yamlオプションで定義できます。(またはコマンドラインフラグに含まれる別のファイルで定義-Hできます。)1つの選択肢は、このようなコマンドを使用してこの環境を再定義することです。通常の環境に戻したい場合は、テンプレートで定義されている方法に再定義する必要があります。

---
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 マークダウンの進化的飛躍を目指す quarto への切り替えを検討してください。カスタム テンプレートにこだわっている場合は、おそらくこれは良い考えではありません (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マークダウンでは、カスタムブロック異なる LaTeX 環境を生成します。たとえば、単純なものは次tcolorboxのようになります。

::: {.tcolorbox data-latex="[title=Warning]"}
foo 
:::

しかし、ご覧のとおり、デフォルトのボックスでも構文は少し複雑で、テンプレートに必要なパッケージを含めるか、またはなどを担当しheader-includes、より複雑なボックスを作成するには追加の作業が必要になります (リンクを参照)。一方、Quarto では、単純なコールアウト ブロックを入力するだけです。さらに、これらのブロックは別の形式にエクスポートできませんが、Quarto のコールアウトは、es を非常によく模倣した HTML および DOCX テーブルにエクスポートされますtcolorbox

答え3

議論は警告ブロックに傾いているようなので、Awesome Boxes を見てみることをお勧めします。

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

使いやすく、markdown や pandoc とうまく連携します。

関連情報