我正在写一些文本,通常先有一些文本,然后并排有一些图形/tikz 图片/表格(带有表格或数组环境),按照这个顺序。我使用的命令是
\newcommand{\mycommand}[4][15pt]{%
\begin{minipage}{\linewidth-#4-#1}%
#2
\end{minipage}%
\hfill
\begin{minipage}{#4}
#3
\end{minipage}
}
我的想法是将两者并排放置,以优化水平空间。
我的问题是,如何自动提取第二个小页面的边界框并将其插入到第一个小页面中?以便使用所有水平空间。像这样
\newcommand{\mycommand}[3][15pt]{%
\begin{minipage}{\linewidth-<width of bounding box>-#1}%
#2
\end{minipage}%
\hfill
#3 % extract <width of bounding box>
}
其中 #3 是一个图形、tikzpicture、数组、表格环境,或者可能只是\includegraphics{}
。
有通用的解决方案吗?
答案1
您可以使用sidebyside
tcolorbox。其文档(第 122 页)解释了如何构建一个新mysidebox
命令,该命令根据其内容调整左侧。我刚刚改为调整右侧。我展示了两个示例,一个使用颜色和 amrgins,第二个使用皮肤blankest
来避免所有 toclorbox 线条和颜色。
\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\newsavebox{\mysavebox}
\DeclareTotalTColorBox{\mysidebox}{ O{} +m +m }{
bicolor,colback=white,colbacklower=yellow!10,
fonttitle=\bfseries,center title,
sidebyside,
code={\sbox{\mysavebox}{#3}},
righthand width=\wd\mysavebox,
drop lifted shadow,
#1
}
{#2\tcblower\usebox{\mysavebox}}
\begin{document}
\lipsum[2]
\mysidebox{\lipsum[2]}{%
\begin{tikzpicture}
\path[fill=red!20,draw=red!50!black]
(0,0) node[below]{A} -- (3,1) node[right]{B}
-- (1,4) node[above]{C} -- cycle;
\end{tikzpicture}}
\mysidebox[blankest]{\lipsum[2]}
{\begin{tikzpicture}
\path[fill=red!20,draw=red!50!black]
(0,0) node[below]{A} -- (3,1) node[right]{B}
-- (1,4) node[above]{C} -- cycle;
\end{tikzpicture}}
\end{document}