我正在从用多标记语言编写的长文档自动生成 LaTex,该文档由名为 Scrivener 的软件包编译。这是一个运行良好的工作流程,但这是我遇到的问题之一。我不想每次编译为 LaTex 时都必须替换/删除大量标题命令。
下面的 MWE 说明了这个问题。
这Figure n:
从包含的图形中删除了标题。但是,它留下了一个空白行,这使得图像间距显得笨拙。有没有一种简单的方法可以删除空白行,而无需在每次使用图形时插入间距调整?谢谢。
\documentclass{memoir}
\usepackage{mwe} % for dummy images
\usepackage[labelformat=empty]{caption} % remove figure captions
\begin{document}
\begin{figure}[!ht]
\centering
\includegraphics[width=0.5\textwidth]{image}
\caption{}
\end{figure}
This is first text after caption.
\end{document}
答案1
memoir
提供了自己的字幕管理接口,与caption
(参见章节10.13 类与caption
包(及其朋友),第 206 页memoir
用户手册)。
但是,您可以更新\caption
以获取其内容,评估参数是否为空,并进行相应的条件:
\documentclass{memoir}
\usepackage{mwe} % for dummy images
\usepackage[labelformat=empty]{caption} % remove figure captions
% http://tex.stackexchange.com/a/58638/5764
\makeatletter
\def\ifemptyarg#1{%
\if\relax\detokenize{#1}\relax % H. Oberdiek
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\makeatother
\let\oldcaption\caption
\AtBeginDocument{%
\renewcommand{\caption}[2][]{%
\ifemptyarg{#2}{}{\oldcaption[#1]{#2}}%
}%
}
\begin{document}
\begin{figure}[!ht]
\centering
\includegraphics[width=0.5\textwidth]{image}
\caption{}
\end{figure}
This is first text after caption.
\newpage
\begin{figure}[!ht]
\centering
\includegraphics[width=0.5\textwidth]{image}
\caption{Some caption}
\end{figure}
This is first text after caption.
\end{document}
\caption
如果您在工作流程中没有使用可选参数,那么重新定义可能会更简单一些:
\AtBeginDocument{%
\renewcommand{\caption}[1]{%
\ifemptyarg{#1}{}{\oldcaption{#1}}%
}%
}
答案2
如果您确实不在任何地方使用标题,请重新定义\caption
为不执行任何操作。
\renewcommand{\caption}{}
我认为它会满足你的要求。