我想说明一个故意填满的进度条。我使用\progressbar
和tikz
,但相对定位 ( east
) 在 X 方向上总是有点偏差,我不知道为什么。请考虑以下示例:
\documentclass{beamer}
\usepackage{progressbar}
\begin{document}
\begin{frame}
\begin{overprint}
\begin{tikzpicture}[remember picture]
\node<1-2> (progressbar) [inner sep=0,outer sep=0] {\progressbar[heightr=1, width=0.3\textwidth, emptycolor=white, filledcolor=red]{1}};
\end{tikzpicture}
\tikz[remember picture] \draw<2>[overlay] node at (progressbar.east) [inner sep=0,outer sep=0] {\progressbar[heightr=1, width=0.1\textwidth, linecolor=white!0, emptycolor=white, filledcolor=red, subdivisions=1, roundnessr=0]{1}};
\end{overprint}
\end{frame}
\end{document}
第一张幻灯片(裁剪后)如下所示:
第二张幻灯片(裁剪后)如下所示(请注意,第二张幻灯片的\progressbar
比例约为 85%,而不是 100%):
我怎样才能将第二个\progressbar
相对于第一个定位,以便它们不重叠(忽略难看的白色边框)?
答案1
像这样?
问题是,默认情况下,放置在 处的第二个进度条的中心是(progressbar.east)
。 您希望将左边缘置于该位置,这可以通过使用[anchor=west]
该节点来实现。 即:
\documentclass{beamer}
\usepackage{progressbar}
\begin{document}
\begin{frame}
\begin{overprint}
\begin{tikzpicture}[remember picture]
\node<1-2> (progressbar) [inner sep=0,outer sep=0] {\progressbar[heightr=1, width=0.3\textwidth, emptycolor=white, filledcolor=red]{1}};
\end{tikzpicture}
\tikz[remember picture] \draw<2>[overlay] node[anchor=west] at (progressbar.east) [inner sep=0,outer sep=0] {\progressbar[heightr=1, width=0.1\textwidth, linecolor=white!0, emptycolor=white, filledcolor=red, subdivisions=1, roundnessr=0]{1}};
\end{overprint}
\end{frame}
\end{document}
旁注:我不太喜欢该代码,因为它在节点内使用 tikz 代码(\progressbar
命令确实是完整的tikzpicture
),但我不知道在这种情况下如何避免这种情况。
更新
代码可以稍微改进一下。您可以用tikzpicture
与第一个相同的方式绘制第二个叠加层。这样就不再需要remember picture
/ overlay
,并且需要的编译次数也少了一次:
\documentclass{beamer}
\usepackage{progressbar}
\begin{document}
\begin{frame}
\begin{overprint}
\begin{tikzpicture}
\node<1-2> (progressbar) [inner sep=0,outer sep=0] {\progressbar[heightr=1, width=0.3\textwidth, emptycolor=white, filledcolor=red]{1}};
\node<2>[anchor=west] at (progressbar.east) [inner sep=0,outer sep=0] {\progressbar[heightr=1, width=0.1\textwidth, linecolor=white!0, emptycolor=white, filledcolor=red, subdivisions=1, roundnessr=0]{1}};
\end{tikzpicture}
\end{overprint}
\end{frame}
\end{document}