我创建了一个命令来简化我的图形创建过程。我正在使用包添加一个子标题(实际上只是一个parbox
)subcaption
,它将在我的图形右侧添加一些垂直文本(说明图像的来源)。
我几乎已经完成了所有工作,唯一的问题是当我旋转标题时,它的宽度会延伸到与我传递给它的文本一样长。这会导致图形异常高(见示例)。
我需要一种方法来将旋转后的宽度设置subcaptionbox
为图像的高度。在我的例子中,我设置了每幅图像的宽度(基于文本宽度),并让图像的高度遵循纵横比。
我已尝试过:设置 的宽度subcaptionbox
不起作用,我猜它以某种方式被 重置了rotatebox
?我也试过了,但vphantom
没有成功。我当前的代码硬设置了 的宽度parbox
,但我需要它调整到图像的实际高度。
这是我的 MWE:
\documentclass{article}
\usepackage{subcaption}
\usepackage[demo]{graphicx}
\newcommand{\newfigure}[4][]{
\begin{figure}[h]
\includegraphics[width=.8\textwidth]{demo} %normally the image, here just the demo
\subcaptionbox*{}[2cm]{
\rotatebox[origin=t]{90}{
\parbox{5cm}{ %Should be set variably to the height of the image
\scriptsize{#1}
}
}
}
\caption{#3}
\label{#4}
\end{figure}
}
\begin{document}
\newfigure[Source: A potially long and protracted source for the image]{Demo image}{Example caption for the figure}{fig:demo}
\end{document}
答案1
请注意,\subcaptionbox
为下面的子标题保留空间,即使是空白的。
\documentclass{article}
\usepackage{subcaption}
\usepackage[demo]{graphicx}
\usepackage{showframe}
\newsavebox{\nfbox}
\newcommand{\newfigure}[4][]{
\begin{figure}[h]
\savebox\nfbox{\includegraphics[width=.8\textwidth]{demo}}% measure width and height
\usebox\nfbox
\subcaptionbox*{}[\dimexpr \columnwidth-\wd\nfbox]{%
\rotatebox[origin=tc]{90}{%
\parbox{\ht\nfbox}{ %Should be set variably to the height of the image
\scriptsize{#1}%
}%
}%
}%
\caption{#3}
\label{#4}
\end{figure}
}
\begin{document}
\newfigure[Source: A potially long and protracted source for the image]{Demo image}{Example caption for the figure}{fig:demo}
\end{document}