Изменение размера таблицы из внешнего файла latex

Изменение размера таблицы из внешнего файла latex

Я знаю, что этот вопрос уже задавался и на него уже отвечали несколько раз, однако я не могу заставить существующие решения работать в моем случае.

У меня есть таблица latex, которая является выходом Stata (статистическое программное обеспечение), и я загружаю ее в свой существующий документ latex с помощью команды \input{}. Таблица слишком большая, и мне нужно ее уменьшить.

Мой табличный файл выглядит так:

\begin{table}[htbp]\centering
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\caption{Linear Model, h=10}
\begin{tabular}{l*{5}{c}}
\hline\hline
                    &\multicolumn{1}{c}{(1)}&\multicolumn{1}{c}{(2)}&\multicolumn{1}{c}{(3)}&\multicolumn{1}{c}{(4)}&\multicolumn{1}{c}{(5)}\\
                &\multicolumn{1}{c}{Corrupt Items}&\multicolumn{1}{c}{Corrupt Resources}&\multicolumn{1}{c}{Diversion Items}&\multicolumn{1}{c}{Fraud Items}&\multicolumn{1}{c}{Overinvoiced Items}\\
\hline
model               &                     &                     &                     &                     &                     \\
T                   &     -0.0226         &     -0.0194         &     -0.0389         &   0.0000768         &     -0.0226         \\
                &     (-0.99)         &     (-0.45)         &     (-1.31)         &      (0.00)         &     (-0.99)         \\
[1em]
R                   &     0.00247         &     0.00510         &     0.00379         &    -0.00140         &     0.00247         \\
                &      (0.78)         &      (0.86)         &      (0.94)         &     (-0.54)         &      (0.78)         \\
[1em]
R*T                 &    -0.00539         &     -0.0161\sym{*}  &    -0.00301         &    -0.00108         &    -0.00539         \\
                &     (-1.35)         &     (-2.13)         &     (-0.58)         &     (-0.32)         &     (-1.35)         \\
[1em]
Constant            &      0.0766\sym{***}&       0.105\sym{**} &      0.0381         &      0.0163         &      0.0766\sym{***}\\
                &      (4.45)         &      (3.26)         &      (1.71)         &      (1.14)         &      (4.45)         \\
\hline
sigma               &                     &                     &                     &                     &                     \\
Constant            &      0.0441\sym{***}&      0.0827\sym{***}&      0.0531\sym{***}&      0.0352\sym{***}&      0.0441\sym{***}\\
                &      (9.41)         &      (9.17)         &      (6.97)         &      (6.93)         &      (9.41)         \\
\hline
Observations        &          54         &          54         &          54         &          54         &          54         \\
\hline\hline
\multicolumn{6}{l}{\footnotesize All are tobit regressions, censored at 0}\\
\multicolumn{6}{l}{\footnotesize \sym{*} \(p<0.05\), \sym{**} \(p<0.01\), \sym{***} \(p<0.001\)}\\
\end{tabular}
\end{table}

И затем, как предложилэта страницаЯ пытаюсь вызвать его и изменить масштаб следующим образом:

\documentclass{beamer}
\mode<presentation> {
\usetheme{Madrid}
}
\usepackage{graphicx} 
\usepackage{booktabs} 
\usepackage{graphics}
\usepackage{subcaption}
\usepackage{mwe}

\newlength{\tempwidth}

\begin{document}

\begin{frame}
\begin{table}
\let\center\empty
\let\endcenter\relax
\centering
\resizebox{.5\width}{!}{\input{tablefile.tex}}
\end{table}
\end{frame}

\end{document}

Но он все еще выдает мне ошибки, типа "Не в режиме внешнего пар". Что здесь происходит?

решение1

Предложенный вами код имел tableinside tableи tableinside resizebox, ни один из них не будет работать.

Если вы просто введете таблицу

\documentclass{beamer}
\mode<presentation> {
\usetheme{Madrid}
}
\usepackage{graphicx} 
\usepackage{booktabs} 
\usepackage{graphics}
\usepackage{subcaption}
\usepackage{mwe}

\newlength{\tempwidth}

\begin{document}

\begin{frame}
{\input{tablefile.tex}}


\end{frame}

\end{document}

тогда это немного слишком широко

Overfull \hbox (18.97734pt too wide) in paragraph at lines 4--17

Если вы хотите сжать его, не редактируя каким-либо образом сгенерированный файл, вероятно, лучшим способом будет \centering. \smallбыло достаточно для исходного примера, для более крупной таблицы в отредактированном примере вам нужно \tiny, хотя мне жаль вашу аудиторию, если они попытаются прочитать столько данных на слайде :-)

\documentclass{beamer}
\mode<presentation> {
\usetheme{Madrid}
}
\usepackage{graphicx} 
\usepackage{booktabs} 
\usepackage{graphics}
\usepackage{subcaption}
\usepackage{mwe}

\newlength{\tempwidth}

\begin{document}

\begin{frame}
{
\let\oldcentering\centering
\renewcommand\centering{\tiny\oldcentering}
\input{tablefile.tex}}


\end{frame}

\end{document}

введите описание изображения здесь

решение2

Вместо того, чтобы изменять размер стола самостоятельно, вы можете сказать проектору уменьшить весь кадр. Например, \begin{frame}[shrink=30]этого должно быть достаточно, чтобы разместить ваш стол.

\documentclass{beamer}
\mode<presentation> {
\usetheme{Madrid}
}
%\usepackage{graphicx} 
\usepackage{booktabs} 
%\usepackage{graphics}
\usepackage{subcaption}
%\usepackage{mwe}

\newlength{\tempwidth}

\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}

\begin{document}

\begin{frame}[shrink=30]
\begin{table}
\caption{Linear Model, h=10}
\begin{tabular}{l*{5}{c}}
    \toprule
    & \multicolumn{1}{c}{(1)} & \multicolumn{1}{c}{(2)} & \multicolumn{1}{c}{(3)} & \multicolumn{1}{c}{(4)} & \multicolumn{1}{c}{(5)}\\
    & \multicolumn{1}{c}{Corrupt Items} & \multicolumn{1}{c}{Corrupt Resources} & \multicolumn{1}{c}{Diversion Items} & \multicolumn{1}{c}{Fraud Items} & \multicolumn{1}{c}{Overinvoiced Items}\\
    \midrule
    model & & & & & \\
    T & -0.0226 & -0.0194 & -0.0389 & 0.0000768 & -0.0226 \\
    & (-0.99) & (-0.45) & (-1.31) & (0.00) & (-0.99) \\[1em]
    R & 0.00247 & 0.00510 & 0.00379 & -0.00140 & 0.00247 \\
    & (0.78) & (0.86) & (0.94) & (-0.54) & (0.78) \\[1em]
    R*T & -0.00539 & -0.0161\sym{*} & -0.00301 & -0.00108 & -0.00539 \\
    & (-1.35) & (-2.13) & (-0.58) & (-0.32) & (-1.35) \\[1em]
    Constant & 0.0766\sym{***} & 0.105\sym{**} & 0.0381 & 0.0163 & 0.0766\sym{***}\\
    & (4.45) & (3.26) & (1.71) & (1.14) & (4.45) \\
    \midrule
    sigma & & & & & \\
    Constant & 0.0441\sym{***} & 0.0827\sym{***} & 0.0531\sym{***} & 0.0352\sym{***} & 0.0441\sym{***}\\
    & (9.41) & (9.17) & (6.97) & (6.93) & (9.41) \\
    \midrule
    Observations&54 &54 &54 &54 &54 \\
    \bottomrule
    \multicolumn{6}{l}{\footnotesize All are tobit regressions, censored at 0}\\
    \multicolumn{6}{l}{\footnotesize \sym{*} \(p<0.05\), \sym{**} \(p<0.01\), \sym{***} \(p<0.001\)}\\
\end{tabular}
\end{table}
\end{frame}

\end{document}

введите описание изображения здесь

решение3

Если бы таблица была на самом деле слишком широкой, можно было бы изменить ее масштаб, используя следующий косяк. \begroup... \egroupделает изменения локальными (особенно \endtable). необходим minipageдля \caption, но вам нужно знать ширину , tabularесли вы хотите, чтобы заголовок был центрирован.

\documentclass[12pt, a4paper]{scrartcl}

\usepackage{graphicx}

\newlength{\tempwidth}

\begin{document}

\begin{table}
\bgroup
  \def\table[#1]{}% gobble [htbp]
  \let\endtable\relax
  \let\centering\relax
  \settowidth{\tempwidth}{\def\caption#1{}% width of tabular
    \input{tablefile.tex}}%
  \resizebox{\textwidth}{!}{\begin{minipage}{\tempwidth}%
    \input{tablefile.tex}
  \end{minipage}}%
\egroup
\end{table}

\end{document}

Вот beamerверсия. Проблема возникает при beamerпопытке собрать содержимое среды frameв макрос ( \test). У environпакета была та же проблема при сборе в \BODY. Можно исправить это, поместив содержимое frameв savebox вне frameсреды.

Обратите внимание, что при использовании beamerподписи не центрируются самостоятельно.

\documentclass{beamer}
\mode<presentation> {
\usetheme{Madrid}
}
%\usepackage{graphicx} 
\usepackage{booktabs} 
%\usepackage{graphics}
\usepackage{subcaption}
%\usepackage{mwe}

\newlength{\tempwidth}
\newsavebox{\tempbox}

\begin{document}

\savebox{\tempbox}{%
  \expandafter\edef\csname @captype\endcsname{table}% table caption
  \def\table[#1]{}% gobble [htbp]
  \let\endtable\relax
  %\let\centering\relax
  \settowidth{\tempwidth}{\def\caption#1{}% gobble caption
    \input{tablefile}}% width of tabular
  \resizebox{\textwidth}{!}{\begin{minipage}{\tempwidth}%
    \input{tablefile}
  \end{minipage}}%
}

\begin{frame}
\frametitle{Test}
\usebox{\tempbox}
\end{frame}
\end{document}

Связанный контент