org-mode导出数字

时间:2018-05-28 20:55:37

标签: emacs latex org-mode

我正在使用我大学提供的TeX风格,其中包含一个描述人物来源的特殊命令。由于某些未知原因,他们决定将来源和标题放在不同的位置。所以我们有一个名为\figsource的附加命令。

我使用以下行将图形插入到我的组织文件中:

#+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}

我如何从组织中获取此信息?

我已经尝试了#+ATTR_LATEX: \figsource{Source: \cite{someone2015}}但没有成功。

1 个答案:

答案 0 :(得分:2)

使用导出过滤器的方法

在我的评论中充实了这个建议,这里是一个“最终输出”过滤器的实现,它将额外的东西放在`\ 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-mode生成的标签交互