fun fibo(x: Int): BigInteger {
tailrec fun fibo(
acc: List<BigInteger>, x: Int
): Pair<List<BigInteger>, BigInteger> =
when {
x < acc.size -> Pair(acc, acc[x])
x == acc.size -> {
val y = acc[x - 1] + acc[x - 2]
Pair(acc + y, y)
}
else ->
fibo(fibo(fibo(acc, x - 2).first, x - 1).first, x)
}
return fibo(listOf(BigInteger.ONE, BigInteger.ONE), x).second
}
我使用上面的方法横向并排显示3张图像。
一切正常,一切都很好。但我想在每个子图像上方(或下方)添加一个小文本。不是标准标题,而是诸如“ A”,“ B”,“ C”之类的单词。
我该怎么做?
答案 0 :(得分:0)
使用mbox
进行子图配置不正确。有用于子图环境的特殊软件包。对于您的特殊情况,我建议使用subcaption
。
\documentclass[a4paper]{article}
\usepackage{graphicx, subcaption}
\begin{document}
\begin{figure}
% The next line is necessary to omit automatic labeling a), b) c)
\captionsetup[subfigure]{labelformat=empty}
\begin{subfigure}{.3\textwidth}
\centering
\includegraphics[height=3cm]{monalisa.jpg}
\caption{A}
\end{subfigure}%
\begin{subfigure}{.3\textwidth}
\centering
\includegraphics[height=3cm]{monalisa.jpg}
\caption{B}
\end{subfigure}%
\begin{subfigure}{.3\textwidth}
\centering
\includegraphics[height=3cm]{monalisa.jpg}
\caption{C}
\end{subfigure}%
\caption{You can still use a global caption for the figure}
\end{figure}
\end{document}
准确地给出了您所描述的内容:水平的三个图像,带有标题A
,B
和C
。行\captionsetup[subfigure]{labelformat=empty}
故意省略了每个图像的自动标签,分别为a)
,b)
和c)
。
但是,您的问题听起来像您可能想使用A
,B
和C
作为标签来在标题中引用它。在这种情况下,请删除\captionsetup...
行,图将像这样
答案 1 :(得分:0)
除了使用已经提出的子图外,还有很多方法可以做到这一点:
1 /使用迷你页
\documentclass{article}
\usepackage{graphicx}
\usepackage{multicol}
\begin{document}
\begin{figure}
\centering
\begin{minipage}{0.2\linewidth}
\centering A\\ \includegraphics[width=\textwidth]{example-image-a}
\end{minipage}%
\hspace{1px}%
\begin{minipage}{0.2\linewidth}
\centering B\\ \includegraphics[width=\textwidth]{example-image-a}
\end{minipage}%
\hspace{1px}%
\begin{minipage}{0.2\linewidth}
\centering C\\ \includegraphics[width=\textwidth]{example-image-a}
\end{minipage}%
\caption{Blah}
\label{materialflowChart}
\end{figure}
注意,我删除了无用的\ mbox {},因为\ includegraphics已经返回了一个TeX框。
类似地,如果您想精细地控制图像间距并真正获得1px的图像间空间,则必须在行尾添加'%'以吞噬该空间并避免使用TeX进行格式化。在您的原始代码中也是如此。
2 /使用表格格式
\begin{figure}
\centering
\begin{tabular}{*{3}{@{\hspace{1px}}c}}
A&B&C\\
\includegraphics[width=0.2\linewidth]{example-image-a}&
\includegraphics[width=0.2\linewidth]{example-image-a}&
\includegraphics[width=0.2\linewidth]{example-image-a}
\end{tabular}
\caption{Blah}
\label{materialflowChart}
\end{figure}
使用@ {\ hspace {1px}}控制列间距。在列之前插入@命令,并删除常规的列间距。
3 /将multicolumns与multicol软件包一起使用
您可以在一个微型页面中定义一个包含多列的框
\begin{figure}
\centering
\begin{minipage}{0.7\linewidth}
\setlength\columnsep{1px}
\begin{multicols}{3}
\centering A\\ \includegraphics[width=\linewidth]{example-image-a}\\
\columnbreak
\centering B\\ \includegraphics[width=\linewidth]{example-image-a}\\
\columnbreak
\centering C\\ \includegraphics[width=\linewidth]{example-image-a}
\end{multicols}
\end{minipage}
\caption{Blah}
\label{materialflowChart}
\end{figure}
\ columnbreak开始一个新列。 \ columnsep是控制列间距的长度。列宽是使用此参数,列数和最小页面宽度来计算的。