Конфликт resizebox и дословного режима

Nov 08 2020

Мне нужно использовать resizebox вместо дословного режима. Есть ли конфликт между использованием глагольного режима внутри окна изменения размера? Если вы посмотрите на первый столбец таблицы, он всегда добавляется |в конце каждого текста. Я понятия не имею об этом. Если я не добавлю размер, это не проблема, поскольку они прикреплены.

Как я могу исправить эту проблему?

\documentclass{beamer}
\begin{document}


\frame{Operatorler}
    \resizebox{\textwidth}{!}{
    \begin{tabular}{lll}
        \textbf{test}  & \textbf{test}   &   \textbf{test}\\
        \verb|+|  & toplama     & a\\
        \verb|−|  & çıkarma     & a\\
        \verb|*|  & çarpma      & a\\
        \verb|/|  & bölme       & a\\
        \verb|%|  & bölme sonrası kalan (mod alma işlemi)   & a\\
        \verb|++| & artırma     & a\\
        \verb|--| & azaltma     & a\\
    \end{tabular}
    } % end of scope of "\resizebox"  directive
    \framebreak

    \begin{tabular}{lll}
        \textbf{test}  & \textbf{test}   &   \textbf{test}\\
        \verb|+|  & toplama     & a\\
        \verb|−|  & çıkarma     & a\\
        \verb|*|  & çarpma      & a\\
        \verb|/|  & bölme       & a\\
        \verb|%|  & bölme sonrası kalan (mod alma işlemi)   & a\\
        \verb|++| & artırma     & a\\
        \verb|--| & azaltma     & a\\
    \end{tabular}
\end{document}

Он генерирует:

Ответы

2 egreg Nov 07 2020 at 23:14

Вы не можете использовать \verbв аргументе другой команды, поэтому вы не можете этого сделать, \resizeboxесли материал содержит \verb.

Однако вы можете сначала создать коробку, а затем изменить ее размер.

\documentclass{beamer}

\newsavebox{\tablebox}

\begin{document}

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

\begin{lrbox}{\tablebox}
    \begin{tabular}{lll}
        \textbf{test}  & \textbf{test}   &   \textbf{test}\\
        \verb|+|  & toplama     & a\\
        \verb|-|  & çıkarma     & a\\
        \verb|*|  & çarpma      & a\\
        \verb|/|  & bölme       & a\\
        \verb|%|  & bölme sonrası kalan (mod alma işlemi)   & a\\
        \verb|++| & artırma     & a\\
        \verb|--| & azaltma     & a\\
    \end{tabular}
\end{lrbox}
\resizebox{\textwidth}{!}{\usebox{\tablebox}}

\end{frame}

\end{document}

Я заменил (U + 2212), что не имеет смысла в данном контексте, на дефис.

Вам действительно нужно изменить размер таблицы? Если он оказывается шире, чем ширина текста, лучше использовать шрифт меньшего размера.

Я бы рекомендовал также избегать синтаксиса

\frame{Title}{
  <contents>
}

и использовать лучший синтаксис

\begin{frame}
\frametitle{Title}
<contents>
\end{frame}

это также позволяет добавлять такие параметры, как fragile(для случаев, когда фрейм содержит дословный материал).

Кроме того, \verbможно вообще избежать и

    \begin{tabular}{lll}
        \textbf{test}  & \textbf{test}   &   \textbf{test}\\
        \texttt{+}  & toplama     & a\\
        \texttt{-}  & çıkarma     & a\\
        \texttt{*}  & çarpma      & a\\
        \texttt{/}  & bölme       & a\\
        \texttt{\%}  & bölme sonrası kalan (mod alma işlemi)   & a\\
        \texttt{++} & artırma     & a\\
        \texttt{--} & azaltma     & a\\
    \end{tabular}

будет такой же результат. Только %нужно убежать.

2 StevenB.Segletes Nov 08 2020 at 01:49

Вы можете использовать, verbatimboxчтобы сохранить содержимое в виде коробки, даже до входа в рамку.

\documentclass{beamer}
\usepackage{verbatimbox}
\begin{document}
\begin{myverbbox}{\Percent}%\end{myverbbox}

\begin{frame}
\frametitle{Operatorler}
\resizebox{\textwidth}{!}{%
\begin{tabular}{lll}
    \textbf{test}  & \textbf{test}   &   \textbf{test}\\
    \texttt{+}  & toplama     & a\\
    \texttt{-}  & çıkarma     & a\\
    \texttt{*}  & çarpma      & a\\
    \texttt{/}  & bölme       & a\\
    \Percent  & bölme sonrası kalan (mod alma işlemi)   & a\\
    \texttt{++} & artırma     & a\\
    \texttt{--} & azaltma     & a\\
\end{tabular}
}
\end{frame}
\end{document}

leandriis Nov 08 2020 at 16:50

Вместо того, чтобы пытаться изменить размер таблицы, чтобы сделать ее равной ширине текста, я увеличил размер шрифта до \largeи использовал tabular*в сочетании с \extracolsep{\fill}}:

\documentclass{beamer}

\begin{document}

\begin{frame}[fragile]
\frametitle{Operatorler}
\large
    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lll}
        \textbf{test}  & \textbf{test}   &   \textbf{test}\\
        \verb|+|  & toplama     & a\\
        \verb|-|  & çıkarma     & a\\
        \verb|*|  & çarpma      & a\\
        \verb|/|  & bölme       & a\\
        \verb|%|  & bölme sonrası kalan (mod alma işlemi)   & a\\
        \verb|++| & artırma     & a\\
        \verb|--| & azaltma     & a\\
    \end{tabular*}

\end{frame}

\end{document}

Без использования, \verbно с \ttfamily:

\documentclass{beamer}
\usepackage{array}
\begin{document}

\begin{frame}
\frametitle{Operatorler}
\large
    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}>{\ttfamily}lll}
        \sffamily\textbf{test}  & \textbf{test}   &   \textbf{test}\\
        +  & toplama     & a\\
        -  & çıkarma     & a\\
        *  & çarpma      & a\\
        /  & bölme       & a\\
        \% & bölme sonrası kalan (mod alma işlemi)   & a\\
        ++ & artırma     & a\\
        -- & azaltma     & a\\
    \end{tabular*}

\end{frame}

\end{document}