In case you installed TeX Live from the packages of a Linux distro: Most distros split less-used LaTeX-packages into separate (Linux-distro)-packages. From the link in your question I assume that you are running Arch Linux. In this case you need to install the texlive-latexextra
package which contains subfigure.sty. If you are using a different distro, the necessary package might be named differently (e.g. texlive-latex-extra
in Debian/Ubuntu).
Also, as Peter notes, the subfigure
package is depreciated.
First: you have included floatrow
twice.
You can use ffigbox
inside a figure
environment:
\documentclass[a4paper,12pt]{scrartcl}
\usepackage{tikz,floatrow,hyperref}
\usepackage[hypcap=true]{caption}
\usepackage[hypcap=true]{subcaption}
\usepackage[all]{hypcap} %link to top of figure
% caption format
\captionsetup{format=hang,labelsep=space,indention=-2cm,labelfont=bf,width=.9\textwidth,skip=.5\baselineskip}
\captionsetup[sub]{labelfont=bf,labelsep=period,subrefformat=simple,labelformat=simple}
%center both ?
\floatsetup[figure]{objectset=centering}
\floatsetup[subfigure]{objectset=centering}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\draw[fill=blue] (0,0) rectangle (4,4);
\end{tikzpicture}
\caption{First}
\end{figure}
\ffigbox[\FBwidth]{%
\begin{subfloatrow}
\ffigbox[0.5\textwidth]{%
\begin{tikzpicture}
\draw[fill=blue] (0,0) rectangle (4,4);
\end{tikzpicture}}{\caption{First}}
\ffigbox[0.5\textwidth]{%
\begin{tikzpicture}
\draw[fill=blue] (0,0) rectangle (5,5);
\end{tikzpicture}}{\caption{Second}}%
\end{subfloatrow}%
}{\caption{Describing both subfigures}}
\end{document}
Allergy notice: some parts of the above code might be nuts (or needless)
To answer your questions in comments (from the floatrow
package manual):
Another command which creates figures - \ffigbox
- puts caption below contents. The default width of caption equals to the width of text. [...] a float box, created by the
\ffigbox
command looks similar to the plain figure environment. But if you set, for example, the option [\FBwidth]
[...] you’ll get a caption width equal to the width of picture [...]
There are similar boxes where the caption is placed elsewhere (eg: \fcapside
places it beside the figure). As far as I know \floatsetup[subfigure]{objectset=centering}
doesn't effect the subfigure
environment of the subcaption
package but these boxes.
If you hate this stack you can hope that is only my overcomplicated solution and there are better ones. Or you may want to try xpatch
(or etoolbox
) to do the "global" subcaption centering stuff (instead of using floatrow
for that) as a "hail mary"...
\usepackage{xpatch}
\makeatletter
% \subcaption@minipage is the last macro call in \subfigure (and \begin{subfigure})
\xapptocmd{\subcaption@minipage}{\centering}{}{}
\makeatother
Best Answer
You missed one
%