org-mode как использовать пользовательскую команду при экспорте фигур - PullRequest
0 голосов
/ 28 мая 2018

Я использую стиль TeX, предоставленный моим университетом, который включает специальную команду для описания источника фигуры.По неизвестной причине они решили поместить источник и подпись в разные позиции.Итак, у нас есть дополнительная команда с именем \figsource.

. Я использую следующие строки для вставки фигуры в мой файл org:

#+LABEL: fig:myfigure
#+CAPTION:My caption
[[file:img/fig1.pdf]]

, которая экспортируется в латекс:

\begin{figure}[htbp]
\centering
\includegraphics[width=1\linewidth]{img/fig1.pdf}
\caption{My caption}  
\end{figure}

Однако, чтобы использовать дополнительную команду \figsource Мне нужно что-то вроде:

\begin{figure}[htbp]
\centering
\includegraphics[width=1\linewidth]{img/fig1.pdf}
\caption{My caption}  
\figsource{Source: \cite{someone2015}}
\end{figure}

Как я могу получить это из org?

Я уже пробовал это#+ATTR_LATEX: \figsource{Source: \cite{someone2015}} без успеха.

1 Ответ

0 голосов
/ 29 мая 2018

Метод с использованием фильтра экспорта

В качестве примера в моем комментарии приведена реализация фильтра «конечного вывода», который помещает дополнительные данные.непосредственно перед `\ end {figure} '- не уверен, что расположение имеет значение.Однако обратите внимание, что предполагается, что дополнительный материал является фиксированной строкой:

* Code                                                        :noexport:

#+begin_src emacs-lisp
  (require 'ox)
  (defun my-custom-figsource (contents backend info)
    (when (eq backend 'latex)
      (replace-regexp-in-string "\\\\end{figure}"
                                "\\\\figsource{Source: \\\\cite{someone2015}}\n\\\\end{figure}" contents)))

  (add-to-list 'org-export-filter-final-output-functions #'my-custom-figsource)

#+end_src

* Figure

#+LABEL: fig:myfigure
#+CAPTION:My caption
[[file:img/fig1.png]]

, которая экспортирует в следующий фрагмент TeX:

\begin{figure}[htbp]
\centering
\includegraphics[width=.9\linewidth]{img/fig1.png}
\caption{\label{fig:org6271d58}
My caption}
\figsource{Source: \cite{someone2015}}
\end{figure}

Работа с различными цитатами в \figsource будетбудь сложнее, и я не знаю, как это сделать с макушки головы.

Метод с использованием # + ATTR_LATEX

В качестве альтернативы,Вы можете использовать атрибут :caption в #+ATTR_LATEX:

* Figure

#+LABEL: fig:myfigure
#+CAPTION:My caption
#+ATTR_LATEX: :caption \caption{\label{fig:myfigure}My caption}\figsource{Source: \cite{foo}}
[[file:img/fig1.png]]

При настройке метки есть некоторое дублирование, но оно локализовано и его довольно легко обслуживать, а метод позволяет использовать разныессылки на источники легко, но я не уверен, как он взаимодействует с метками, сгенерированными в режиме org.

...