第一种解决方案

第一种解决方案

这是我上一次问题我想要一个文本块,其(文本宽度和外形)相同宽度作为 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 lefttrim 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}

相关内容