
例によるとhttp://texdoc.net/texmf-dist/doc/latex/beamer/beameruserguide.pdf#subsubsection.8.2.2次のコードは動作すると思います:
\documentclass{beamer}
\usepackage{lipsum}
\begin{document}
\begin{frame}{E}
\hskip-\beamer@leftmargin
\lipsum[2]
\end{frame}
\end{document}
pdflatex -synctex=1 -interaction=nonstopmode test.tex
しかし、ログの180行目でsubjエラーが発生してコンパイルが失敗するhttps://pastebin.com/HmRdN0Vc。
ここで何が間違っているのか誰か説明できますか?
答え1
@
通常、コマンド名の一部にすることはできません。これは、catcode 12 (その他) を持つためです。一方、コマンド名の文字は catcode 11 (文字) を持つ必要があります。解決策は、フレームを で囲んで、\makeatletter ... \makeatother
catcode を@
適切に変更することです (こちらも参照)。この質問):
\makeatletter
\begin{frame}{E}
\hskip-\beamer@leftmargin
\lipsum[2]
\end{frame}
\makeatother
フレーム内でこれらのマクロを使用する問題については、beamer
通常の段落構築モードではフレームのコンテンツは処理されないようですが、マクロ呼び出しの引数の形式でそのコンテンツが読み込まれます。その時点では、フレーム内のすべての catcode は固定されており、変更できなくなります。\makeatletter
したがって、効果はありません。fragile
ただし、catcode の変更を含むコンテンツを許可するオプションがあります。
\begin{frame}[fragile]{E}
\makeatletter
\hskip-\beamer@leftmargin
\makeatother
\lipsum[2]
\end{frame}