Fügen Sie einen benutzerdefinierten Latex-Befehl zur Verwendung mit Pandoc/Markdown hinzu

Fügen Sie einen benutzerdefinierten Latex-Befehl zur Verwendung mit Pandoc/Markdown hinzu

also verwende ich die beliebteEisvogel-Vorlagefür meine persönliche Arbeit. Ich tippe grundsätzlich alles in Markdown und verwende Pandoc, um es in ein hübsches PDF umzuwandeln.

Die Verwendung von Blockzitaten ( > Text ) ergibt eine hübsche Leiste. Allerdings habe ich den Wunsch verspürt, weitere Stiloptionen hinzuzufügen. Nehmen wir an, ich möchte diese Blockzitate nicht nur für echte Zitate verwenden, sondern auch für „Informationsfelder“ oder „Warnfelder“. Ich hätte gerne die Möglichkeit, irgendwie ein Präfix oder einen benutzerdefinierten Tex-Befehl in meine Markdown-Datei einzugeben und das entsprechende Feld anzuzeigen.

Nehmen wir an, statt: > textwas zu einem gut aussehenden grauen Kästchen mit einem Strich auf der linken Seite führt, hätte ich gerne etwas wie: \alert > textsodass das Kästchen in einem Rotton statt in der ursprünglichen Blockzitatfarbe dargestellt wird.

Natürlich könnte die Syntax ganz anders aussehen, aber ich muss einfach einen Weg finden, dieses coole Pandoc-Latex-Zeug noch ein bisschen mehr anzupassen, vorzugsweise mit benutzerdefinierten Befehlen. Ich bin ein bisschen vertraut mit dem Schreiben von reinem LaTeX, aber mit Pandoc geht es einfach viel schneller, da ich auch Notizen in meinen Markdown-Dateien mache.

Hat jemand eine Idee?

Prost

Antwort1

Wenn man sich die Vorlage von Eisvogel ansieht, sieht es so aus, als ob sie Blockzitate in einer speziellen customblockquoteUmgebung setzt, die mit dem Paket mdframed definiert ist: sieheseine Dokumentation.

Sie können neue LaTeX-Befehle für die Verwendung mit pandoc mit einer header-includes:YAML-Option definieren. (Oder in einer separaten Datei, die mit dem -HBefehlszeilenflag enthalten ist.) Eine Möglichkeit wäre wohl, einen solchen Befehl zu verwenden, um diese Umgebung neu zu definieren. Sie müssten sie wieder so definieren, wie sie in der Vorlage definiert ist, wenn Sie zum Normalzustand zurückkehren möchten.

---
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.

Beispiel für eine Neudefinition eines Pandoc-Zitats

Sie können natürlich so viele solcher Stile definieren, wie Sie möchten.

Wenn ich mehr über Pandoc-Filter und -Vorlagen wüsste, gäbe es wahrscheinlich einen einfacheren Weg, aber für Ihre Zwecke könnte dieser hier gut genug funktionieren.

Antwort2

Erwägen Sie einen Wechsel zu Quarto, das als Evolutionssprung von R Markdown dienen soll. Vielleicht ist das keine gute Idee, wenn Sie an eine benutzerdefinierte Vorlage gebunden sind (ich habe nicht getestet, ob sie so wie sie ist in Quarto verwendet werden kann, nach einigen/vielen Änderungen oder überhaupt nicht), aber ansonsten enthält Quarto einige einfach zu verwendende vordefinierte „Callouts“:

mwe


Die Quelle ( 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
:::

Beachten Sie, dass Sie im "klassischen" R-Markdown auch verwenden könnenbenutzerdefinierte Blöcketcolorboxum verschiedene LaTeX-Umgebungen zu erstellen. Eine einfache könnte zum Beispiel sein:

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

Aber wie Sie sehen, ist die Syntax selbst für eine Standardbox etwas komplexer, und Sie sind dafür verantwortlich, die in der Vorlage benötigten Pakete oder so einzuschließen, header-includesund das Erstellen aufwändigerer Boxen erfordert zusätzliche Arbeit (siehe Link), während in Quarto nur die einfachen Callout-Blöcke eingegeben werden. Darüber hinaus können diese Blöcke nicht in andere Formate exportiert werden, während die Callouts von Quarto in HTML- und DOCX-Tabellen exportiert werden, die die es sehr gut nachahmen tcolorbox.

Antwort3

Da die Diskussion in Richtung Ermahnungsblöcke zu tendieren scheint, würde ich vorschlagen, einen Blick auf Awesome Boxes zu werfen:

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

Einfach zu verwenden, funktioniert gut mit Markdown und Pandoc.

verwandte Informationen