Як зробити посилання на фігуру в розмітці за допомогою pandoc?


100

Наразі я пишу документ у відмітці, і я хотів би зробити посилання на зображення з мого тексту.

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

![image1](img/image1.png)

Я хочу зробити це посилання, оскільки після перетворення моєї відмітки в pdf зображення розміщуються на одній або двох сторінках після, і документ не має сенсу.

ОНОВЛЕННЯ:

Я спробував відповідь Райана на цій посаді, і я не можу змусити її працювати. Мабуть код:

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

повинен виробляти:

\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}).

натомість я отримую:

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

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

Я помітив дві проблеми:

  • \label{image} не відображається: посилання не створюється.
  • (\autoref{image})стає \href{\#image}{image}: перехресне посилання не виявлено.

І тоді, коли я конвертую це в pdf, воно, очевидно, не посилається на зображення. Є посилання, але воно ні до чого не посилається.

Будь-яка допомога буде дуже вдячна !!


1
Ви спробували метод, згаданий у groups.google.com/group/pandoc-discuss/msg/4a42442657a96414 ?
NN

Я перевірив це, і це не дає автореф. дивно ...
Romain Piel

Можливо, вам слід відредагувати своє запитання, щоб включити те, що ви спробували, що ви отримали і що хочете (щоб вам було легше допомогти).
NN

Відповіді:


95

У pandoc ви навіть можете:

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

41
Це допомагає лише при перетворенні в TeX, але не в тому випадку, якщо ви також хочете створити HTML з того самого джерела Markdown.
Якоб

12
Доступна пара фільтрів, щоб зробити контрольну роботу фігури з усіма вихідними форматами pandoc-fignos та pandoc-crossref
joelostblom

На жаль, це не дуже гнучкий спосіб зробити це. Ширину чи висоту зображення таким чином не можна вказати. Чи можна включити PDF-файли таким чином? Якщо ні, то це також буде і недоліком, оскільки це краще в PDF як вихідний випадок.
Зельфір Кальтшталь

2
Можна встановити ширину та висоту, використовуючи:![This is the caption\label{mylabel}](/url/of/image.png){width=30px height=20px}
Сем Уолпол

24

Ви можете використовувати фільтр pandoc-fignos для нумерації фігур та посилань. Він працює з будь-яким вихідним форматом - не тільки з LaTeX.

Додайте мітку до таких атрибутів зображення:

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

... а потім посилайтеся на фігуру так:

 @fig:description

Інформація про встановлення та застосування фільтра pandoc-fignos наведена на його веб-сторінці. Існує також фільтр pandoc-eqnos для того, щоб робити те ж саме з рівняннями.


Я хотів би зробити щось подібне з посиланням на елемент упорядкованого списку
DanielTuzes

18

Я спілкувався з Райаном Грієм, прочитавши його відповідь у подібному дописі. Насправді його рішення щодо використання:

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

адаптується лише при використанні мультимаркету.

Що стосується pandoc, єдине рішення зробити перехресні посилання - це використання безпосередньо ключових слів латексу:

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

5
Але, як Якоб сказав у прийнятій відповіді, "Це допомагає лише при перетворенні в TeX, але не, якщо ви також хочете створити HTML з того самого джерела Markdown".
DanielTuzes

Чи існує спосіб мультимаркерації посилання на фігуру через автоматично обчислений номер рисунка? Я б уявив щось на зразок [] (# image), і тоді multimarkdown замінить порожній текст цифрою (як це робиться для виносок).
Алек Джейкобсон

4

Pandoc підтримує посилання на розділи (за допомогою ідентифікаторів розділів з префіксом #).

У коментарях до цього відкритого питання описано, як описані нижче способи використання ідентифікаторів розділу для генерації посилань на зображення в LaTeX та HTML:

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

</div>

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

Порожній рядок раніше </div>обов'язковий.


4
Правильне рішення, тобто розширення на синтаксис розмітки pandoc, щоб тепер ідентифікатори для зображень, нарешті, вже не працює. Будьте в курсі :)
Сюзанна Оберхаузер

2

Припускаючи, що ви хочете вивести PDF Pandoc наприкінці:

Найкраще рішення для вставки зображень та зміни їх атрибутів я знайшов:

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

і в моєму template.latex:

\usepackage{wrapfig}
\usepackage{float}

Інші рішення не можуть визначати ширину або висоту зображення, принаймні, не в стандартній розмітці. Однак часто для книги чи паперу дуже важливо вказати розміри фігур, за винятком того, що ви хочете налаштувати розмір вихідних зображень перед тим, як використовувати їх у своєму документі. У цьому випадку вам доведеться мати різні налаштування для тих інструментів, які ви використовуєте для створення зображень.

Я рекомендую у випадку Matplotlib експортувати в PDF, а потім використовувати код, який я розмістив. Це дасть найкращу якість зображення та найбільшу гнучкість у налаштуванні того, як буде виглядати зображення у вихідному PDF, не турбуючись про речі.


Чи весь цей синтаксис латексу потрапляє прямо у ваш файл розмітки?
спінуп

@spinup Так. Pandoc може обробляти вбудовані матеріали з латексу у ваш файл розмітки. Ще одна порада: Експортуйте як PDF-файл при експорті з Matplotlib. Таким чином Pandoc / латексний двигун не знизить якість зображення, і ви матимете масштабоване зображення, а не щось пікселізоване, коли збільшуєте та зменшуєте файл PDF.
Зельфір Кальтшталь

1

За допомогою pandoc-crossref ви можете перетинати посилання на фігури з таким синтаксисом:

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

Потім посилайтеся на рисунок у тексті, подібний до синтаксису цитування, [@fig:label]і компілюйте з ним --filter pandoc-crossref(потрібно прийти раніше, --filter pandoc-citeprocякщо ви також використовуєте це).

Ви можете керувати стилем, наприклад, \usepackage[font=small,labelfont=bf]{caption}в header-includes.


Акуратний пов'язаний трюк, якщо ви використовуєте \listoffiguresв латексе, - це цей луа-фільтр , який дозволяє встановити короткий заголовок, а не всю легенду фігури відображати у списку фігур:

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

потім компілюйте з --lua-filter short-captions.lua.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.