围绕 TikZ 图形添加标题

围绕 TikZ 图形添加标题

我有一个如下所示的 TikZ 图形。该图形还有一个标题。

我希望标题填满右下角的空白处,并延伸到它当前占据的空间。

有没有办法做到这一点?

谢谢!

如图

答案1

以下是可以执行的操作的模型。最简单的方法是设置标题手动而不是依赖于\caption,因为\caption会干扰对齐:

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\begin{document}
\tableofcontents
\listoffigures
\section{A section}
\lipsum[1]

\begin{figure}[t]
  % Your images
  \rule{150pt}{50pt} \hfill \rule{150pt}{50pt} \par\bigskip  
  \rule{150pt}{50pt} \par

  % The caption
  \vspace*{\dimexpr-\parskip-50pt\relax}% Skip backwards over last left-aligned image
  \parshape 6 % Set flow of caption: 6 lines...
    .5\textwidth .5\textwidth % First 5 start @ .5\textwidth with
    .5\textwidth .5\textwidth % a width of .5\textwidth
    .5\textwidth .5\textwidth
    .5\textwidth .5\textwidth
    .5\textwidth .5\textwidth
    0pt \textwidth % last (sixth) line restores regular flow ad infinitum
  \makeatletter
  % Setting of actual caption (this is taken from latex.ltx)
  \refstepcounter\@captype% Increase float/caption counter
  \addcontentsline{\csname ext@\@captype\endcsname}{\@captype}% Add content to "List of..."
    {\protect\numberline{\csname the\@captype\endcsname}{ToC entry}}%
  \csname fnum@\@captype\endcsname: % Float caption + #
  \makeatother
  % Actual caption
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
    Pellentesque eget lectus a magna scelerisque iaculis. Duis ac mi sit amet 
    ligula bibendum feugiat. Aliquam vehicula sem id mauris lacinia suscipit. 
    Curabitur nec ipsum mi. Nulla elit mi, rutrum sed placerat id, congue non 
    orci. Proin non orci et metus sodales tincidunt sit amet non mi. Vestibulum 
    libero nibh, blandit rhoncus tempus convallis, scelerisque a dui. Duis 
    ullamcorper malesuada metus eget dapibus. Nam et luctus mauris. Aliquam 
    nulla turpis, adipiscing sed viverra a, ultrices id nibh. Etiam tincidunt 
    dui in magna vestibulum aliquam. Sed sagittis lacinia lectus sed malesuada. 
    Nunc tristique sagittis urna vel interdum. Donec id turpis neque, et placerat 
    sem. Curabitur nec tincidunt leo. Nam lobortis bibendum enim, semper 
    scelerisque erat molestie at.%
\end{figure}

\lipsum[2]
\end{document}

设置标题的步骤如下:

  1. 垂直向上移动以便与最后一幅左对齐的图像处于同一水平;
  2. 设置段落样式,缩进一定行数(使用\parshape);
  3. 做必要的 ToC 级别的事情(取自latex.ltx); 和
  4. 设置实际的标题。

上述解决方案足够通用,您也可以在table环境中使用它。此外,它可以压缩为类似于wrapfigure(来自wrapfig包裹) 并附带一些参数来指定适当的修改。但是,由于这似乎是一次性使用的,因此按原样使用可能就足够了。

答案2

我遇到了同样的问题,但不是 TikZ 图形,而是使用\includegraphics和子图的普通图形。此处的一个问题是垂直对齐子图,同时将标签保持在子图下方。这里,adjustbox 包有所帮助。我知道 subfig 在 l2tabu 中列出,建议使用 subcaption 作为替代品。但我没有让它与 subcaption 一起工作,因为 adjustbox 工作得不好。实际的酷包装代码是从上面复制的。因此,这个答案更多地有助于与子图的集成,而不是解决包装问题。

\documentclass{article}
\usepackage[caption=false]{subfig}
\usepackage[export]{adjustbox}
\usepackage{lipsum}

\begin{document}
\begin{figure}
  \begin{center}
    \subfloat[][]{\rule{0.49\textwidth}{5cm}}\hfill
    \subfloat[][]{\rule{0.49\textwidth}{5cm}}\par
    \subfloat[][]{\adjustbox{valign=t}{\rule{0.245\textwidth}{2cm}}}\hfill
    \subfloat[][]{\adjustbox{valign=t}{\rule{0.245\textwidth}{2cm}}}\hfill
    \subfloat[][]{\adjustbox{valign=t}{\rule{0.49\textwidth}{5cm}}}\par
  \end{center}

  % The caption
  \vspace*{\dimexpr-\parskip-2.9cm\relax}% Skip backwards over last left-aligned image
  \parshape 8 % Set flow of caption
  0pt 0.48\textwidth %
  0pt 0.48\textwidth %
  0pt 0.48\textwidth
  0pt 0.48\textwidth
  0pt 0.48\textwidth
  0pt 0.48\textwidth
  0pt 0.48\textwidth
  0pt \textwidth % last line restores regular flow ad infinitum
  \makeatletter
  % Setting of actual caption (this is taken from latex.ltx)
  \refstepcounter\@captype% Increase float/caption counter
  \addcontentsline{\csname ext@\@captype\endcsname}{\@captype}% Add content to "List of..."
  {\protect\numberline{\csname the\@captype\endcsname}{ToC entry}}%
  \csname fnum@\@captype\endcsname: % Float caption + #
  \makeatother
  \protect\lipsum*[2]
\end{figure}
\end{document}

渲染结果为:

包裹式标题

相关内容