
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: > text
was zu einem gut aussehenden grauen Kästchen mit einem Strich auf der linken Seite führt, hätte ich gerne etwas wie: \alert > text
sodass 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 customblockquote
Umgebung 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 -H
Befehlszeilenflag 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.
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“:
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öcketcolorbox
um 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-includes
und 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.