通过 beamer 和 picture 环境使用 strip@pt 来使用 \textwidth

通过 beamer 和 picture 环境使用 strip@pt 来使用 \textwidth

好吧,我承认我还没有尝试过没有 Beamer 的 MWE。

我的目标是使用例如\textwidth图片环境,我的总体目标是在图片环境中包含.eps 文件的几个矩形部分。

我试图遵循@Qrrbrbirlbel 的示例: 如何在图片环境中使用 \textwidth(或任何变量)

但是我无法将他的几何包选项与 Beamer 一起使用(不确定这是否是问题所在,但我猜不是)。

这是MWE:

\documentclass[compress,red,notes]{beamer}

\begin{document}

\frame{\frametitle{An overview to constraint-based modeling}

\makeatletter
\def\strippt{\strip@pt}
\makeatother

\newsavebox{\toynet}
\savebox{\toynet}{  
\includegraphics*[width=\textwidth, viewport=0 418 708 718, clip=true]
{SmatExample}  }

\newsavebox{\toySmat}
\savebox{\toySmat}{
\includegraphics*[width=\textwidth, viewport=0 0 708 418, clip=true]
{SmatExample} }

\newsavebox{\FBAgeom}

\begin{picture}(\strippt\textwidth, \strippt\textheight)
\put(0,\strippt\textheight){\usebox{\toynet}}

\end{picture}
} % end of \frame

\end{document}

当我尝试编译它时,出现以下错误:

No file test.nav.
<SmatExample.eps> <SmatExample.eps>
! Undefined control sequence.
\strippt ->\strip
                  @pt
l.27 }
       % end of \frame

这是我在使用同一图像时遇到的另一个问题(如果您想下载该图像以与 MWE 配合使用):

如何正确剪辑带有 includegraphics 和 beamer 列的视口?

请注意,在我当前的示例中,我尚未尝试使用\textwidth或的正确系数\textheight

答案1

软件包picture扩展了环境和相关命令,以允许在其参数中picture使用长度而不是因子:\unitlength

\documentclass[compress,red,notes]{beamer}
\usepackage{picture}

\begin{document}

\frame{\frametitle{An overview to constraint-based modeling}

\newsavebox{\toynet}
\savebox{\toynet}{
\includegraphics*[width=\textwidth, viewport=0 418 708 718, clip=true]
{SmatExample}  }

\newsavebox{\toySmat}
\savebox{\toySmat}{
\includegraphics*[width=\textwidth, viewport=0 0 708 418, clip=true]
{SmatExample} }

\newsavebox{\FBAgeom}

\begin{picture}(\textwidth, \textheight)
  \put(0,\textheight){\makebox(\textwidth,0)[t]{\usebox{\toynet}}} 
\end{picture}
} % end of \frame
\end{document}

结果

回答问题的错误

! Undefined control sequence.
\strippt ->\strip
                  @pt

这是一个典型的错误,如果@有错误的类别代码。\makeatletter并且\makeatother无法在正常框架中工作,因为框架的内容已经被解析和标记化,类别代码已更改。请将其移出\makeatletter框架\makeatother或使用选项fragile

\begin{frame}[fragile]
  \frametitle{...}

  \makeatletter
  \def\strippt{\strip@pt}
  \makeatother
  ...
\end{frame}

相关内容