Как сделать ссылку на цифру в уценке с помощью pandoc?

101

В настоящее время я пишу документ в разметке, и я хотел бы сделать ссылку на изображение из моего текста.

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
Я тестировал его, и он не дает автореференции. странно ...
Ромен Пиль
Возможно, вам стоит отредактировать свой вопрос, включив в него то, что вы пробовали, что у вас есть и что вы хотите (чтобы вам было легче помочь).
NN

Ответы:

95

В pandoc вы даже можете:

![This is the caption\label{mylabel}](/url/of/image.png)
See figure \ref{mylabel}.
NN
источник
41
Это помогает только в том случае, если вы конвертируете в TeX, но не в том случае, если вы также хотите создать HTML из того же источника Markdown.
Якоб
12
Доступна пара фильтров, чтобы справочная информация работала со всеми выходными форматами pandoc-fignos и pandoc-crossref
joelostblom
К сожалению, это не очень гибкий способ сделать это. Таким образом нельзя указать ширину или высоту изображения. Можно ли таким образом включать PDF-файлы? В противном случае это также было бы недостатком, так как это предпочтительнее в PDF в качестве выходного случая.
Zelphir Kaltstahl
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 для выполнения тех же действий с уравнениями.

tjd
источник
Я хотел бы сделать нечто подобное со ссылкой на элемент упорядоченного списка
DanielTuzes
18

Я разговаривал с Райаном Греем после того, как прочитал его ответ в аналогичном посте. Собственно его решение использования:

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

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

Когда дело доходит до pandoc, единственное решение для создания перекрестных ссылок - использовать непосредственно ключевые слова latex:

[image]: image.png "Image Title"
![Alt text \label{mylabel}][image]
See figure \ref{mylabel}.
Ромен Пиль
источник
5
Но, как сказал Якоб в принятом ответе: «Это помогает только в том случае, если вы конвертируете в TeX, но не в том случае, если вы также хотите создать HTML из того же источника Markdown».
DanielTuzes
Для Multimarkdown есть ли способ ссылаться на цифру через автоматически вычисляемый номер фигуры? Я бы вообразил что-то вроде [] (# 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>обязательна.

ivotron
источник
4
Правильное решение, то есть расширение синтаксиса pandoc markdown, позволяющее использовать идентификаторы для изображений, наконец, находится в стадии разработки. следите за обновлениями :)
Susanne Oberhauser
2

Предполагая, что вы хотите, чтобы Pandoc выводил PDF в конце:

Лучшее решение для вставки изображений и изменения их атрибутов, которое я нашел:

\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
@spinup Да. Pandoc может обрабатывать встроенный латексный материал в ваш файл уценки. Еще один совет: экспортируйте как файл PDF при экспорте из Matplotlib. Таким образом, Pandoc / механизм latex не будет снижать качество изображения, и у вас будет масштабируемое изображение вместо чего-то пиксельного при увеличении и уменьшении масштаба вашего PDF-файла.
Zelphir Kaltstahl
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в латексе уловки, связанной с этим , является lua-фильтр , который позволяет вам установить короткий заголовок вместо того, чтобы вся легенда рисунка отображалась в вашем списке фигур:

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

затем скомпилировать с --lua-filter short-captions.lua.

Joelostblom
источник