
Nach Beispiel aushttp://texdoc.net/texmf-dist/doc/latex/beamer/beameruserguide.pdf#subsubsection.8.2.2Ich denke, der folgende Code sollte funktionieren:
\documentclass{beamer}
\usepackage{lipsum}
\begin{document}
\begin{frame}{E}
\hskip-\beamer@leftmargin
\lipsum[2]
\end{frame}
\end{document}
Die Kompilierung schlägt jedoch pdflatex -synctex=1 -interaction=nonstopmode test.tex
mit dem Betrefffehler in Zeile 180 des Protokolls fehlhttps://pastebin.com/HmRdN0Vc.
Kann jemand erklären, was hier schief läuft?
Antwort1
@
kann normalerweise nicht Teil eines Befehlsnamens sein, da es den Catcode 12 (anderes) hat, während Befehlsnamenzeichen den Catcode 11 (Buchstabe) haben müssen. Die Lösung besteht darin, Ihren Rahmen einzuschließen, \makeatletter ... \makeatother
um den Catcode von @
richtig zu ändern (siehe auchdiese Frage):
\makeatletter
\begin{frame}{E}
\hskip-\beamer@leftmargin
\lipsum[2]
\end{frame}
\makeatother
Was die Verwendung dieser Makros innerhalb des Rahmens betrifft, beamer
scheint es den Inhalt des Rahmens nicht im normalen Absatzerstellungsmodus zu verarbeiten, sondern liest seinen Inhalt in Form des Arguments eines Makroaufrufs. In diesem Moment sind alle Catcodes innerhalb des Rahmens festgelegt und können nicht mehr geändert werden. \makeatletter
Daher hat dies keine Auswirkungen. Es gibt fragile
jedoch eine Option, um Inhalte mit Catcode-Änderungen zuzulassen:
\begin{frame}[fragile]{E}
\makeatletter
\hskip-\beamer@leftmargin
\makeatother
\lipsum[2]
\end{frame}