Когда я конвертирую записную книжку в латекс (затем PDF), изображения перемещаются в нижнюю часть страницы. Я подумал, что в латексе его можно будет сохранить в текущей позиции, используя спецификатор размещения 'h':
\begin{figure}[placement specifier]
... figure contents ...
\end{figure}
Можно ли настроить nbconvert для использования этого значения по умолчанию, чтобы потом мне не приходилось вручную обрабатывать его?
Ссылка: https://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions
Спасибо, я воспользовался решением из указанной статьи.





Я думаю, вы можете получить то, что хотите, переопределив соответствующие блоки в своем шаблоне.
Обратите внимание, что в document_contents.tplx блоки data_png, data_jpg и т. д. Вызывают один и тот же макрос draw_figure.
Я сделал что-то похожее на то, что вам нужно, переопределив блоки фигур в моем настраиваемом шаблоне, чтобы вызвать другой макрос draw_figure_2, который я также определил в моем настраиваемом шаблоне.
Добавление чего-то вроде
((*- block data_png -*))((( draw_figure_2(output.metadata.filenames['image/png']) )))((*- endblock -*))
((*- block data_jpg -*))((( draw_figure_2(output.metadata.filenames['image/jpeg']) )))((*- endblock -*))
((*- block data_svg -*))((( draw_figure_2(output.metadata.filenames['image/svg+xml']) )))((*- endblock -*))
((*- block data_pdf -*))((( draw_figure_2(output.metadata.filenames['application/pdf']) )))((*- endblock -*))
% copied macro draw_figure and made some naive changes; modify as needed
((* macro draw_figure_2(filename) -*))
((* set filename = filename | posix_path *))
((*- block figure scoped -*))
\begin{figure}[h] % or whatever you want
\begin{center}
\adjustimage{max size = {0.9\linewidth}{0.9\paperheight}}{((( filename )))}
\end{center}
\end{figure}
{ \hspace*{\fill} \\}
((*- endblock figure -*))
((*- endmacro *))
Спасибо, это выглядит очень полезно. Однако после копирования вашего кода в файл шаблона я получаю сообщение об ошибке: jinja2.exceptions.UndefinedError: 'output' is undefined при запуске jupyter nbconvert --to latex toplevel.ipynb --template latex-template.tplx. Есть идеи?
Хорошо, я попытался добавить ((*- extends 'article.tplx' -*)), который останавливает ошибку, но также не выводит измененный латексный код.
@ThorstenAltenkirch Я не могу воспроизвести вашу проблему. Вы можете попробовать заменить «data_priority» (см. nbconvert.readthedocs.io/en/latest/customizing.html), просто чтобы проверить, что шаблон используется. Просто добавьте эту строку в свой шаблон: ((*- block data_priority -*)) data_priority was here ((*- endblock -*)), и вы увидите, что все ваши выходные данные заменены текстом «data_priority was here».
Возможный дубликат Как принудительно преобразовать изображение в текст при преобразовании разметки в PDF с помощью pandoc