这是我上一次问题我想要一个文本块,其(文本宽度和外形)相同宽度作为 beamer 块,但它不起作用。beamer 块的默认定义是这里。他们使用类似的东西\begin{beamercolorbox}[colsep*=.75ex]{block title}
。但如果我使用这个,盒子就不再正确居中了。
\documentclass{beamer}
\usetheme{Berlin}
\usepackage{tikz}
\begin{document}
% as expected
\begin{frame}{Test}
\begin{block}{Test}
Test
\end{block}
\tikzstyle{myBox} = [draw=none, fill=green,
rectangle,inner sep=10pt,align=left,minimum width=\textwidth,text width=0.8\textwidth]
\begin{centering}
\begin{tikzpicture}
\node [myBox]{dsdsadsad kdjskdj sdksdk sdks dksjkdj skdjksdjksjdksjdksjdksjdksa fjdjf dkfjdkfjdkfj kdjfkdfjkdsjfkdjf};
\end{tikzpicture}%
\end{centering}
%
\begin{block}{Test}
Test
\end{block}
\end{frame}
\end{document}
我的目的是模仿投影仪块的下部。我使用 tikz 图片,因为我想更改透明度和其他内容。
我想避免使用额外的软件包。有没有办法用 TikZ 来实现?也许是 beamercolorbox?
答案1
您可以使用新的 tcolorbox 内部主题(https://www.ctan.org/pkg/beamertheme-tcolorbox)。此主题的一个特点是 tcolorbloxes 将具有与普通投影仪块相同的外观和感觉(宽度、尖角/圆角、阴影)。
它通常也会使用与投影仪块相同的颜色,但是如果您更喜欢可爱的绿色,您可以覆盖它:)
\documentclass{beamer}
\usetheme{Berlin}
\useinnertheme{tcolorbox}
\begin{document}
% as expected
\begin{frame}{Test}
\begin{block}{Test}
Test
\end{block}
\begin{tcolorbox}[colback=green]
dsdsadsad kdjskdj sdksdk sdks dksjkdj skdjksdjksjdksjdksjdksjdksa fjdjf dkfjdkfjdkfj kdjfkdfjkdsjfkdjf
\end{tcolorbox}%
%
\begin{block}{Test}
Test
\end{block}
\end{frame}
\end{document}
答案2
下一个片段复制自beameruserguide
:
这意味着彩色框比 更宽\textwidth
。因此,当您使用\textwidth
内部TikZ
框声明时,您固定的是其总宽度,而不是其外部宽度。
如果你想在里面使用特殊的盒子beamer
我建议使用tcolorbox
. 针对您的示例,可能的解决方案如下
\documentclass{beamer}
\usetheme{Berlin}
\usepackage{tikz}
\usepackage[skins,breakable]{tcolorbox}
\usepackage{lipsum}
\begin{document}
\begin{frame}{Test}
\begin{block}{Test}
dsdsadsad kdjskdj sdksdk sdks dksjkdj skdjksdjksjdksjdksjdksjdksa fjdjf dkfjdkfjdkfj kdjfkdfjkdsjfkdjf
\end{block}
\begin{centering}
\begin{tcolorbox}[enhanced, arc = 0pt, frame hidden, left=1pt, right=1pt, oversize, colback=green]
dsdsadsad kdjskdj sdksdk sdks dksjkdj skdjksdjksjdksjdksjdksjdksa fjdjf dkfjdkfjdkfj kdjfkdfjkdsjfkdjf
\end{tcolorbox}%
\end{centering}
%
\begin{block}{Test}
Test
\end{block}
\end{frame}
\end{document}
答案3
这里有两个解决方案,使用 TikZ 并利用在每边block
使用水平额外边距的事实。.75ex
第一种解决方案
在这里,我通过环境放大文本宽度,columns
然后插入您的tikzpicture
使用\textwidth
。
\documentclass{beamer}
\usetheme{Berlin}
\usepackage{tikz}
\begin{document}
% First solution
\tikzset{myBox/.style={draw=none,fill=green,rectangle,inner sep=10pt,
align=left,minimum width=\textwidth,text width=0.8\textwidth}}
\begin{frame}{Test}
\begin{block}{Test}
Test
\end{block}
\pgfmathsetmacro\myw{\textwidth+1.5ex}
\begin{columns}
\column{\myw pt}
\begin{tikzpicture}
\node [myBox]{dsdsadsad kdjskdj sdksdk sdks dksjkdj
skdjksdjksjdksjdksjdksjdksa fjdjf dkfjdkfjdkfj
kdjfkdfjkdsjfkdjf};
\end{tikzpicture}%
\end{columns}
\begin{block}{Test}
Test
\end{block}
\end{frame}
\end{document}
\documentclass{beamer}
\usetheme{Berlin}
\usepackage{tikz}
第二种解决方案
在这里,我使用trim left
和trim right
来放大tikzpicture
远处\textwidth
,并将固定node
在上west
。
\documentclass{beamer}
\usetheme{Berlin}
\usepackage{tikz}
\begin{document}
% Second solution
\tikzset{
myPict/.style={trim left=.75ex,trim right=.75ex},
myBox2/.style={line width=0,anchor=west,draw=none,fill=green,
rectangle,inner sep=10pt,align=left,minimum width=\textwidth+1.5ex,
text width=0.8*(\textwidth+1.5ex)},
}
\begin{frame}{Test2}
\begin{block}{Test2}
Test2
\end{block}
\begin{tikzpicture}[myPict]
\node [myBox2] {dsdsadsad kdjskdj sdksdk sdks dksjkdj
skdjksdjksjdksjdksjdksjdksa fjdjf dkfjdkfjdkfj kdjfkdfjkdsjfkdjf};
\end{tikzpicture}
\begin{block}{Test2}
Test2
\end{block}
\end{frame}
\end{document}