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