编辑
egreg 提出的答案对我来说不起作用:
当将 更改outer sep
为时outer sep=-10pt
,不会移动图像,而只是移动标签,并且空白仍然存在。
我猜这表明白色空间是在 tikzpicture 环境之外的某处生成的。
有任何想法吗?
最初的问题
我想将多个子图放在一个图形中的多行中。由于我不希望几行图像被子图的子标题分隔开,因此我定义了一个宏,使用 tikz 在图像上放置标签并使用以下命令\phantomsubcaption
:
\newcommand{\customcaption}[4]%
{%
{%
\tikz%
{%
\node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[#1]{#2}};%
\begin{scope}[x={(image.south east)},y={(image.north west)}]%
\draw[white] (0,0) node [font=\footnotesize, anchor=south west] {#3};%
\end{scope}%
}%
\phantomsubcaption\label{#4}%
}%
}%
% Macro to typeset a label onto a picture and putting a \phantomlabel for reference
% Arguments are: #1 Dimension of the graphic, #2 file path, #3 drawn label, #4 reference label
但是,宏会在图像周围产生空白,我无法消除。
我需要做什么来防止出现空白?
\includegraphics
这里是用 tikz 绘制的矩形替换的 MWE :
\documentclass[12pt,oneside,a4paper]{book}
%
\usepackage{tikz}
\usepackage[font+=footnotesize, subrefformat=parens]{subcaption}
%
\newcommand{\customcaption}[2]%
{%
{%
\tikz%
{%
\node[anchor=south west,inner sep=0, fill=black, shape=rectangle, minimum size=3cm] (image) at (0,0) {};%
\begin{scope}[x={(image.south east)},y={(image.north west)}]%
\draw[white] (0,0) node [font=\footnotesize, anchor=south west] {#1};%
\end{scope}%
}%
\phantomsubcaption\label{#2}%
}%
}%
%
\begin{document}%
%
\begin{figure}%
\centering
\customcaption{(a)}{a}%
\customcaption{(b)}{b}%
\customcaption{(c)}{c}%
\end{figure}%
%
\end{document}
答案1
你忘了outer sep
。
不要对行尾着迷!;-)
\documentclass[12pt,oneside,a4paper]{book}
\usepackage{tikz}
\usepackage[font+=footnotesize, subrefformat=parens]{subcaption}
\newcommand{\customcaption}[2]{{%
\begin{tikzpicture}
\node[
anchor=south west,
inner sep=0,
outer sep=-0.2pt,
fill=black,
shape=rectangle,
minimum size=3cm
] (image) at (0,0) {};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw[white] (0,0) node [font=\footnotesize, anchor=south west] {#1};
\end{scope}
\end{tikzpicture}%
\phantomsubcaption\label{#2}%
}}
\begin{document}
\begin{figure}
\centering
\customcaption{(a)}{a}%
\customcaption{(b)}{b}%
\customcaption{(c)}{c}%
\end{figure}
\end{document}
内的空格tikzpicture
将被忽略(但当然,出于语法目的,它们是必需的)。因此,您只需要%
在 之后\end{tikzpicture}
。
或之后不需要%
有。\begin{figure}
\end{figure}