Я знаю, что этот вопрос уже задавался и на него уже отвечали несколько раз, однако я не могу заставить существующие решения работать в моем случае.
У меня есть таблица 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
Предложенный вами код имел table
inside table
и table
inside 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}