如何将算法和 tikz 绘图(不同类型的对象)并排放置在同一个浮动环境中?

如何将算法和 tikz 绘图(不同类型的对象)并排放置在同一个浮动环境中?

我正在尝试算法tikz' 并排绘制在数字环境。我了解这个问题但我希望为它们添加一个标题。例如,在文本中,图 1a 指的是算法,而图 1b 指的是 tikz 的绘图。

答案1

我推荐使用该subcaption软件包。它与caption(同一作者,感谢 Axel)配合得很好。

\documentclass{article}
\usepackage{algorithm}% http://ctan.org/pkg/algorithm
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx

\usepackage{caption}
\usepackage{subcaption}
\usepackage{tikz}
\begin{document}
\section{foo}
Text

\begin{figure}[!ht]
\begin{subfigure}[b]{.5\linewidth}
\centering
\begin{algorithmic}[1]
  \Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
    \State $r\gets a\bmod b$
    \While{$r\not=0$}\Comment{We have the answer if r is 0}
      \State $a\gets b$
      \State $b\gets r$
      \State $r\gets a\bmod b$
    \EndWhile\label{euclidendwhile}
    \State \textbf{return} $b$\Comment{The gcd is b}
  \EndProcedure
\end{algorithmic}

\caption{Algorithm}\label{fig:alg}
\end{subfigure}%
\begin{subfigure}[b]{.5\linewidth}
\centering
\tikz\draw [fill=red!20] (0,0) rectangle (3,2);
\caption{tikz}\label{fig:tikz}
\end{subfigure}
\caption{Both}\label{fig:both}
\end{figure}

Text \ref{fig:alg} and \ref{fig:tikz} and \ref{fig:both}

\end{document}

在此处输入图片描述

答案2

只是不要将其括algorithmicalgorithm环境中,而是括在minipage;这里我用它varwidth来获取精确的宽度。

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{varwidth,algorithmic}
\begin{document}
\begin{figure}
\centering
\begin{varwidth}[c]{\textwidth}
\begin{algorithmic}
\REQUIRE $n \geq 0 \vee x \neq 0$ 
\ENSURE $y = x^n$ 
\STATE $y \leftarrow 1$ 
\IF{$n < 0$} 
\STATE $X \leftarrow 1 / x$ 
\STATE $N \leftarrow -n$ 
\ELSE 
\STATE $X \leftarrow x$ 
\STATE $N \leftarrow n$ 
\ENDIF 
\WHILE{$N \neq 0$} 
\IF{$N$ is even} 
\STATE $X \leftarrow X \times X$ 
\STATE $N \leftarrow N / 2$ 
\ELSE[$N$ is odd] 
\STATE $y \leftarrow y \times X$ 
\STATE $N \leftarrow N - 1$ 
\ENDIF 
\ENDWHILE 
\end{algorithmic}
\end{varwidth}
\qquad
\includegraphics[width=3cm,height=2cm]{abc}
\caption{A caption}
\end{figure}
\end{document}

在此处输入图片描述

相关内容