외부 라텍스 파일에서 테이블 크기 조정

외부 라텍스 파일에서 테이블 크기 조정

따라서 저는 이 질문이 여러 번 제기되고 답변되었다는 것을 알고 있지만 기존 솔루션으로는 저에게 적합하지 않습니다.

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

귀하가 제안한 코드에는 tableinside tabletableinside 가 있는데 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}

관련 정보