따라서 저는 이 질문이 여러 번 제기되고 답변되었다는 것을 알고 있지만 기존 솔루션으로는 저에게 적합하지 않습니다.
Stata(통계 소프트웨어)의 출력인 라텍스 테이블이 있고 \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
테이블 크기를 직접 조정하는 대신 Beamer에게 전체 프레임을 축소하도록 지시할 수 있습니다. 예를 들어 \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
실제로 테이블이 너무 넓은 경우 다음 kludge를 사용하여 크기를 다시 조정할 수 있습니다. \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
외부의 저장 상자 에 내용을 넣어 문제를 해결할 수 있습니다 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}