Mir ist bewusst, dass diese Frage bereits mehrmals gestellt und beantwortet wurde, ich bekomme die vorhandenen Lösungen jedoch nicht zum Laufen.
Ich habe eine Latex-Tabelle, die die Ausgabe von Stata (Statistiksoftware) ist, und lade sie mit dem Befehl \input{} in mein vorhandenes Latex-Dokument. Die Tabelle ist zu groß und ich muss sie verkleinern.
Meine Tabellendatei sieht folgendermaßen aus:
\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}
Und dann, wie vorgeschlagen vondiese SeiteIch versuche, es aufzurufen und auf diese Weise neu zu skalieren:
\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}
Dennoch bekomme ich immer noch Fehlermeldungen mit der Meldung „Nicht im Outer-Par-Modus“. Was ist hier los?
Antwort1
Ihr vorgeschlagener Code enthielt table
inside table
und table
inside resizebox
, aber keines von beiden funktioniert.
Wenn Sie nur die Tabelle eingeben
\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}
dann ist es etwas zu breit
Overfull \hbox (18.97734pt too wide) in paragraph at lines 4--17
Wenn Sie es verkleinern möchten, ohne die generierte Datei in irgendeiner Weise zu bearbeiten, ist der beste Ansatz wahrscheinlich \centering
. \small
hat für das ursprüngliche Beispiel ausgereicht, für die größere Tabelle im bearbeiteten Beispiel benötigen Sie \tiny
, obwohl mir Ihr Publikum leid tut, wenn es versucht, so viele Daten auf einer Folie zu lesen:-)
\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}
Antwort2
Anstatt die Größe der Tabelle selbst zu ändern, können Sie Beamer anweisen, den gesamten Rahmen zu verkleinern. Dies \begin{frame}[shrink=30]
sollte beispielsweise ausreichen, um Ihre Tabelle unterzubringen.
\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}
Antwort3
Wenn die Tabelle tatsächlich zu breit wäre, könnte man sie mit dem folgenden Kludge neu skalieren. Das \begroup
... \egroup
macht die Änderungen lokal (insbesondere \endtable
). Das minipage
wird für benötigt \caption
, aber Sie müssen die Breite von kennen, tabular
wenn Sie die Überschrift zentriert haben möchten.
\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}
Hier ist eine beamer
Version. Das Problem tritt auf, wenn beamer
versucht wird, den Inhalt der frame
Umgebung in einem Makro ( \test
) zu sammeln. Das environ
Paket hatte das gleiche Problem beim Sammeln in . Man kann es beheben, indem man den Inhalt von in eine Savebox außerhalb der Umgebung \BODY
legt .frame
frame
Beachten Sie, dass beamer
die Beschriftungen bei nicht selbstzentrierend sind.
\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}