lrbox/minipage/colorbox 내용의 수직 간격 매크로에 대한 이상한 해석

lrbox/minipage/colorbox 내용의 수직 간격 매크로에 대한 이상한 해석

이전에 이러한 조판 문제를 본 적이 있지만 해결책을 찾을 수 없습니다. 라텍스는 상당히 반직관적일 수 있습니다. 내가 하려는 것은 약간 수정된 테이블 내에서 작동하는 \panel{} 헤더 유형 매크로를 만드는 것뿐입니다. \panel은 이전 표의 간격을 늘리고 다음 표의 간격을 줄여야 합니다.

문제를 보여주기 위해 예제를 제거했습니다. 예상되는 작업을 수행하는 \panel 매크로를 어떻게 정의합니까?

\documentclass{article}

\usepackage{color}
\usepackage{booktabs}

\newsavebox{\selvesteboxtwo}
\newenvironment{colboxfigtbl}
  {
   \begin{lrbox}{\selvesteboxtwo}%
   \begin{minipage}{\dimexpr\columnwidth-2\fboxsep-4em\relax}}
  {
   \end{minipage}\end{lrbox}%
   \begin{center}%
     \fcolorbox{blue}{yellow}{\usebox{\selvesteboxtwo}}%%real life do more
   \end{center} 
  }

\newenvironment{newtable}[1][]{%
  \begin{table}%
    \begin{center}%
      \begin{colboxfigtbl}
      }{%
      \end{colboxfigtbl}%
    \end{center}%
  \end{table}
}

\newcommand{\panel}[2]{%
  \par\bigskip%
  \begin{center} \textbf{Panel #1:} #2 \end{center}%
  \par\vspace*{-1.5\baselineskip}%
}

\begin{document}

\begin{newtable}

  \panel{A}{This is a bad panel}

  \begin{center}\begin{tabular}{l r} \toprule A & B \\ \bottomrule \end{tabular} \end{center}

  \panel{B}{This is a better panel}

  \begin{center}\begin{tabular}{l r} \toprule A & B \\  \bottomrule \end{tabular} \end{center}

  \panel{C}{This is a better panel}

  \begin{center}\begin{tabular}{l r} \toprule A & B \\  \bottomrule \end{tabular} \end{center}

\end{newtable}

\end{document}

답변1

환경은 콘텐츠 위와 아래에 공간을 추가하는 경향이 있기 때문에 환경을 함께 중첩하는 것이 까다로울 수 있습니다. 게다가 일부 환경에서는 중첩된 환경이 삽입한 추가 공간을 교묘하게 빼려고 합니다. 귀하와 같은 경우 대답은 간단합니다. \newtable이미 환경을 호출한 환경 에서 중첩된 환경을 환경 없이 동일한 효과를 달성하는 매크로 형식인 로 table바꿉니다 .\begin{center}...\end{center}\centering...

\documentclass{article}

\usepackage{color}
\usepackage{booktabs}

\newsavebox{\selvesteboxtwo}
\newenvironment{colboxfigtbl}
  {
   \begin{lrbox}{\selvesteboxtwo}%
   \begin{minipage}{\dimexpr\columnwidth-2\fboxsep-4em\relax}}
  {
   \end{minipage}\end{lrbox}%
   \begin{center}%
     \fcolorbox{blue}{yellow}{\usebox{\selvesteboxtwo}}%%real life do more
   \end{center} 
  }

\newenvironment{newtable}[1][]{%
  \begin{table}%
    \centering%\begin{center}%
      \begin{colboxfigtbl}
      }{%
      \end{colboxfigtbl}%
%    \end{center}%
  \end{table}
}

\newcommand{\panel}[2]{%
  \par\bigskip%
  \begin{center} \textbf{Panel #1:} #2 \end{center}%
  \par\vspace*{-1.5\baselineskip}%
}

\begin{document}

\begin{newtable}

  \panel{A}{This is a bad panel}

  \begin{center}\begin{tabular}{l r} \toprule A & B \\ \bottomrule \end{tabular} \end{center}

  \panel{B}{This is a better panel}

  \begin{center}\begin{tabular}{l r} \toprule A & B \\  \bottomrule \end{tabular} \end{center}

  \panel{C}{This is a better panel}

  \begin{center}\begin{tabular}{l r} \toprule A & B \\  \bottomrule \end{tabular} \end{center}

\end{newtable}

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보