`onlytextwidth` を `columns` のデフォルトの幅にする

`onlytextwidth` を `columns` のデフォルトの幅にする

私の典型的なcolumns環境は次のようになります

\begin{columns}[onlytextwidth]
        ...
\end{columns}

[onlytextwidth]毎回入力しなくても済むように、ドキュメント全体に を設定する方法はありますか?

ムウェ

\documentclass{beamer}

\begin{document}
    \begin{frame}
        \begin{columns}[onlytextwidth]
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}            
        \end{columns}

        \begin{columns}
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}            
        \end{columns}       

    \end{frame}
\end{document}

ここに画像の説明を入力してください

答え1

デフォルトのオプションとして使用する新しい環境(columnsotw以下の例)を定義するonlytextwidthか、定義済みの環境columnsonlytextwidth(他のオプションなし)を使用することもできます。

ここに画像の説明を入力してください

\documentclass{beamer}
\usepackage{lipsum}

\newenvironment{columnsotw}[1][]{\columns[onlytextwidth,#1]}{\endcolumns}

\def\cola{Abc def ghi jkl mno pqr stu vwx z. Abc def ghi jkl mno pqr stu vwx z.}
\def\colb{Abc def ghi jkl.}

\begin{document}
\begin{frame}[fragile]
  \begin{columns}[onlytextwidth,b]
    \column{.4\linewidth}
    \cola
    \column{.4\linewidth}
    \colb
  \end{columns}
  \vfill
  \begin{columnsonlytextwidth}% [b] ???
    \column{.4\linewidth}
    \cola
    \column{.4\linewidth}
    \colb
  \end{columnsonlytextwidth}
  \vfill
  \begin{columnsotw}[b]
    \column{.4\linewidth}
    \cola
    \column{.4\linewidth}
    \colb
  \end{columnsotw}
  \vfill
  \begin{columns}[b]
    \column{.4\linewidth}
    \cola
    \column{.4\linewidth}
    \colb
  \end{columns}
\end{frame}
\end{document}

より優れた定義(オーバーレイ仕様に対応)

\newenvironment<>{columnsotw}[1][]{\columns#2[onlytextwidth,#1]}{\endcolumns}

答え2

新しい環境を作成する代わりに、列環境を再定義することもできます。

\documentclass{beamer}

\makeatletter
\long\def\beamer@newenvnoopt#1#2#3#4{%
    \expandafter\renewcommand\expandafter<\expandafter>\csname#1\endcsname[#2]{#3}%<- here
    \expandafter\long\expandafter\def\csname end#1\endcsname{#4}%
}
\long\def\beamer@newenvopt#1#2[#3]#4#5{%
    \expandafter\renewcommand\expandafter<\expandafter>\csname#1\endcsname[#2][#3]{#4}%<- here
    \expandafter\long\expandafter\def\csname end#1\endcsname{#5}%
}

\renewenvironment<>{columns}[1][]{%
    \begin{actionenv}#2%
        \def\beamer@colentrycode{%
            \hbox to\textwidth\bgroup%
            \leavevmode%
            \hskip-\beamer@leftmargin%
            \nobreak%
            \beamer@tempdim=\textwidth%
            \advance\beamer@tempdim by\beamer@leftmargin%
            \advance\beamer@tempdim by\beamer@rightmargin%
            \hbox to\beamer@tempdim\bgroup%
            \hbox{}\hfill\ignorespaces}%
        \def\beamer@colexitcode{\egroup%
            \nobreak%
            \hskip-\beamer@rightmargin\egroup}%
        \ifbeamer@centered\setkeys{beamer@col}{c}\else\setkeys{beamer@col}{t}\fi%
        \setkeys{beamer@col}{#1, onlytextwidth}% added "onlytextwidth"
        \par%
        \beamer@colentrycode%
        \def\beamer@colclose{}\ignorespaces}%
    {\beamer@colclose\def\beamer@colclose{}\beamer@colexitcode\end{actionenv}}%
\makeatother

\begin{document}
    \begin{frame}
        \begin{columns}[onlytextwidth]
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}            
        \end{columns}

        \begin{columns}
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}            
        \end{columns}       

    \end{frame}
\end{document}

ここに画像の説明を入力してください

答え3

Beamer v3.65 以降には、すべての環境onlytextwidthに自動的に適用できるクラス オプションがあります。columns

\documentclass[onlytextwidth]{beamer}

\begin{document}
    \begin{frame}
        \begin{columns}[onlytextwidth]
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}            
        \end{columns}

        \begin{columns}
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}
            \begin{column}{.5\textwidth}
                \rule{\textwidth}{1cm}
            \end{column}            
        \end{columns}       

    \end{frame}
\end{document}

ここに画像の説明を入力してください

関連情報