我正在使用我大学提供的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}}
但没有成功。
答案 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生成的标签交互