Wie verweise ich mit Pandoc auf eine Markdown-Zahl?


100

Ich schreibe gerade ein Dokument in Markdown und möchte einen Verweis auf ein Bild aus meinem Text machen.

this is my text, I want a reference to my image1 [here]. blablabla

![image1](img/image1.png)

Ich möchte diese Referenz erstellen, da nach dem Konvertieren meines Markdowns in PDF Bilder auf einer oder zwei Seiten danach platziert werden und das Dokument keinen Sinn ergibt.

AKTUALISIEREN:

Ich habe Ryans Antwort in diesem Beitrag ausprobiert und kann es nicht zum Laufen bringen. Anscheinend der Code:

[image]: image.png "Image Title" 
![Alt text][image] 
A reference to the [image](#image).

sollte produzieren:

\begin{figure}[htbp] 
\centering 
\includegraphics[keepaspectratio,width=\textwidth,height=0.75\textheight]{i mage.png} 
\caption{Alt text} 
\label{image} 
\end{figure} 

A reference to the image (\autoref{image}).

stattdessen erhalte ich:

\begin{figure}[htbp]
\centering
\includegraphics{image.png}
\caption{Alt text}
\end{figure}

A reference to the \href{\#image}{image}.

Ich habe zwei Probleme bemerkt:

  • \label{image} wird nicht angezeigt: Es wird keine Referenz erstellt.
  • (\autoref{image})wird \href{\#image}{image}: es wird kein Querverweis erkannt.

Und wenn ich das dann in PDF konvertiere, wird es offensichtlich nicht mit dem Bild verknüpft. Es gibt einen Link, der aber zu nichts führt.

Jede Hilfe wäre sehr dankbar !!



Ich habe es getestet und es erzeugt kein Autoref. komisch ...
Romain Piel

Vielleicht sollten Sie Ihre Frage so bearbeiten, dass sie enthält, was Sie versucht haben, was Sie haben und was Sie wollen (damit es einfacher ist, Ihnen zu helfen).
NN

Antworten:


95

Im Pandoc können Sie sogar:

![This is the caption\label{mylabel}](/url/of/image.png)
See figure \ref{mylabel}.

41
Dies ist nur hilfreich, wenn Sie in TeX konvertieren, nicht jedoch, wenn Sie auch HTML aus derselben Markdown-Quelle erstellen möchten.
Jakob

12
Es gibt eine Reihe von Filtern, mit denen Zahlenreferenzen mit allen Ausgabeformaten pandoc-fignos und pandoc-crossref funktionieren können
joelostblom

Leider ist dies keine sehr flexible Methode. Auf diese Weise kann die Breite oder Höhe des Bildes nicht angegeben werden. Ist es möglich, PDFs auf diese Weise einzuschließen? Wenn nicht, wäre das auch ein Nachteil, da es im PDF als Ausgabefall vorzuziehen ist.
Zelphir Kaltstahl

2
Es ist möglich, die Breite und Höhe einzustellen mit:![This is the caption\label{mylabel}](/url/of/image.png){width=30px height=20px}
Sam Walpole

24

Sie können den Pandoc-Fignos- Filter zur Nummerierung und Referenzierung von Abbildungen verwenden. Es funktioniert mit jedem Ausgabeformat - nicht nur mit LaTeX.

Fügen Sie den Attributen des Bildes eine Beschriftung hinzu:

 ![Caption.](image.png) {#fig:description}

... und verweisen Sie dann wie folgt auf die Abbildung:

 @fig:description

Informationen zum Installieren und Anwenden des Pandoc-Fignos-Filters finden Sie auf seiner Webseite. Es gibt auch den Pandoc-Eqnos- Filter, um das Gleiche mit Gleichungen zu tun.


Ich möchte etwas Ähnliches tun, indem
beziehe

18

Ich habe mich mit Ryan Gray unterhalten, nachdem ich seine Antwort in einem ähnlichen Beitrag gelesen hatte . Eigentlich seine Lösung zu verwenden:

[image]: image.png "Image Title" 
![Alt text][image] 
A reference to the [image](#image).

wird nur bei Verwendung von Multimarkdown angepasst.

Wenn es um Pandoc geht, besteht die einzige Lösung für Querverweise darin, direkt Latex-Schlüsselwörter zu verwenden:

[image]: image.png "Image Title"
![Alt text \label{mylabel}][image]
See figure \ref{mylabel}.

5
Aber wie Jakob bei der akzeptierten Antwort sagte: "Dies hilft nur, wenn Sie in TeX konvertieren, aber nicht, wenn Sie auch HTML aus derselben Markdown-Quelle erstellen möchten."
DanielTuzes

Gibt es für Multimarkdown eine Möglichkeit, die Figur über eine automatisch berechnete Figurennummer zu referenzieren? Ich würde mir so etwas wie [] (# image) vorstellen und dann würde Multimarkdown den leeren Text durch eine Zahl ersetzen (wie bei Fußnoten).
Alec Jacobson

4

Pandoc unterstützt das Referenzieren von Abschnitten (über Abschnittskennungen mit dem Präfix #).

In den Kommentaren zu diesem offenen Problem wird beschrieben, wie die folgende Problemumgehung Abschnittskennungen zum Generieren von Bildreferenzen in LaTeX und HTML nutzt:

<div id="fig:lalune">
![A voyage to the moon\label{fig:lalune}](lalune.jpg)

</div>

[The voyage to the moon](#fig:lalune).

Die leere Zeile vorher </div>ist erforderlich.


4
Eine geeignete Lösung, dh eine Erweiterung der Pandoc-Markdown-Syntax, um Bezeichner für Bilder zuzulassen, ist nun endlich im Gange. Bleib dran :)
Susanne Oberhauser

2

Angenommen, Sie möchten am Ende eine PDF-Ausgabe von Pandoc:

Die beste Lösung zum Einfügen von Bildern und zum Ändern ihrer Attribute ist:

\begin{figure}[H]
\includegraphics[width=0.25\textwidth, height=!]{images/path.png}
\centering
\caption{mycaption}
\end{figure}

und in meinem habe template.latexich:

\usepackage{wrapfig}
\usepackage{float}

Andere Lösungen können die Bildbreite oder -höhe nicht angeben, zumindest nicht im Standard-Markdown. Für so etwas wie ein Buch oder ein Papier ist es jedoch häufig wichtig, die Abmessungen von Abbildungen anzugeben, es sei denn, Sie möchten die Ausgabegröße von Bildern konfigurieren, bevor Sie sie in Ihrem Dokument verwenden. In diesem Fall müssten Sie unterschiedliche Einstellungen für die Tools vornehmen, mit denen Sie die Bilder erstellen.

Ich empfehle im Falle von Matplotlib, in PDF zu exportieren und dann den von mir geposteten Code zu verwenden. Dies bietet die beste Bildqualität und höchste Flexibilität bei der Konfiguration des Bilds in der Ausgabe-PDF, ohne sich um Dinge kümmern zu müssen.


Geht all diese Latexsyntax direkt in Ihre Markdown-Datei?
Spinup

@spinup Ja. Pandoc kann eingebettetes Latexmaterial in Ihrer Markdown-Datei verarbeiten. Ein weiterer Rat: Beim Exportieren aus Matplotlib als PDF-Datei exportieren. Auf diese Weise verringert Pandoc / die Latex-Engine die Bildqualität nicht und Sie erhalten ein skalierbares Bild anstelle von Pixeln, wenn Sie Ihre PDF-Datei vergrößern oder verkleinern.
Zelphir Kaltstahl

1

Mit pandoc-crossref können Sie Referenzfiguren mit der folgenden Syntax vergleichen:

![Caption](file.ext){#fig:label}

Verweisen Sie dann auf die Abbildung im Text, die der Zitatsyntax ähnelt, [@fig:label]und kompilieren Sie mit --filter pandoc-crossref(muss vorher erfolgen, --filter pandoc-citeprocwenn Sie diese auch verwenden).

Sie können das Styling mit zB \usepackage[font=small,labelfont=bf]{caption}in steuern header-includes.


Ein guter Trick, wenn Sie \listoffiguresin Latex verwenden, ist dieser Lua-Filter , mit dem Sie einen kurzen Titel festlegen können, anstatt die gesamte Figurenlegende in Ihrer Figurenliste anzuzeigen:

![Caption](file.ext){#fig:label short-caption='my short caption'}

dann kompilieren mit --lua-filter short-captions.lua.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.