Secuencia de control no definida en la sangría \beamer@leftmargin

Secuencia de control no definida en la sangría \beamer@leftmargin

Según el ejemplo dehttp://texdoc.net/texmf-dist/doc/latex/beamer/beameruserguide.pdf#subsubsection.8.2.2El siguiente código creo que debería funcionar:

\documentclass{beamer}
\usepackage{lipsum}

\begin{document}

\begin{frame}{E}
\hskip-\beamer@leftmargin
\lipsum[2]
\end{frame}

\end{document}

Sin embargo, la compilación pdflatex -synctex=1 -interaction=nonstopmode test.texfalla con un error de subj en la línea 180 del registrohttps://pastebin.com/HmRdN0Vc.

¿Alguien puede explicar qué está pasando aquí?

Respuesta1

@normalmente no puede ser parte de un nombre de comando porque tiene el código cat 12 (otro), mientras que los caracteres del nombre del comando deben tener el código cat 11 (letra). La solución es envolver su marco \makeatletter ... \makeatotherpara cambiar el código cat @correctamente (ver tambiénesta pregunta):

\makeatletter
\begin{frame}{E}
\hskip-\beamer@leftmargin
\lipsum[2]
\end{frame}
\makeatother

En cuanto a la cuestión del uso de estas macros dentro del marco, beamerno parece procesar el contenido del marco en el modo de creación de párrafos normal, sino que lee su contenido en forma de argumento de una llamada de macro. En ese momento, todos los códigos de cat dentro del marco se fijan y ya no se pueden cambiar. \makeatletterpor lo tanto no tendrá ningún efecto. Sin embargo , existe una opción fragilepara permitir contenidos con cambios de código cat:

\begin{frame}[fragile]{E}
\makeatletter
\hskip-\beamer@leftmargin
\makeatother
\lipsum[2]
\end{frame}

información relacionada