From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/makecell/README | 16 + macros/latex/contrib/makecell/makecell-rus.pdf | Bin 0 -> 526531 bytes macros/latex/contrib/makecell/makecell-rus.tex | 1387 +++++++++++++++++ macros/latex/contrib/makecell/makecell.dtx | 1983 ++++++++++++++++++++++++ macros/latex/contrib/makecell/makecell.pdf | Bin 0 -> 266039 bytes 5 files changed, 3386 insertions(+) create mode 100644 macros/latex/contrib/makecell/README create mode 100644 macros/latex/contrib/makecell/makecell-rus.pdf create mode 100644 macros/latex/contrib/makecell/makecell-rus.tex create mode 100644 macros/latex/contrib/makecell/makecell.dtx create mode 100644 macros/latex/contrib/makecell/makecell.pdf (limited to 'macros/latex/contrib/makecell') diff --git a/macros/latex/contrib/makecell/README b/macros/latex/contrib/makecell/README new file mode 100644 index 0000000000..612fa394bd --- /dev/null +++ b/macros/latex/contrib/makecell/README @@ -0,0 +1,16 @@ +makecell 0.1e +Managing of tabular column heads and cells. + + Package offers a command, based on one-column tabular environment, which + allows to support a common layout for tabular column heads in whole + document. Another offered command is for creation of multilined tabular + cells. There are also: 1) a macro, which changes vertical spaces + around all cells in tabular, like in tabls package, but based on array + package; 2) macros for multirow cells/heads, which use macro from + multirow package; 3) macros for numbered rows of cells or skipping + cells and rows in tabulars; 4) diagonally divided cells (plus + citation of the sample file of slashbox package); 5) macros for + horizonral lines in tabulars with defined thickness. + +Documentation: makecell.pdf, makecell-rus.pdf. + diff --git a/macros/latex/contrib/makecell/makecell-rus.pdf b/macros/latex/contrib/makecell/makecell-rus.pdf new file mode 100644 index 0000000000..87e334fb87 Binary files /dev/null and b/macros/latex/contrib/makecell/makecell-rus.pdf differ diff --git a/macros/latex/contrib/makecell/makecell-rus.tex b/macros/latex/contrib/makecell/makecell-rus.tex new file mode 100644 index 0000000000..daaed9cb67 --- /dev/null +++ b/macros/latex/contrib/makecell/makecell-rus.tex @@ -0,0 +1,1387 @@ +% \iffalse +% +% makecell.dtx - Managing of tabular column heads and cells. +% Russian documentation. +% (c) 2005--2006 Olga Lapko (Lapko.O@g23.relcom.ru) +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +%<*driver> +\ProvidesFile{makecell-rus.tex} +\documentclass{ltxdoc} + +\usepackage{mathtext} +\usepackage[T2A]{fontenc} +\usepackage[cp1251]{inputenc} +\usepackage[english,russian]{babel} + +\IfFileExists{rotating.sty}{\usepackage{rotating}}{} +\IfFileExists{footmisc.sty}{\usepackage[perpage]{footmisc}}{} +\IfFileExists{multirow.sty}{\usepackage{multirow}}{} +\IfFileExists{hyperref.sty}{\usepackage[unicode]{hyperref}}{} +\IfFileExists{hypcap.sty}{\usepackage{hypcap}}{} +\usepackage{makecell} +\IfFileExists{caption.sty} + {\usepackage[font=small,labelfont=bf,labelsep=period]{caption}[2004/11/28] + \IfFileExists{floatrow.sty} + {\usepackage[font=small,style=plaintop,captionskip=5pt]{floatrow}} + {}}{} +\makeatletter +\@ifundefined{ttabbox}{\let\ttabbox\relax}{} +\makeatother +\usepackage{tabularx} +\usepackage{slashbox} +\usepackage{hhline} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\makeatletter +\@beginparpenalty10000 +\widowpenalty10000 +\clubpenalty10000 +\makeatother +\providecommand*{\file}[1]{\texttt{#1}} +\providecommand*{\package}[1]{\textsf{#1}} +\providecommand*{\cls}[1]{\textsf{#1}} +\providecommand*{\env}[1]{\texttt{#1}} +\begin{document} + \DocInput{makecell-rus.tex} + \PrintChanges +\end{document} +% +% \fi +% +% \GetFileInfo{makecell-rus.tex} +% +% \title{Пакет \textsf{makecell}} +% \author{% +% Ольга Лапко\\ +% {\tt Lapko.O@g23.relcom.ru} } +% \maketitle +% \begin{abstract} +%^^A% This package helps to create common layout for tabular material. +%^^A% The |\thead| command, based on one-column tabular environment, is offered +%^^A% for creation of tabular column heads. This macro allows to support common +%^^A% layout for tabular column heads in whole documentation. Another command, +%^^A% |\makecell|, is offered for creation of multilined tabular cells. +%^^A% There are also command |\makecellbox| command and |mcellbox| environment +%^^A% usage of tabular cells inside text. +% Данный пакет помогает создать единое оформление для таблиц во всём +% документе. Команда |\thead|, использующая окружение одноколоночной +% таблицы, позволяет создать единообразное оформление для заголовков +% табличных колонок в~документе. Ещё одна команда, |\makecell|, +% предлагается для создания многострочных ячеек в~таблицах. +% Также созданы команда |\makecellbox| и~окружение |mcellbox| +% для создания таблиц-ячеек внутри текста. +% +%^^A% Package also offers: \quad 1)\nobreak\enskip macro |\makegapedcells|, +%^^A% which changes vertical spaces around all cells in tabular, like in +%^^A% \package{tabls} package, but uses code of \package{array} package. (Macro +%^^A% |\makegapedcells| redefines macro |\@classz| from \package{array} package. +%^^A% Macro |\nomakegapedcells| cancels this redefinition.); +%^^A% \quad 2)\nobreak\enskip macros |\multirowhead| and |\multirowcell|, +%^^A% which use |\multirow| macro from \package{multirow} package; +%^^A% \quad 3)\nobreak\enskip numbered rows |\nline| or skipping cells |\eline| +%^^A% in tabulars; also are the skipping rows command |\erows| and +%^^A% repeated rows command |\Xrows|; +%^^A% \quad 4)\nobreak\enskip diagonally divided cells (|\diaghead|) +%^^A% plus citation of sample file of \package{slashbox} package, which does the same; +%^^A% \quad 5)\nobreak\enskip |\hline| and |\cline| width necessary thickness: +%^^A% |\Xhline| and |\Xcline| consequently. +% Также предлагается: \qquad 1)\nobreak\enskip макрокоманда |\makegapedcells|, +% которая изменяет вертикальные отбивки вокруг табличных ячеек, аналогично +% пакету \package{tabls}, но использует пакет \package{array}. (Команда +% |\makegapedcells| переопределяет макрокоманду |\@classz| пакета +% \package{array}. Макрокоманда |\nomakegapedcells| отменяет переопределение.); +% \qquad 2)\nobreak\enskip макрокоманды |\multirowhead| и~|\multirowcell|, +% использующие макрокоманду |\multirow| из пакета \package{multirow}; +% \qquad 3)\nobreak\enskip ряд нумерованных |\nline| или пропущенных |\eline| +% ячеек, а~также пустых рядов |\erows| и~рядов с~повторяющимся текстом |\Xrows|; +% \qquad 4)\nobreak\enskip ячейки разделённые диагональю (|\diaghead|), +% а~также файл образец пакета \package{slashbox}, делающего то же самое; +% \qquad 5)\nobreak\enskip линейки |\hline| и~|\cline| с~заданной толщиной: +% |\Xhline| и~|\Xcline|. +% \smallskip +% +% \end{abstract} +% +% \clearpage +% \tableofcontents +% +% \clearpage +%^^A% \section{Tabular Cells and Column Heads} +% \section{Табличные ячейки и~заголовки колонок} +% +%^^A% \subsection{Building Commands} +% \subsection{Основные команды} +% +% \DescribeMacro{\makecell} +%^^A% Macro creates one-column tabular with predefined common settings of +%^^A% alignment, spacing and vertical spaces around (see section~\ref{sec:sets}). +%^^A% This will be useful for creation of multilined cells. This macro allows +%^^A% optional alignment settings. +% Макрокоманда создаёт окружение одноколоночной таблицы с~предопределёнными общими +% параметрами выключки, интерлиньяжа и~вертикальных отбивок вокруг +% (см. разд.~\ref{sec:sets}). Её удобно использовать для +% многострочных ячеек. Дополнительный аргумент команды позволяет +% изменить выключку таблицы. +% \begin{quote} +% |\makecell|\oarg{vertical or/and horizontal alignment}\marg{cell text} +% \end{quote} +%^^A% For vertical alignment you use \texttt{t}, \texttt{b}, or \texttt{c}---%^^A +%^^A% this letters you usually put in optional argument of \env{tabular} or +%^^A% \texttt{array} environments. For horizontal alignment you may use alignment +%^^A% settings like \texttt{r}, \texttt{l}, or \texttt{c}, or more complex, like +%^^A% |{p{3cm}}|. Since this package loads \package{array} package, you may +%^^A% use such alignment settings like |{>{\parindent1cm}p{3cm}}|. +% Для вертикальной выключки используются обозначения \texttt{t}, \texttt{b}, +% или \texttt{c} \cdash--- эти буквы используются в~дополнительном аргументе окружений +% \env{tabular} или \texttt{array}. Для горизонтальной выключки вы можете +% использовать обозначения \texttt{r}, \texttt{l}, или \texttt{c}, или более +% сложные: |{p{3cm}}|. Поскольку данный пакет загружает пакет \package{array}, вы +% можете использовать и~такие определения выключки: |{>{\parindent1cm}p{3cm}}|. +%\begin{verbatim} +%\begin{tabular}{|c|c|} +%\hline +%Cell text & 28--31\\ +%\hline +%\makecell{Multilined \\ cell text} & 28--31\\ +%\hline +%\makecell[l]{Left aligned \\ cell text} & 37--43\\ +%\hline +%\makecell*[r]{Right aligned \\ cell text} & 37--43\\ +%\hline +%\makecell[b]{Bottom aligned \\ cell text} & 52--58\\ +%\hline +%\makecell*[{{p{3cm}}}]{Cell long text with predefined width} & 52--58\\ +%\hline +%\makecell[{{>{\parindent1em}p{3cm}}}]{Cell long...} & 52--58\\ +%\hline +%\end{tabular} +%\end{verbatim} +% \begin{table}[h] +% \ttabbox +% {\caption{Пример многострочных ячеек}\label{tab:cells}}% +% {\begin{tabular}{|c|c|} +% \hline +% Cell text & 28--31\\ +% \hline +% \makecell{Multilined \\ cell text} & 28--31\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned \\ cell text} & 52--58\\ +% \hline +% \makecell*[{{p{3cm}}}]{Cell long text with predefined width} & 52--58\\ +% \hline +% \makecell[{{>{\parindent1em}p{3cm}}}]{Cell long text with predefined width} & +% 52--58\\ +% \hline +% \end{tabular}} +% \end{table} +% +%^^A% Starred form of command, |\makecell*|, creates vertical |\jot| spaces +%^^A% around. +% Звёздная форма команды, |\makecell*|, создаёт вертикальные отбивки равные~|\jot|. +% +%^^A% \emph{Note}. When you define column alignment like |p{3cm}| in optional +%^^A% argument of |\makecell| (or |\thead|, see below), please follow these +%^^A% rules: \quad 1)\nobreak\enskip if vertical +%^^A% alignment defined, write column alignment in group, e.g. |[c{p{3cm}}]|; +%^^A% \quad 2)\nobreak\enskip if vertical alignment is absent, +%^^A% write column alignment in double +%^^A% group---|[{{p{3cm}}}]|, or add empty group---|[{}{p{3cm}}]|. Be also +%^^A% careful with vertical alignment when you define column alignment as +%^^A% paragraph block: e.g., use |{{b{3cm}}}| for bottom alignment (and +%^^A% |{{m{3cm}}}| for centered vertical alignment). +% \emph{Замечание}. При определении выключки колонки типа |{p{3cm}}| +% в~дополнительном аргументе команды |\makecell| (или |\thead|, см.~ниже), +% нужно соблюдать следующие правила: +% \quad 1)\nobreak\enskip если есть +% обозначение вертикальной выключки, взять выключку колонки в~группу: +% |[c{p{3cm}}]|; \quad +% 2)\nobreak\enskip если вертикальной выключки нет, взять выключку +% колонки в~двойную группу \cdash--- |[{{p{3cm}}}]| или добавить пустую группу +% \cdash--- |[{}{p{3cm}}]|. +% Будьте внимательны с~вертикальной выключкой ячейки при задании выключки +% колонки в~виде абзаца: +% например, нужно использовать |{b{3cm}}| для выключки по нижней линии +% (и~|{m{3cm}}| для выключки по средней линии). +% +% \DescribeMacro{\thead} +%^^A% Macro creates one-column \texttt{tabular} for column heads with predefined +%^^A% common settings (see table~\ref{tab:thead}). This macro uses common layout +%^^A% for column heads: font, alignment, spacing, and vertical spaces around +%^^A% (see section~\ref{sec:sets}). +% Макрокоманда создаёт окружение одноколоночной таблицы для заголовков колонок +% с~предопределёнными +% общими параметрами выключки и~интерлиньяжа (см.~табл.~\ref{tab:thead}). +% Эта макрокоманда использует общие установки для заголовков колонок: шрифт, +% выключку, интерлиньяж, вертикальные отбивки вокруг (см. разд.~\ref{sec:tsets}). +%\begin{verbatim} +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\begin{tabular}{|l|c|} +%\hline +%\thead{First column head}& +% \thead{Second \\multlined \\ column head}\\ +%\hline +%Left column text & 28--31\\ +%\hline +%\end{tabular} +%\end{verbatim} +% \begin{table}[h] +% \ttabbox +% {\caption{Пример заголовков колонок}\label{tab:thead}} +% {\renewcommand\theadset{\def\arraystretch{.85}} +% \begin{tabular}{|l|c|} +% \hline +% \thead{First column head}& +% \thead{Second \\multlined \\ column head}\\ +% \hline +% Long left column text & 28--31\\ +% \hline +% \end{tabular}} +% \end{table} +% +%^^A% Starred form of command, |\thead*|, creates vertical |\jot| spaces around. +% Звёздная форма команды, |\thead*|, создаёт вертикальные отбивки равные~|\jot|. +% +% \DescribeMacro{\rothead} +%^^A% Creates table heads rotated by 90$^\circ$ counterclockwise. +%^^A% Macro uses the same font and spacing settings as previous +%^^A% one, but column alignment changed to |p{\rotheadsize}| with |\raggedright| +%^^A% justification: in this case left side of all text lines ``lies'' +%^^A% on one base line. +% Создаёт заголовки колонок, развёрнутые на 90$^\circ$ против часовой стрелки. +% Макрокоманда использует те же установки шрифта и~интерлиньяжа как и~предыдущая, +% но выключка колонки изменена на |p{\rotheadsize}| с~выравниванием вправо +% (|\raggedright|): в~результате левый край строк заголовка оказывается +% на одной базовой линии. +% +% \DescribeMacro{\rotheadsize} +%^^A% This parameter defines the width of rotated tabular heads. You may define +%^^A% that like: +% Данный параметр определяет ширину колонки для развёрнутых вертикально заголовков. +% Его можно определить как: +% \begin{quote} +% |\setlength\rotheadsize{3cm}| +% \end{quote} +% или +% \begin{quote} +% |\settowidth\rotheadsize{\theadfont |\meta{Widest head text}|}| +% \end{quote} +%^^A% like in following example: +% как сделано в~следующем примере (табл.~\ref{tab:rotheads}): +% \begin{table} +% \ttabbox +% {\caption{Пример заголовков колонок, развёрнутых вертикально}\label{tab:rotheads}}% +% {\settowidth\rotheadsize{\theadfont Second multilined}%^^A +% \begin{tabular}{l|l} +% \hline +% \thead{First column head}& +% \rothead{Second multilined \\ column head}\\ +% \hline +% Long left column text & 28--31\\ +% \hline +% \end{tabular}} +% \end{table}% +%\begin{verbatim} +%\settowidth\rotheadsize{\theadfont Second multilined} +%\begin{tabular}{|l|c|} +%\hline +%\thead{First column head}& +% \rotthead{Second multilined \\ column head}\\ +%\hline +%Left column text & 28--31\\ +%\hline +%\end{tabular} +%\end{verbatim} +% +%^^A% \subsection{Settings For Tabular Cells}\label{sec:sets} +% \subsection{Установки для табличных ячеек}\label{sec:sets} +% +%^^A% This section describes macros, which make layout tuning for multilined +%^^A% cells, created by |\makecell| macro (and also |\multirowcell| and +%^^A% |\rotcell| macros). The |\cellset| macro also is used by |\thead| +%^^A% (|\rothead|, |\multirowtead|) macro. +% В~данном разделе приведены команды, которые задают оформление +% многострочных ячеек, заданных командой |\makecell| (а~также +% |\multirowcell| и~|\rotcell|). +% Команда |\cellset| используется также командой |\thead| (а~также +% |\rothead|, |\multirowtead|). +% +% \DescribeMacro{\cellset} +%^^A% Spacing settings for cells. Here you could use commands like: +% Установки интерлиньяжа для табличных ячеек. Здесь можно использовать следующие +% команды: +% \begin{quote} +% |\renewcommand\cellset{\renewcommand\arraytretch{1}%|\\ +% | \setlength\extrarowheight{0pt}}| +% \end{quote} +%^^A% as was defined in current package. +% как определено в~данном пакете. +% +% \DescribeMacro{\cellalign} +%^^A% Default align for cells. Package offers vertical and horizontal centering +%^^A% alignment, it defined like: +% Выключка по умолчанию для табличных ячеек. Пакет предлагает вертикальную +% и~горизонтальную выключку по центру, определённую следующим образом: +% \begin{quote} +% |\renewcommand\cellalign{cc}| +% \end{quote} +% +% \DescribeMacro{\cellgape} +%^^A% Define vertical spaces around |\makecell|, using |\gape| command if +%^^A% necessary. It defined like: +% Определяет вертикальные отбивки вокруг ячейки (|\makecell|), используя, +% если нужно, команду |\gape|. Она определена как: +% \begin{quote} +% |\renewcommand\cellgape{}| +% \end{quote} +%^^A% You may define this command like +% Можно определить макрокоманду как +% \begin{quote} +% |\renewcommand\cellgape{\Gape[1pt]}| +% \end{quote} +%^^A% or +% или +% \begin{quote} +% |\renewcommand\cellgape{\gape[t]}| +% \end{quote} +%^^A% (See also section~\ref{sec:gape} about |\gape| and |\gape| command.) +% (См.~также разд.~\ref{sec:gape} о~командах |\gape| и~|\Gape|.) +% +% \DescribeMacro{\cellrotangle} +%^^A% The angle for rotated cells and column heads. The default value 90 +%^^A% (counterclockwise). This value definition is used by both |\rotcell| and +%^^A% |\rothead| macros. +% Угол поворота для развёрнутых ячеек и~заголовков колонок. +% По умолчанию задан угол 90 (против часовой стрелки). Это определение +% используется командами |\rotcell| и~|\rothead|. +% +%^^A% \subsection{Settings For Column Heads} +% \subsection{Установки для заголовков колонок}\label{sec:tsets} +% +%^^A% This section describes macros, which make layout tuning for tabular column +%^^A% heads, created by |\thead| (|\rothead|, |\multirowtead|) macro. +% В~данном разделе приведены команды, которые позволяют настроить оформление заголовков +% табличных колонок, заданных командой |\thead| (|\rothead|, |\multirowtead|). +% +% \DescribeMacro{\theadfont} +%^^A% Sets a special font for column heads. It could be smaller size +% Задаёт шрифт для заголовков колонок. Может быть задан меньший кегель +% \begin{quote} +% |\renewcommand\theadfont{\foonotesize}| +% \end{quote} +%^^A% as was defined in current package (here we suppose that +%^^A% \verb|\small| command used for tabular contents itself). +%^^A% Next example defines italic shape +% как определено в данном пакете (здесь учитывается, что задана +% команда \verb|\small| для шрифта самой таблицы). +% Следующий пример задаёт курсивное начертание +% \begin{quote} +% |\renewcommand\theadfont{\itshape}| +% \end{quote} +% +% \DescribeMacro{\theadset} +%^^A% Spacing settings for column heads. Here you could use commands like: +% Установки интерлиньяжа для заголовков колонок. Здесь можно использовать следующие +% команды: +% \begin{quote} +% |\renewcommand\theadset{\renewcommand\arraytretch{1}%|\\ +% | \setlength\extrarowheight{0pt}}| +% \end{quote} +% +% \DescribeMacro{\theadalign} +%^^A% Default align for tabular column heads. Here also offered centering +%^^A% alignment: +% Выключка по умолчанию для заголовков колонок. Здесь также задана выключка по центру: +% \begin{quote} +% |\renewcommand\theadalign{cc}| +% \end{quote} +% +% \DescribeMacro{\theadgape} +%^^A% Define vertical spaces around column head (|\thead|), +%^^A% using |\gape| command if necessary. +%^^A% It defined like: +% Определяет вертикальные отбивки вокруг заголовка колонки (|\thead|), используя, +% если нужно, команду |\gape|. Определена как: +% \begin{quote} +% |\renewcommand\theadgape{\gape}| +% \end{quote} +% +% \DescribeMacro{\rotheadgape} +%^^A% Analogous definition for rotated column heads. Default is absent: +% То же самое для вертикальных заголовков. По умолчанию отсутствует: +% \begin{quote} +% |\renewcommand\rotheadgape{}| +% \end{quote} +% +% \clearpage +%^^A% \section{Changing of Height and Depth of Boxes}\label{sec:gape} +% \section{Изменение высоты и глубины боксов}\label{sec:gape} +% +%^^A% Sometimes \env{tabular} or \env{array} cells, or some elements in text need a +%^^A% height/depth correction. The |\raisebox| command could help for it, but +%^^A% usage of that macro in these cases, especially inside math, is rather +%^^A% complex. Current package offers the |\gape| macro, which usage is similar +%^^A% to |\smash| macro. The |\gape| macro allows to change height and/or depth +%^^A% of included box with necessary dimension. +% Иногда заголовки табличных колонок, табличные ячейки или элементы текста требуют +% коррекции высоты/глубины. Макрокоманда |\raisebox| может помочь, +% но использование её в~подобных ситуациях, особенно в~математике, довольно громоздко. +% Данный пакет предлагает макрокоманду |\gape|, которая используется аналогично +% команде |\smash|. Макрокоманда |\gape| позволяет изменить высоту и/или глубину бокса +% на необходимую величину. +% +% \DescribeMacro{\gape} +%^^A% This macro changes included box by |\jot| value (usually 3\,pt). It is +%^^A% defined with optional and mandatory arguments, like |\smash| macro, which +%^^A% (re)defined by \package{amsmath} package. Optional argument sets change of +%^^A% height only (\texttt{t}) or depth only~(\texttt{b}). Mandatory argument +%^^A% includes text. +% Первая макрокоманда изменяет бокс на величину |\jot| (обычно 3\,pt). Она задаётся +% дополнительным и~обязательным аргументами, как и~команда |\smash|, +% (пере)определённая пакетом \package{amsmath}. Дополнительный аргумент задаёт +% изменение только высоты (\texttt{t}) или только глубины +% (\texttt{b}). Обязательный включает собственно текст. +% \begin{quote} +% |\gape|\oarg{\texttt{t} or \texttt{b}}\marg{text} +% \end{quote} +%^^A% Examples of usage: +% Примеры использования: +% \begin{quote} +% \noindent +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \gape{\cmd{\gape}\texttt{\{text\}}}\cr +% \noalign{\hrule} +% \crcr}}\qquad +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \gape[t]{\cmd{\gape}\texttt{[t]\{text\}}}\cr +% \noalign{\hrule\vskip\jot} +% \crcr}}\qquad +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \gape[b]{\cmd{\gape}\texttt{[b]\{text\}}}\cr +% \noalign{\hrule} +% \crcr}} +% \end{quote} +% +% \DescribeMacro{\Gape} +%^^A% Another way of height/depth modification. This macro allows different +%^^A% correction for height and depth of box: +% Другой вариант изменения высоты/глубины. Данная макрокоманда позволяет сделать +% корректировку отдельно для высоты и~глубины бокса: +% \begin{quote} +% |\Gape|\oarg{height corr}\oarg{depth corr}\marg{text} +% \end{quote} +% +%^^A% If both arguments absent, |\Gape| command works like |\gape|\marg{text}, in +%^^A% other words, command uses |\jot| as correction value for height and depth +%^^A% of box. +% Если отсутствуют оба необязательных аргумента, команда |\Gape| работает аналогично +% |\gape|\marg{text}, другими словами, использует для корректировки высоты и~глубины +% величину~|\jot|. +% +%^^A% If only one optional argument exists, |\Gape| command uses value +%^^A% from this argument for both height and depth box corrections. +% Если присутствует только один необязательный аргумент, команда |\Gape| использует +% его значение для корректировки высоты и~глубины бокса. +% \begin{quote} +% \noindent +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \Gape{\cmd{\Gape}\texttt{\{text\}}}\cr +% \noalign{\hrule} +% \crcr}}\texttt{\phantom{xxxxx}}\qquad +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \Gape[\jot]{\cmd{\Gape}\texttt{[\cmd{\jot}]\{text\}}}\cr +% \noalign{\hrule} +% \crcr}}\\[2ex] +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \Gape[6pt]{\cmd{\Gape}\texttt{[6pt]\{text\}}}\cr +% \noalign{\hrule} +% \crcr}}\qquad +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \Gape[6pt][-2pt]{\cmd{\Gape}\texttt{[6pt][-2pt]\{text\}}}\cr +% \noalign{\hrule\vskip8pt} +% \crcr}} +% \end{quote} +% +%^^A% You may also use |\height| and |\depth| parameters in optional arguments +%^^A% of |\Gape| macro, parameters was borrowed from |\raisebox| command. +% В~опциях команды |\Gape| вы можете использовать параметры |\height| и~|\depth|, +% которые позаимствованы из команды |\raisebox|. +% +% \DescribeMacro{\bottopstrut} +% \DescribeMacro{\topstrut} +% \DescribeMacro{\botstrut} +%^^A% These three macros modify standard |\strut| by |\jot| value: +%^^A% |\bottopstrut| changes both height and depth; +%^^A% \nopagebreak|\topstrut| changes only height; +%^^A% |\botstrut| changes only depth. +%^^A% These commands could be useful, for example, in first and last table rows. +% Эти три команды изменяют стандартную команду |\strut| на величину |\jot|: +% |\bottopstrut| изменяет и~высоту и~глубину; +% |\topstrut| изменяет только высоту; +% |\botstrut| изменяет только глубину. +% Эти команды можно использовать, например, в~первом и~последнем рядах таблицы. +% +%^^A% \emph{Note}. If you use +%^^A% \package{bigstrut} package note that these macros duplicate \cmd{\bigstrut}, +%^^A% \cmd{\bigstrut[t]}, and \cmd{\bigstrut[b]} commands consequently. Please +%^^A% note that value, which increases strut in \cmd{\topstrut} etc. equals to +%^^A% \cmd{\jot}, but \cmd{\bigstrut} and others use a special dimension +%^^A% \cmd{\bigstrutjot}. +% \emph{Замечание}. Если +% вы используете пакет \package{bigstrut}, обратите внимание, что эти три команды +% дублируют \cmd{\bigstrut}, \cmd{\bigstrut[t]}, и~\cmd{\bigstrut[b]} соответственно. +% Обратите также внимание что величина, изменяющая \cmd{\strut} в~команде +% \cmd{\topstrut} и~других равна \cmd{\jot}, а~команда +% \cmd{\bigstrut} и~использует специальную величину \cmd{\bigstrutjot}. +% +% \clearpage +%^^A% \section{How to Change Vertical Spaces Around +%^^A% in Whole Table}\label{sec:beta} +% \section{Как изменить вертикальные отбивки во всей таблице}\label{sec:beta} +% +%^^A% This section describes macros which try to emulate one of possibilities of +%^^A% \package{tabls} package: to get necessary vertical spacing around cells. +% Данный раздел описывает макрокоманды, которые пытаются эмулировать +% одну из возможностей пакета \package{tabls}: +% создание необходимых отбивок вокруг ячеек таблицы. +% +% \DescribeMacro{\setcellgapes} +%^^A% Sets the parameters for vertical spaces: +% Определяет параметры для вертикальных отбивок: +% \begin{quote} +% |\setcellgapes|\oarg{\texttt{t} or \texttt{b}}\marg{value} +% \end{quote} +%^^A% The next examples with array and tabular use following settings: +% Примеры таблиц, приведённые ниже используют следующие установки: +% \begin{quote} +% |\setcellgapes{5pt}| +% \end{quote} +%^^A% You may also try to load negative values if you wish. This macro you may +%^^A% put in the preamble as common settings. +% Вы можете также ввести отрицательные значения. Данную макрокоманду можно поместить +% в~преамбуле документа как общие установки. +% +% \DescribeMacro{\makegapedcells} +% \DescribeMacro{\nomakegapedcells} +%^^A% The first macro switches on vertical spacing settings. The second cancels +%^^A% first~one. +% Первая макрокоманда включает создание вертикальных отбивок. Вторая отменяет первую. +% +%^^A% The \cmd{\makegapedcells} macro temporarily redefines macro +%^^A% |\@classz| of \package{array} package, so use this mechanism carefully. +%^^A% Load |\makegapedcells| inside group or inside environment +%^^A% (see table~\ref{tab:gaped}): +% Макрокоманда \cmd{\makegapedcells} временно переопределяет макрокоманду +% |\@classz| из пакета \package{array}, поэтому используйте её осторожно. +% Вводите команду |\makegapedcells| внутри группы или внутри окружения +% (см.~табл.~\ref{tab:gaped}): +%\begin{verbatim} +%\begin{table}[h] +%\makegapedcells +%... +%\end{table} +%\end{verbatim} +% \setcellgapes{5pt} +% \begin{table} +% \makegapedcells +% \ttabbox +% {\caption{Пример многострочных ячеек с~дополнительными вертикальными отбивками}%^^A +% \label{tab:gaped}}% +% {\begin{tabular}{|c|c|} +% \hline +% Cell text & 28--31\\ +% \hline +% \makecell{Multilined \\ cell text} & 28--31\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned \\ cell text} & 52--58\\ +% \hline +% \makecell*[{{p{3cm}}}]{Cell long text with predefined width} & 52--58\\ +% \hline +% \makecell[{{>{\parindent1em}p{3cm}}}]{Cell long text with predefined width} & +% 52--58\\ +% \hline +% \end{tabular}} +% \end{table} +% +%^^A% Please note that space defined in |\setcellgapes| and space which creates +%^^A% |\gape| mechanism in commands +%^^A% for tabular cells (usually |\thead| or |\makecell*|) are summarized. +% Обратите внимание, что отбивка заданная в~|\setcellgapes| и~отбивки, которые +% создаёт макрокоманда |\gape| (|\Gape|) в~командах ячеек (обычно в~|\thead| +% или в~|\makecell*|) суммируются. +% +% \clearpage +%^^A% \section{Multirow Table Heads and Cells} +% \section{Заголовки колонок и~ячейки, занимающие несколько рядов} +% +%^^A% The next examples show usage of macros which use |\multirow| command from +%^^A% \package{multirow} package.\nopagebreak +% Следующие примеры показывают использование макрокоманд, использующих команду +% |\multirow| из пакета \package{multirow}.\nopagebreak +% +%^^A% At first goes short repetition of arguments of |\multirow| macro itself: +% В~начале краткое повторение значений аргументов команды |\multirow|: +% \begin{quote} +% |\multirow|\marg{nrow}\oarg{njot}\marg{width}\oarg{vmove}\marg{contents} +% \end{quote} +%^^A% \marg{nrow} sets number of rows (i.e. text lines); +% \marg{nrow} задаёт число рядов (то есть строк текста); +%^^A% \oarg{njot} is mainly used if you've used \package{bigstrut} package: it makes +%^^A% additional tuning of vertical position (see comments in +%^^A% \package{multirow} package); +% \oarg{njot} обычно используется если вы используете пакет \package{bigstrut}: делает +% дополнительную настройку вертикального положения (см. пояснения в~пакете +% \package{mutirow}); +%^^A% \marg{width} defines width of contents, the |*| sign used to indicate that +%^^A% the text argument's natural width is to be used; +% \marg{width} определяет ширину включённого текста, знак~|*| используется +% для указания, что используется натуральная ширина включённого текста; +%^^A% \oarg{vmove} is a length used for fine tuning: the text will be raised (or +%^^A% lowered, if \meta{vmove} is negative) by that length; +% \oarg{vmove} величина, используемая для тонкой настройки: текст может быть +% поднят (или опущен, если \meta{vmove} отрицательна) на эту величину; +%^^A% \marg{contents} includes ``|\multirow|'ed'' text.\smallskip +% \marg{contents} <<многорядный>> текст.\smallskip\pagebreak[3] +% +% \DescribeMacro{\multirowcell} +% \DescribeMacro{\multirowthead} +%^^A% These two macros use following arguments (example uses |\multirowcell| +%^^A% command): +% Эти две команды используют следующие аргументы (пример использует команду +% |\multirowcell|): +% \begin{quote} +% |\multirowcell|\marg{nrow}\oarg{vmove}\oarg{v or/and h alignment}\marg{contents} +% \end{quote} +%^^A% in these macros were skipped \oarg{njot} and \marg{width}. Instead of +%^^A% tuning optional argument \oarg{njot} for vertical +%^^A% correction used \oarg{vmove} optional argument. +%^^A% For the \marg{width} argument both |\multirowcell| and |\multirowthead| +%^^A% macros use natural width of contents (i.e. the |*| argument used). +% в~этих макрокомандах опущены аргументы \oarg{njot} и~\marg{width}. +% Вместо дополнительного аргумента \oarg{njot} для вертикальной настройки +% используется дополнительный аргумент \oarg{vmove}. +% В~качестве аргумента \marg{width} макрокоманды |\multirowcell| и~|\multirowthead| +% используют натуральную величину включённого текста (то есть используется +% аргумент |*|). +% +%^^A% First example (table~\ref{tab:mrowI}) with ``|\multirow|'ed'' column heads +%^^A% and cells: +% Первый пример (табл.~\ref{tab:mrowI}) с~<<многорядными>> заголовками +% табличных колонок и~ячейками: +%\begin{verbatim} +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\begin{tabular}{|l|c|c|} +% \multirowthead{4}{First ...}& +% \multicolumn{2}{c|}{\thead{Multicolumn head}}\\ +% \cline{2-3} +% & \thead{Second ...} & \thead{Third ...}\\ +% \hline +% Cell text & A &\multirowcell{3}{28--31}\\ +% \cline{1-2} +% \makecell{Multilined\\Cell text} & B& \\ +% \hline +% \makecell[l]{Left ...} & C & \multirowcell{4}[1ex][l]{37--43}\\ +% \cline{1-2} +% \makecell[r]{Right ...} & D & \\ +% \hline +% \makecell[b]{Bottom ...} & E & \multirowcell{5}[1ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{5cm}}}]{Cell ...} & F & \\ +% \cline{1-2} +% \makecell[{{>{\parindent1em}p{5cm}}}]{Cell ...} & G & \\ +% \hline +% \end{tabular} +%\end{verbatim} +% +% \begin{table} +%\renewcommand\theadset{\def\arraystretch{.85}}% +% \ttabbox +% {\caption{Пример <<многорядных>> ячеек}\label{tab:mrowI}}% +% {\begin{tabular}{|l|c|c|} +% \hline +% \multirowthead{4}{First Column head}& +% \multicolumn{2}{c|}{\thead{Multicolumn head}}\\ +% \cline{2-3} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +% \hline +% Cell text & A &\multirowcell{3}{28--31}\\ +% \cline{1-2} +% \makecell{Multilined\\Cell text} & B& \\ +% \hline +% \makecell[l]{Left aligned\\ cell text} & C & \multirowcell{4}[1ex][l]{37--43}\\ +% \cline{1-2} +% \makecell[r]{Right aligned\\ cell text} & D & \\ +% \hline +% \makecell[b]{Bottom aligned\\ cell text} & E & +% \multirowcell{5}[1ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{5cm}}}]{Cell long long long long text with predefined width} & F & \\ +% \cline{1-2} +% \makecell[{{>{\parindent1em}p{5cm}}}]{Cell long long long long text with +% predefined width} & G & \\ +% \hline +% \end{tabular}} +% \end{table} +% +%^^A% Second example (table~\ref{tab:mrowII}) with ``multirow'ed'' column heads +%^^A% and cells uses |\makegapedcells| command. The |\theadgape| command does +%^^A% nothing: +% Второй пример (табл.~\ref{tab:mrowII}) с~<<многорядными>> заголовками колонок +% и~ячейками использует команду |\makegapedcells|. Команда |\theadgape| ничего +% не делает: +%\begin{verbatim} +%\makegapedcells +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +%... +%\end{verbatim} +% \begin{table}\makegapedcells +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +% \ttabbox +% {\caption{Пример <<многорядных>> ячеек с~дополнительными вертикальными +% отбивками}\label{tab:mrowII}}% +% {\begin{tabular}{|l|c|c|} +% \hline +% \multirowthead{4}{First Column head}& +% \multicolumn{2}{c|}{\thead{Multicolumn head}}\\ +% \cline{2-3} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +% \hline +% Cell text & A &\multirowcell{4}{28--31}\\ +% \cline{1-2} +% \makecell{Multilined \\Cell text} & B& \\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & C & \multirowcell{4}[0ex][l]{37--43}\\ +% \cline{1-2} +% \makecell[r]{Right aligned \\ cell text} & D & \\ +% \hline +% \makecell[b]{Bottom aligned \\ cell text} & E & +% \multirowcell{6}[0ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{5cm}}}]{Cell long long long long text with predefined width} & F & \\ +% \cline{1-2} +% \makecell[{{>{\parindent1em}p{5cm}}}]{Cell long long long long text +% with predefined width} & G & \\ +% \hline +% \end{tabular}} +% \end{table} +% \bigskip +% +%^^A% The last example (table~\ref{tab:mrowIII}) uses \env{tabularx} environment +%^^A% with |\hsize| in the width argument. +% Последний пример (табл.~\ref{tab:mrowIII}) использует окружение \env{tabularx} +% со значением |\hsize| в~аргументе ширины таблицы. +%\begin{verbatim} +%\makegapedcells +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +%\begin{tabularx}\hsize{|X|c|c|} +%... +%\cline{1-2} +%\makecell[{{p{\hsize}}}]{Cell ...} & F & \\ +%\cline{1-2} +%\makecell[{{>{\parindent1em}p{\hsize}}}]{Cell ...} & G & \\ +%\hline +%\end{tabularx} +%\end{verbatim} +%^^A% As you may see the |\makecell|'s in last two rows defined as +% Как можно видеть, ячейки |\makecell| в~последних двух рядах определены как +% \begin{quote} +% |\makecell[{{p{\hsize}}}]{...}| +% \end{quote} +% и +% \begin{quote} +% |\makecell[{{>{\parindent1em}p{\hsize}}}]{...}| +% \end{quote} +%^^A% consequently. +% соответственно. +% \begin{table}\makegapedcells +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadfont{\footnotesize}% +%\renewcommand\theadgape{} +% \ttabbox +% {\caption{Пример окружения \env{tabularx}}\label{tab:mrowIII}}% +% {\begin{tabularx}\hsize{|X|c|c|} +% \hline +% \multirowthead{4}{First Column head}& +% \multicolumn{2}{c|}{\thead{Multicolumn head}}\\ +% \cline{2-3} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +% \hline +% Cell text & A &\multirowcell{4}{28--31}\\ +% \cline{1-2} +% \makecell{Multilined \\Cell text} & B& \\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & C & \multirowcell{4}[0ex][l]{37--43}\\ +% \cline{1-2} +% \makecell[r]{Right aligned \\ cell text} & D & \\ +% \hline +% \makecell[b]{Bottom aligned \\ cell text} & E & +% \multirowcell{6}[0ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{\hsize}}}]{Cell long long long long long long text with +% predefined width} & F & \\ +% \cline{1-2} +% \makecell[{{>{\parindent1em}p{\hsize}}}]{Cell long long long long +% long long text with predefined width} & G & \\ +% \hline +% \end{tabularx}} +% \end{table} +% +%^^A% \subsection{Multirow Table Heads and Cells: Second Variant} +% \subsection{Ячейки на несколько рядов: второй вариант} +% +%^^A% Another, simplified, variant of multirow cell: use +%^^A% |\makecell| and |\thead| commands, and set |\\| with +%^^A% negative space at the end, for example +% Второй, упрощённый, вариант задания ячейки на несколько рядов: \cdash--- +% использовать команды |\makecell| и~|\thead|, а~в~конце аргумента задать |\\| +% с~отрицательной отбивкой, например +%\begin{quote} +% |\thead{First Column head\\[-5ex]}| +%\end{quote} +%^^A% cells, which stay in one ``multi row'' will have the same value of this +%^^A% negative space, in spite of different number of lines in their contents. +% при этом у~ячеек в~одном <<многоярусном>> ряду, сколько бы строк они ни имели бы, +% отрицательная отбивка будет всегда одинаковая. +% +% \clearpage\suppressfloats[t] +%^^A% \section{Numbered Lines in Tabulars} +% \section{Нумерованные ряды ячеек в~таблицах} +% +%^^A% The three commands |\eline|, |\nline|, |\rnline| allow to skip: +% Команды |\eline|, |\nline|, |\rnline| позволяют пропустить несколько ячеек: +% \begin{quote} +% |\eline|\marg{number of cells} +% \end{quote} +% и~пронумеровать (|\nline|) несколько или все ячейки в~ряду: +% \begin{quote} +% |\nline|\oarg{numbering type}\oarg{start number}\marg{number of cells} +% \end{quote} +%^^A% Command |\rnline| does the same as |\nline|, but allows numbering by +%^^A% Russian letters (it redefines +%^^A% \LaTeX's |\Alph| and |\alph| with |\Asbuk| and |\asbuk| consequently). +%^^A% (see table~\ref{tab:elines}) +% Команда |\rnline| работает так же как |\nline|, но вместо нумерации +% латинскими буквами задаётся нумерация русскими (переопределяются счётчики +% \LaTeX'а |\Alph| а~|\alph| на |\Asbuk| и~|\asbuk| соответственно). +% (см.~табл.~\ref{tab:elines}) +%\begin{verbatim} +% \begin{tabular}{|*{12}{c|}} +% \hline +% \eline{6} \\ \hline +% \nline{6} \\ \hline +% \eline{3} & \nline[1][4]{3} \\ \hline +% \rnline[(a)]{6} \\ \hline +% \nline[column I]{6} \\ \hline +% \end{tabular} +%\end{verbatim} +% +% \begin{table}[htb] +% \ttabbox +% {\caption{Примеры заполнения ячеек}\label{tab:elines}}% +% {\begin{tabular}{|*{12}{c|}} +% \hline +% \eline{6} \\ \hline +% \nline{6} \\ \hline +% \eline{3} & \nline[1][4]{3} \\ \hline +% \rnline[(a)]{6} \\ \hline +% \nline[column I]{6} \\ \hline +% \end{tabular}} +%\end{table} +% +%^^A% Two ``lazy'' commands: for empty table rows +%^^A% (|\erows|) and for rows with repeated text (|\Xrows|) were added in the version V0.1e. +% В~версии V0.1e добавлены две команы «для лодырей»: для создания пустых рядов в~таблице +% (|\erows|) и~для рядов с~повторяющимся текстом (|\Xrows|). +% +%\DeleteShortVerb{\|} +%\begin{verbatim} +% \begin{tabular}{|*{4}{c|}} +% \hline +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hline +% \erows{4}{8} +% \end{tabular}\quad +% \begin{tabular}{||c||c||c||c||} +% \hhline{|t:=:t:=:t:=:t:=:t|} +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hhline{|:=::=::=::=:|} +% \erows[\\ \hhline{|:=::=::=::=:|}]{4}{8} +% \eline{4}\\ \hhline{|b:=:b:=:b:=:b:=:b|} +% \end{tabular}\quad +% \begin{tabular}{|*{4}{c|}} +% \hline +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hline +% \Xrows{\refstepcounter{enumi}\arabic{enumi}.\eline{3}\\ \hline}{8} +% \end{tabular} +%\end{verbatim} +% +% \begin{table}[hbt]\extrarowheight1pt +% \ttabbox[\hsize] +% {\caption{Examples of filling of cells}\label{tab:elines}}% +% {\begin{tabular}{|*{4}{c|}} +% \hline +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hline +% \erows{4}{8} +% \end{tabular}\par\bigskip +% \begin{tabular}{||c||c||c||c||} +% \hhline{|t:*3{=:t:}=:t|} +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hhline{|:*3{=::}=:|} +% \erows[\\ \hhline{|:*3{=::}=:|}]{4}{7} +% \eline{4}\\ +% \hhline{|b:*3{=:b:}=:b|} +% \end{tabular}\par\bigskip +% \begin{tabular}{|*{4}{c|}} +% \hline +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hline +% \Xrows{\refstepcounter{enumi}\arabic{enumi}.\eline{4}\\ \hline}{8} +% \end{tabular}} +%\end{table} +%\MakeShortVerb{\|} +% +%^^A% \section{Cells (One-Column Tabulars) in the Text} +% \section{Ячейки (одноколоные таблицы) вкралпённые в~текст} +% +%^^A% If the |\makecell| command appears in the text (outside outer tabular +%^^A% environment) it could create wrong layout. The |\makecellbox| command +%^^A% and |mcellbox| environment are created for one-column tabulars in the text. +% Если команда |\makecell| появится внутри текста (т.\,е. вне другого окружения +% выравнивания) она создаст неверную вёрстку. Команда |\makecellbox| и~окружение +% |mcellbox| созданы для одноколонных простых таблиц, вкраплённых в~текст. +% +%^^A% \section{Diagonally Divided Cell} +% \section{Ячейки, разделённые по диагонали} +% +%^^A% This variant of head's positioning is not too popular nowadays, but in +%^^A% the some cases it could be used. Instead of creating of +%^^A% multicolumn head above a wide couple of all column heads except the +%^^A% very left column, the most left column head (upper left cell) +%^^A% divided by diagonal line. The lower head is usually head of very left +%^^A% column and upper head---``multicolumn'' to all other column heads of +%^^A% table to the right. +% Сейчас такой вариант расположения заголовков колонок не так популярен, +% но всё же иногда используется. Вместо создания большого +% заголовка-перереза над большим числом колонок, самый левый заголовок +% (верхняя левая ячейка таблицы) разделяется диагональю, где в~нижнем +% треугольнике обычно помещают заголовок боковика, а~в~верхнем \cdash--- +% заголовок относящийся к~колонкам прографки (заголовкам всех колонок справа). +% +%^^A% This package offers macro based on possibilities of \env{picture} +%^^A% environment. +% Данный пакет предлагает макрокоманду, в~основе которой используется +% окружение \env{picture}. +% \begin{quote} +% |\diaghead|\texttt{(}\meta{\texttt{\textup{H}} ratio,%^^A +% \textup{\texttt{V}} ratio}\texttt{)}%^^A +% \marg{Text set for column width}|%|\\ +% \phantom{/diaghead }\marg{First head}\marg{Second head} +% \end{quote} +%^^A% where \texttt{(}\meta{\textup{\texttt{H ratio}},%^^A +%^^A% \textup{\texttt{V ratio}}}\texttt{)} sets the ratios like in |\line| +%^^A% command (digits from~|1| up to~|6|). This argument is optional, +%^^A% the default ratio (|\line| +%^^A% direction) defined as~|(5,-2)|. +% где \texttt{(}\meta{\textup{\texttt{H ratio}},%^^A} +% \textup{\texttt{V ratio}}}\texttt{)} определяет отношение диагонали, как +% в~первом аргументе команды |\line| +% (целые числа от~|1| до~|6|). Аргумент не является обязательным, отношение, +% заданное по умолчанию (направление диагонали |\line|) равно~|(5,-2)|. +% +%^^A% The \marg{Text set for column width} +%^^A% defined by hand, for example: +%^^A% \quad 1)\nobreak\enskip sets the width, using longest text lines from +%^^A% both heads---in this case you must put |\theadfont| macro, if you use +%^^A% |\thead|s; \quad 2)\nobreak\enskip the longest text from the rest of +%^^A% column; \quad 3)\nobreak\enskip |\hskip|\meta{value}, even |\hskip\hsize| +%^^A% the case of |p| column (or |X| column in \env{tabularx} environment). +%^^A% The \marg{First head} +%^^A% is head in lower corner (usually for first or very left column), +%^^A% \marg{Second head}---in the upper corner (head for the all right columns). +% Аргумент \marg{Text set for column width} +% задаётся обычно подбором, например: +% \quad 1)\nobreak\enskip задаёт ширину, используя самые длинные строки +% в~обоих заголовках \cdash--- в~этом случае, если вы +% используете в~таблицах команды |\thead|, нужно задать |\theadfont|; +% \quad 2)\nobreak\enskip самую длинную строку боковика, +% если она больше заголовков; +% \quad 3)\nobreak\enskip горизонтальную отбивку |\hskip|\meta{value}, +% можно использовать даже такое: |\hskip\hsize| если это +% колонка |p| (или |X| из окружения \env{tabularx}). +% Аргумент \marg{First head} \cdash--- +% заголовок в~нижнем углу (обычно для боковика), +% \marg{Second head} \cdash--- в~верхнем углу (заголовок для прографки +% \cdash--- остальных колонок). +% +%^^A% Here is code of table~\ref{tab:diaghead}. +% Здесь приведён код табл.~\ref{tab:diaghead}. +%\begin{verbatim} +% \begin{tabular}{|c|c|c|}% +% \hline +% \diaghead{\theadfont Diag ColumnmnHead II}%^^A +% {Diag \\Column Head I}{Diag Column\\ Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +% ... +% \end{tabular}\medskip +% +% \begin{tabularx}{.62\hsize}{|X|c|c|}% +% \hline +% \diaghead(4,1){\hskip\hsize}% +% %^^A{\theadfont Diag ColuDiag Column}%^^A +% {Diag \\Column Head I}{Diag Column \\Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +% ... +% \end{tabularx}\medskip +% +% \nomakegapedcells +% \begin{tabular}{|l|c|c|}% +% \hline +% \diaghead(-4,1){\hskip4.2cm}%^^A +% {Diag \\Column Head I}{Diag Column \\Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +% ... +% \end{tabular}% +%\end{verbatim}% +% +% \begin{table}[!bp]\makegapedcells +% \begin{tabular}{|c|c|c|}% +% \hline +% \diaghead{\theadfont Diag ColumnmnHead II}%^^A +% {Diag \\Column Head I}{Diag Column\\ Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & A & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & B & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned\\ cell text} & C & 52--58\\ +% \hline +% \end{tabular}% +% \medskip +% +% \begin{tabularx}{.62\hsize}{|X|c|c|}% +% \hline +% \diaghead(4,1){\hskip\hsize}% +% %^^A{\theadfont Diag ColuDiag Column}%^^A +% {Diag \\Column Head I}{Diag Column \\Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & A & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & B & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned\\ cell text} & C & 52--58\\ +% \hline +% \end{tabularx}% +% \medskip +% +% \nomakegapedcells +% \begin{tabular}{|l|c|c|}% +% \hline +% \diaghead(-4,1){\hskip4.2cm}%^^A +% {Diag \\Column Head I}{Diag Column \\Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & A & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & B & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned\\ cell text} & C & 52--58\\ +% \hline +% \end{tabular}% +% \caption{Пример таблиц с~ячейками поделёнными по +% диагонали}\label{tab:diaghead} +% \end{table}% +%^^A% The correct position of diagonal ends depends of width of column. If cell width +%^^A% is narrower then necessary +%^^A% column ends of diagonal don't touch corners of cell. +% Точное попадание концов диагонали в~углы ячейки зависит от её ширины. Если ячейка +% \'уже необходимого то концы диагонали не «дотягиваются» до углов. +% +%^^A% \section{Comparison: Diagonally Divided Cell with the slashbox package} +% \section{Сравнение: ячейки, разделённые по диагонали в~пакете slashbox} +% +%^^A% I didn't know about the \texttt{slashbox} package in time +%^^A% when the part of code for the diagonal cells was created. This package uses also picture +%^^A% |\line| mechanism, but calculates slopes automatically. It creates the +%^^A% |\backslash| direction of diagonal lines only. (The |\slash| direction +%^^A% is not correct? Or direction depends to traditions of current publishing house?) +% Во время создания команд ячеек, разделённых по диагонали мне не было известно +% о~пакете \texttt{slashbox}. Этот пакет также использует механизм окружения |picture| +% и~команды |\line|, но наклон линии рассчитывается автоматически. Пакет создаёт +% только наклон, соответствующий обратной наклонной (|\backslash|). (Направление, +% соответствующее прямой наклонной (|\slash|) всё-таки не является +% корректным. Или направление зависит от традиций издательства?) +% +%^^A% Here is used citation of the sample file distributed with the \texttt{slashbox} package%^^A +%^^A% \footnote{by Koichi Yasuoka, May 27, 1993; minor modification by Toru Sato, May 31, 1993}. +%^^A% The verbatim of the table examples are added only in citation.\smallskip +% Далее цитируется файл-образец (лучше читать текст этого параграфа +% на английском!), распространяемый вместе с~пакетом \texttt{slashbox}%^^A +% \footnote{by Koichi Yasuoka, May 27, 1993; minor modification by Toru Sato, May 31, 1993}. +% Здесь только добавлен |verbatim| примеров.\smallskip +% +% \begingroup\slshape +%^^A% The usage is pretty straightforward, such as +% Использование достаточно простое, например +% +%\begin{table}[H]% +%\begin{verbatim} +%\begin{tabular}{|l||*{5}{c|}}\hline +%\backslashbox{Room}{Date} +%&\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2} +%&\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline +%Meeting Room &&&&&\\\hline +%Auditorium &&&&&\\\hline +%Seminar Room &&&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \noindent +% \begin{tabular}{|l||*{5}{c|}}\hline +% \backslashbox{Room}{Date} +% &\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2} +% &\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline +% Meeting Room &&&&&\\\hline +% Auditorium &&&&&\\\hline +% Seminar Room &&&&&\\\hline +% \end{tabular} +%\end{table}% +% +%^^A% You may include a newline (\verb+\\+) in `Room' and/or `Date'. +%^^A% Note that you will get spaces aside the slash line if there is a +%^^A% wider column in the same column of a different line. +%^^A% In such a case, you need to specify the width of the slashed column +%^^A% by saying +% Вы можете использовать команду новой строки (\verb+\\+) в~аргументах, +% где заданы слова «Room» и/или «Date». Обратите внимание, что вы +% получите пробелы около наклонной линии, если содержимое колонки +% шире её головки. В~этом случае вам нужно определить ширину колонки, +% задав +% +%\begin{table}[H]% +%\begin{verbatim} +%\begin{tabular}{|l||*{4}{c|}}\hline +%\backslashbox[48mm]{Room}{Date} +%&\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2} +%&\makebox[3em]{6/3}\\\hline\hline +%Room With a Long Name &&&&\\\hline +%Auditorium &&&&\\\hline +%Seminar Room &&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \noindent +% \begin{tabular}{|l||*{4}{c|}}\hline +% \backslashbox[48mm]{Room}{Date} +% &\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2} +% &\makebox[3em]{6/3}\\\hline\hline +% Room With a Long Name &&&&\\\hline +% Auditorium &&&&\\\hline +% Seminar Room &&&&\\\hline +% \end{tabular} +%\end{table}% +% +%^^A% The specified width is neglected if it is narrower than the natural +%^^A% width of the column. +% Заданная ширина не будет принята в~расчёт, если реальная ширина шапки +% больше. +% +%^^A% \verb+\(back)slashbox+ assumes by default that there is a blank space +%^^A% of width \verb+\tabcolsep+ on both sides of the column. Thus the +%^^A% slash line might exceeds the boundary when you use \verb+@{}+ +%^^A% etc. +% Команда \verb+\(back)slashbox+ по умолчанию предполагает, что вокруг колонки +% задана отбивка, равная \verb+\tabcolsep+. В~результате, если вы используете +% что-то вроде \verb+@{}+, наклонная может вылезти на поля. +% +% Этого можно избежать, задав +% +%\begin{table}[H]% +%\begin{verbatim} +%\begin{tabular}{|@{\ $\bullet$\hspace*{3mm}}l||*{5}{c|}}\hline +%\multicolumn{1}{|@{}l||}{\backslashbox[0pt][l]{Room}{Date}} +%&\makebox[3em]{5/31}&\makebox[4em]{6/1}&\makebox[3em]{6/2} +%&\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline +%Meeting Room &&&&&\\\hline +%Auditorium &&&&&\\\hline +%Seminar Room &&&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \bigskip +% +% \noindent +% \begin{tabular}{|@{\ $\bullet$\hspace*{3mm}}l||*{5}{c|}}\hline +% \multicolumn{1}{|@{}l||}{\backslashbox[0pt][l]{Room}{Date}} +% &\makebox[3em]{5/31}&\makebox[4em]{6/1}&\makebox[3em]{6/2} +% &\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline +% Meeting Room &&&&&\\\hline +% Auditorium &&&&&\\\hline +% Seminar Room &&&&&\\\hline +% \end{tabular} +%\end{table}% +% +%^^A% Here \verb+[l]+ tells the command that there is no extra space on the +%^^A% left of this column. You can use \verb+[r]+ and \verb+[lr]+ likewise. +%^^A% You have to also specify the width of the column in this case, but it +%^^A% can be~0pt. +% Здесь \verb+[l]+ сообщает, что слева не дополнительной отбивки слева. +% Можно использовать \verb+[r]+ и~\verb+[lr]+ аналогично. +% В~этом случае вы должны не забыть задать ширину колонки, которую можно +% задать как~0pt. +% \endgroup +% +%^^A% The addition for the sample with |\slashbox| command. This example demonstrates +%^^A% that you may combine the \texttt{makecell} commands and |\backslashbox|. +% Небольшое дополнение к~файлу-образцу. Даный пример показывает, что возможно +% использование команд \texttt{thead} (или \texttt{makecell}), а~также +% команд-настроек выключки и~шрифта вместе с~|\backslashbox|. +% +%\begin{table}[H]% +%\begin{verbatim} +%\begin{tabular}{|l||*{5}{c|}}\hline +%\theadset\theadfont\backslashbox{Room}{Date} +%&\makebox[3em]{\thead{5/31}}&\makebox[3em]{\thead{6/1}}&\makebox[3em]{\thead{6/2}} +%&\makebox[3em]{6/3}&\makebox[3em]{\thead{6/4}}\\\hline\hline +%Meeting Room &&&&&\\\hline +%Auditorium &&&&&\\\hline +%Seminar Room &&&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \noindent +% \begin{tabular}{|l||*{5}{c|}}\hline +%\theadset\theadfont\backslashbox{Room}{Date} +%&\makebox[3em]{\thead{5/31}}&\makebox[3em]{\thead{6/1}}&\makebox[3em]{\thead{6/2}} +%&\makebox[3em]{6/3}&\makebox[3em]{\thead{6/4}}\\\hline\hline +% Meeting Room &&&&&\\\hline +% Auditorium &&&&&\\\hline +% Seminar Room &&&&&\\\hline +% \end{tabular} +%\end{table}% +% +%\begin{table}[H] +%\begin{verbatim} +%\begin{tabular}{|l||*{4}{c|}}\hline +%\theadset\backslashbox[48mm]{Room}{Date} +%&\makebox[3em]{\thead{5/31}}&\makebox[3em]{\thead{6/1}}&\makebox[3em]{\thead{6/2}} +%&\makebox[3em]{\thead{6/3}}\\\hline\hline +%Room With a Long Name &&&&\\\hline +%Auditorium &&&&\\\hline +%Seminar Room &&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \noindent +% \begin{tabular}{|l||*{4}{c|}}\hline +% \theadset\backslashbox[48mm]{Room}{Date} +% &\makebox[3em]{\thead{5/31}}&\makebox[3em]{\thead{6/1}}&\makebox[3em]{\thead{6/2}} +% &\makebox[3em]{\thead{6/3}}\\\hline\hline +% Room With a Long Name &&&&\\\hline +% Auditorium &&&&\\\hline +% Seminar Room &&&&\\\hline +% \end{tabular} +%\end{table}% +% +% \clearpage +%^^A% \section{Thick \cmd{\hline} and \cmd{\cline}} +% \section{Команды \texorpdfstring{\cmd{\hline}}{hline} и~\texorpdfstring{\cmd{\cline}}{cline} заданной толщины} +% +%^^A% For horizontal rules in tabular there were added two commands +%^^A% \cmd{\Xhline} and \cmd{\Xcline} +%^^A% They use additional mandatory argument with defined rule width. +% Для горизонтальных линеек в~табличном материале добавлены две команды +% \cmd{\Xhline} и~\cmd{\Xcline} +% Они имеют обязательный аргумент с~заданием ширины линейки. +% +%^^A% The example, with result in table~\ref{tab:XmrowIII}. +% Пример применения команд см.~в~табл.~\ref{tab:XmrowIII}. +%\begin{verbatim}% +%\begin{table} +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +%\ttabbox +%{\caption{...}\label{...}}% +%{\begin{tabular}{!{\vrule width1.2pt}c +% !{\vrule width1.2pt}c|c +% !{\vrule width1.2pt}} +%\Xhline{1.2pt} +%\multirowthead{4}{First Column head}& +%\multicolumn{2}{c!{\vrule width1.2pt}}{\thead{Multicolumn head}}\\ +%\Xcline{2-3}{1.2pt} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +%\Xhline{1.2pt} +%Cell text & A &\multirowcell{4}{28--31}\\ +%... +%\Xhline{1.2pt} +%\end{tabular}} +%\end{table} +%\end{verbatim}% +% +% \begin{table}\makegapedcells\relax +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +% \ttabbox +% {\caption{Пример окружения \env{tabular} с~использованием толстых +% линеек}\label{tab:XmrowIII}}% +% {\begin{tabular}{!{\vrule width1.2pt}c +% !{\vrule width1.2pt}c|c!{\vrule width1.2pt}} +% \Xhline{1.2pt} +% \multirowthead{4}{First Column head}& +% \multicolumn{2}{c!{\vrule width1.2pt}}{\thead{Multicolumn head}}\\ +% \Xcline{2-3}{1.2pt} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +% \Xhline{1.2pt} +% Cell text & A &\multirowcell{4}{28--31}\\ +% \cline{1-2} +% \makecell{Multilined \\Cell text} & B& \\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & C +% & \multirowcell{4}[0ex][l]{37--43}\\ +% \cline{1-2} +% \makecell[r]{Right aligned \\ cell text} & D & \\ +% \hline +% \makecell[b]{Bottom aligned \\ cell text} & E & +% \multirowcell{6}[0ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{5cm}}}]{Cell long long long long long long text with +% predefined width} & F & \\ +% \cline{1-2} +% \makecell[{{>{\parindent1em}p{5cm}}}]{Cell long long long long long +% long text with predefined width} & G & \\ +% \Xhline{1.2pt} +% \end{tabular}} +% \end{table} +% +% \Finale +\endinput diff --git a/macros/latex/contrib/makecell/makecell.dtx b/macros/latex/contrib/makecell/makecell.dtx new file mode 100644 index 0000000000..c0988087b4 --- /dev/null +++ b/macros/latex/contrib/makecell/makecell.dtx @@ -0,0 +1,1983 @@ +% \iffalse +% +% makecell.dtx - Managing of tabular column heads and cells. +% (c) 2005--2007 Olga Lapko (Lapko.O@g23.relcom.ru) +% +% This program is provided under the terms of the +% LaTeX Project Public License distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{makecell.dtx} +% +%\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%\ProvidesPackage{makecell} +%<*package> + [2009/08/03 V0.1e Managing of Tab Column Heads and Cells] +% +% +%<*batchfile> +\begingroup + +\input docstrip.tex + +\keepsilent +\askforoverwritefalse + +\generate{\file{makecell.sty}{\from{makecell.dtx}{package}}} + +\endgroup +% +% +%<*driver> +\documentclass{ltxdoc} +\IfFileExists{rotating.sty}{\usepackage{rotating}}{} +\IfFileExists{footmisc.sty}{\usepackage[perpage,bottom]{footmisc}}{} +\IfFileExists{multirow.sty}{\usepackage{multirow}}{} +\IfFileExists{hyperref.sty}{\usepackage{hyperref}}{} +\IfFileExists{hypcap.sty}{\usepackage{hypcap}}{} +\usepackage{makecell} +\IfFileExists{caption.sty} + {\usepackage[font=small,labelfont=bf,labelsep=period]{caption}[2004/11/28] + \IfFileExists{floatrow.sty} + {\usepackage[font=small,style=plaintop,captionskip=5pt]{floatrow}} + {}}{} +\makeatletter +\@ifundefined{ttabbox}{\let\ttabbox\relax}{} +\makeatother +\usepackage{tabularx} +\usepackage{slashbox} +\usepackage{hhline} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\makeatletter +\@beginparpenalty10000 +\widowpenalty10000 +\clubpenalty10000 +\makeatother +\providecommand*{\file}[1]{\texttt{#1}} +\providecommand*{\package}[1]{\textsf{#1}} +\providecommand*{\cls}[1]{\textsf{#1}} +\providecommand*{\env}[1]{\texttt{#1}} + +%\OnlyDescription +\begin{document} + \DocInput{makecell.dtx} + \PrintChanges +\end{document} +% +% \fi +% +% \CheckSum{1407} +% +% \GetFileInfo{makecell.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment} +% +% +% \title{The \textsf{makecell} package\thanks{This +% file has version number \fileversion, +% last revised \filedate.}} +% \author{% +% Olga Lapko\\ +% {\tt Lapko.O@g23.relcom.ru} } +% \date{\filedate} +% \maketitle +% \begin{abstract} +% This package helps to create common layout for tabular material. +% The |\thead| command, based on one-column tabular environment, is offered +% for creation of tabular column heads. This macro allows to support common +% layout for tabular column heads in whole documentation. Another command, +% |\makecell|, is offered for creation of multilined tabular cells. +% There are also command |\makecellbox| command and |mcellbox| environment +% usage of tabular cells inside text. +% +% Package also offers: \quad 1)\nobreak\enskip macro |\makegapedcells|, +% which changes vertical spaces around all cells in tabular, like in +% \package{tabls} package, but uses code of \package{array} package. (Macro +% |\makegapedcells| redefines macro |\@classz| from \package{array} package. +% Macro |\nomakegapedcells| cancels this redefinition.); +% \quad 2)\nobreak\enskip macros |\multirowhead| and |\multirowcell|, +% which use |\multirow| macro from \package{multirow} package; +% \quad 3)\nobreak\enskip numbered rows |\nline| or skipping cells |\eline| +% in tabulars; also are the skipping rows command |\erows| and +% repeated rows command |\Xrows|; +% \quad 4)\nobreak\enskip diagonally divided cells (|\diaghead|) +% plus citation of sample file of \package{slashbox} package, which does the same; +% \quad 5)\nobreak\enskip |\hline| and |\cline| with defined thickness: +% |\Xhline| and |\Xcline| consequently. +% \smallskip +% +% \end{abstract} +% +% \clearpage +% \tableofcontents +% +% \clearpage +% \section{Tabular Cells and Column Heads} +% +% \subsection{Building Commands} +% +% \DescribeMacro{\makecell} +% Macro creates one-column tabular with predefined common settings of +% alignment, spacing and vertical spaces around (see section~\ref{sec:sets}). +% This will be useful for creation of multilined cells. This macro allows +% optional alignment settings. +% \begin{quote} +% |\makecell|\oarg{vertical or/and horizontal alignment}\marg{cell text} +% \end{quote} +% For vertical alignment you use \texttt{t}, \texttt{b}, or \texttt{c}---%^^A +% this letters you usually put in optional argument of \env{tabular} or +% \texttt{array} environments. For horizontal alignment you may use alignment +% settings like \texttt{r}, \texttt{l}, or \texttt{c}, or more complex, like +% |{p{3cm}}|. Since this package loads \package{array} package, you may +% use such alignment settings like |{>{\parindent1cm}p{3cm}}|. +%\begin{verbatim} +%\begin{tabular}{|c|c|} +%\hline +%Cell text & 28--31\\ +%\hline +%\makecell{Multilined \\ cell text} & 28--31\\ +%\hline +%\makecell[l]{Left aligned \\ cell text} & 37--43\\ +%\hline +%\makecell*[r]{Right aligned \\ cell text} & 37--43\\ +%\hline +%\makecell[b]{Bottom aligned \\ cell text} & 52--58\\ +%\hline +%\makecell*[{{p{3cm}}}]{Cell long text with predefined width} & 52--58\\ +%\hline +%\makecell[{{>{\parindent1em}p{3cm}}}]{Cell long...} & 52--58\\ +%\hline +%\end{tabular} +%\end{verbatim} +% \begin{table}[h] +% \ttabbox +% {\caption{Example of multilined cells}\label{tab:cells}}% +% {\begin{tabular}{|c|c|} +% \hline +% Cell text & 28--31\\ +% \hline +% \makecell{Multilined \\ cell text} & 28--31\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned\\ cell text} & 52--58\\ +% \hline +% \makecell*[{{p{3cm}}}]{Cell long text with predefined width} & 52--58\\ +% \hline +% \makecell[{{>{\parindent1em}p{3cm}}}]{Cell long text with predefined width} & +% 52--58\\ +% \hline +% \end{tabular}} +% \end{table} +% +% Starred form of command, |\makecell*|, creates vertical |\jot| spaces +% around. +% +% \emph{Note}. When you define column alignment like |{p{3cm}}| in optional +% argument of |\makecell| (or |\thead|, see below), please follow these +% rules: \quad 1)\nobreak\enskip if vertical +% alignment defined, write column alignment in group, e.g. |[c{p{3cm}}]|; +% \quad 2)\nobreak\enskip if vertical alignment is absent, +% write column alignment in double +% group---|[{{p{3cm}}}]|, or add empty group---|[{}{p{3cm}}]|. Be also +% careful with vertical alignment when you define column alignment as +% paragraph block: e.g., use |{{b{3cm}}}| for bottom alignment (and +% |{{m{3cm}}}| for centered vertical alignment). +% +% \DescribeMacro{\thead} +% Macro creates one-column \texttt{tabular} for column heads with predefined +% common settings (see table~\ref{tab:thead}). This macro uses common layout +% for column heads: font, alignment, spacing, and vertical spaces around +% (see section~\ref{sec:tsets}). +%\begin{verbatim} +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\begin{tabular}{|l|c|} +%\hline +%\thead{First column head}& +% \thead{Second \\multlined \\ column head}\\ +%\hline +%Left column text & 28--31\\ +%\hline +%\end{tabular} +%\end{verbatim} +% \begin{table}[h] +% \ttabbox +% {\caption{Example of column heads}\label{tab:thead}} +% {\renewcommand\theadset{\def\arraystretch{.85}} +% \begin{tabular}{|l|c|} +% \hline +% \thead{First column head}& +% \thead{Second \\multlined \\ column head}\\ +% \hline +% Long left column text & 28--31\\ +% \hline +% \end{tabular}} +% \end{table} +% +% Starred form of command, |\thead*|, creates vertical |\jot| spaces around. +% +% \DescribeMacro{\rothead} +% Creates table heads rotated by 90$^\circ$ counterclockwise. +% Macro uses the same font and spacing settings as previous +% one, but column alignment changed to |p{\rotheadsize}| with |\raggedright| +% justification: in this case left side of all text lines ``lies'' +% on one base line. +% +% \DescribeMacro{\rotheadsize} +% This parameter defines the width of rotated tabular heads. You may define +% that like: +% \begin{quote} +% |\setlength\rotheadsize{3cm}| +% \end{quote} +% or +% \begin{quote} +% |\settowidth\rotheadsize{\theadfont |\meta{Widest head text}|}| +% \end{quote} +% like in following example (table~\ref{tab:rotheads}): +%\begin{verbatim} +%\settowidth\rotheadsize{\theadfont Second multilined} +%\begin{tabular}{|l|c|} +%\hline +%\thead{First column head}& +% \rothead{Second multilined \\ column head}\\ +%\hline +%Left column text & 28--31\\ +%\hline +%\end{tabular} +%\end{verbatim} +% \begin{table}[h] +% \ttabbox +% {\caption{Example of rotated column heads}\label{tab:rotheads}}%^^A% +% {\settowidth\rotheadsize{\theadfont Second multilined}%^^A +% \begin{tabular}{l|l} +% \hline +% \thead{First column head}& +% \rothead{Second multilined \\ column head}\\ +% \hline +% Long left column text & 28--31\\ +% \hline +% \end{tabular}} +% \end{table} +% +% \subsection{Settings For Tabular Cells}\label{sec:sets} +% +% This section describes macros, which make layout tuning for multilined +% cells, created by |\makecell| macro (and also |\multirowcell| and +% |\rotcell| macros). The |\cellset| macro also is used by |\thead| +% (|\rothead|, |\multirowtead|) macro. +% +% \DescribeMacro{\cellset} +% Spacing settings for cells. Here you could use commands like: +% \begin{quote} +% |\renewcommand\cellset{\renewcommand\arraytretch{1}%|\\ +% | \setlength\extrarowheight{0pt}}| +% \end{quote} +% as was defined in current package. +% +% \DescribeMacro{\cellalign} +% Default align for cells. Package offers vertical and horizontal centering +% alignment, it defined like: +% \begin{quote} +% |\renewcommand\cellalign{cc}| +% \end{quote} +% +% \DescribeMacro{\cellgape} +% Define vertical spaces around |\makecell|, using |\gape| command if +% necessary. It defined like: +% \begin{quote} +% |\renewcommand\cellgape{}| +% \end{quote} +% You may define this command like +% \begin{quote} +% |\renewcommand\cellgape{\Gape[1pt]}| +% \end{quote} +% or +% \begin{quote} +% |\renewcommand\cellgape{\gape[t]}| +% \end{quote} +% (See also section~\ref{sec:gape} about |\gape| and |\Gape| command.) +% +% \DescribeMacro{\cellrotangle} +% The angle for rotated cells and column heads. The default value 90 +% (counterclockwise). This value definition is used by both |\rotcell| and +% |\rothead| macros. +% +% \subsection{Settings For Column Heads}\label{sec:tsets} +% +% This section describes macros, which make layout tuning for tabular column +% heads, created by |\thead| (|\rothead|, |\multirowtead|) macro. +% +% \DescribeMacro{\theadfont} +% Sets a special font for column heads. It could be smaller size +% \begin{quote} +% |\renewcommand\theadfont{\foonotesize}| +% \end{quote} +% as was defined in current package (here we suppose that +% \verb|\small| command used for tabular contents itself). +% Next example defines italic shape +% \begin{quote} +% |\renewcommand\theadfont{\itshape}| +% \end{quote} +% +% \DescribeMacro{\theadset} +% Spacing settings for column heads. Here you could use commands like: +% \begin{quote} +% |\renewcommand\theadset{\renewcommand\arraytretch{1}%|\\ +% | \setlength\extrarowheight{0pt}}| +% \end{quote} +% +% \DescribeMacro{\theadalign} +% Default align for tabular column heads. Here also offered centering +% alignment: +% \begin{quote} +% |\renewcommand\theadalign{cc}| +% \end{quote} +% +% \DescribeMacro{\theadgape} +% Define vertical spaces around column head (|\thead|), +% using |\gape| command if necessary. +% It defined like: +% \begin{quote} +% |\renewcommand\theadgape{\gape}| +% \end{quote} +% +% \DescribeMacro{\rotheadgape} +% Analogous definition for rotated column heads. Default is absent: +% \begin{quote} +% |\renewcommand\rotheadgape{}| +% \end{quote} +% +% \clearpage +% \section{Changing of Height and Depth of Boxes}\label{sec:gape} +% +% Sometimes \env{tabular} or \env{array} cells, or some elements in text need a +% height/depth correction. The |\raisebox| command could help for it, but +% usage of that macro in these cases, especially inside math, is rather +% complex. Current package offers the |\gape| macro, which usage is similar +% to |\smash| macro. The |\gape| macro allows to change height and/or depth +% of included box with necessary dimension. +% +% \DescribeMacro{\gape} +% This macro changes included box by |\jot| value (usually 3\,pt). It is +% defined with optional and mandatory arguments, like |\smash| macro, which +% (re)defined by \package{amsmath} package. Optional argument sets change of +% height only (\texttt{t}) or depth only~(\texttt{b}). Mandatory argument +% includes text. +% \begin{quote} +% |\gape|\oarg{\texttt{t} or \texttt{b}}\marg{text} +% \end{quote} +% Examples of usage: +% \begin{quote} +% \noindent +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \gape{\cmd{\gape}\texttt{\{text\}}}\cr +% \noalign{\hrule} +% \crcr}}\qquad +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \gape[t]{\cmd{\gape}\texttt{[t]\{text\}}}\cr +% \noalign{\hrule\vskip\jot} +% \crcr}}\qquad +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \gape[b]{\cmd{\gape}\texttt{[b]\{text\}}}\cr +% \noalign{\hrule} +% \crcr}} +% \end{quote} +% +% \DescribeMacro{\Gape} +% Another way of height/depth modification. This macro allows different +% correction for height and depth of box: +% \begin{quote} +% |\Gape|\oarg{height corr}\oarg{depth corr}\marg{text} +% \end{quote} +% +% If both arguments absent, |\Gape| command works like |\gape|\marg{text}, in +% other words, command uses |\jot| as correction value for height and depth +% of box. +% +% If only one optional argument exists, |\Gape| command uses value +% from this argument for both height and depth box corrections. +% \begin{quote} +% \noindent +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \Gape{\cmd{\Gape}\texttt{\{text\}}}\cr +% \noalign{\hrule} +% \crcr}}\texttt{\phantom{xxxxx}}\qquad +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \Gape[\jot]{\cmd{\Gape}\texttt{[\cmd{\jot}]\{text\}}}\cr +% \noalign{\hrule} +% \crcr}}\\[2ex] +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \Gape[6pt]{\cmd{\Gape}\texttt{[6pt]\{text\}}}\cr +% \noalign{\hrule} +% \crcr}}\qquad +% \vbox{\halign{#\cr +% \noalign{\hrule} +% \Gape[6pt][-2pt]{\cmd{\Gape}\texttt{[6pt][-2pt]\{text\}}}\cr +% \noalign{\hrule\vskip8pt} +% \crcr}} +% \end{quote} +% +% You may also use |\height| and |\depth| parameters in optional arguments +% of |\Gape| macro, parameters was borrowed from |\raisebox| command. +% +% \DescribeMacro{\bottopstrut} +% \DescribeMacro{\topstrut} +% \DescribeMacro{\botstrut} +% These three macros modify standard |\strut| by |\jot| value: +% |\bottopstrut| changes both height and depth; +% \nopagebreak|\topstrut| changes only height; +% |\botstrut| changes only depth. +% These commands could be useful, for example, in first and last table rows. +% +% \emph{Note}. If you use +% \package{bigstrut} package note that these macros duplicate \cmd{\bigstrut}, +% \cmd{\bigstrut[t]}, and \cmd{\bigstrut[b]} commands consequently. Please +% note that value, which increases strut in \cmd{\topstrut} etc. equals to +% \cmd{\jot}, but \cmd{\bigstrut} and others use a special dimension +% \cmd{\bigstrutjot}. +% +% \clearpage +% \section{How to Change Vertical Spaces Around Cells +% in Whole Table}\label{sec:beta} +% +% This section describes macros which try to emulate one of possibilities of +% \package{tabls} package: to get necessary vertical spacing around cells. +% +% \DescribeMacro{\setcellgapes} +% Sets the parameters for vertical spaces: +% \begin{quote} +% |\setcellgapes|\oarg{\texttt{t} or \texttt{b}}\marg{value} +% \end{quote} +% The next examples with array and tabular use following settings: +% \begin{quote} +% |\setcellgapes{5pt}| +% \end{quote} +% You may also try to load negative values if you wish. This macro you may +% put in the preamble as common settings. +% +% \DescribeMacro{\makegapedcells} +% \DescribeMacro{\nomakegapedcells} +% The first macro switches on vertical spacing settings. The second cancels +% first~one. +% +% The \cmd{\makegapedcells} macro temporarily redefines macro +% |\@classz| of \package{array} package, so use this mechanism carefully. +% Load |\makegapedcells| inside group or inside environment +% (see table~\ref{tab:gaped}): +%\begin{verbatim} +%\begin{table}[h] +%\makegapedcells +%... +%\end{table} +%\end{verbatim} +% \setcellgapes{5pt} +% \begin{table} +% \makegapedcells +% \ttabbox +% {\caption{Example of multilined cells with additional vertical spaces}%^^A +% \label{tab:gaped}}% +% {\begin{tabular}{|c|c|} +% \hline +% Cell text & 28--31\\ +% \hline +% \makecell{Multilined \\ cell text} & 28--31\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned \\ cell text} & 52--58\\ +% \hline +% \makecell*[{{p{3cm}}}]{Cell long text with predefined width} & 52--58\\ +% \hline +% \makecell[{{>{\parindent1em}p{3cm}}}]{Cell long text with +% predefined width} & 52--58\\ +% \hline +% \end{tabular}} +% \end{table} +% +% Please note that space defined in |\setcellgapes| and space which creates +% |\gape| mechanism in commands +% for tabular cells (usually |\thead| or |\makecell*|) are summarized. +% +% \clearpage +% \section{Multirow Table Heads and Cells} +% +% The next examples show usage of macros which use |\multirow| command from +% \package{multirow} package.\nopagebreak +% +% At first goes short repetition of arguments of |\multirow| macro itself: +% \begin{quote} +% |\multirow|\marg{nrow}\oarg{njot}\marg{width}\oarg{vmove}\marg{contents} +% \end{quote} +% \marg{nrow} sets number of rows (i.e. text lines); +% \oarg{njot} is mainly used if you've used \package{bigstrut} package: it makes +% additional tuning of vertical position (see comments in +% \package{multirow} package); +% \marg{width} defines width of contents, the |*| sign used to indicate that +% the text argument's natural width is to be used; +% \oarg{vmove} is a length used for fine tuning: the text will be raised (or +% lowered, if \meta{vmove} is negative) by that length; +% \marg{contents} includes ``|\multirow|'ed'' text.\smallskip +% +% \DescribeMacro{\multirowcell} +% \DescribeMacro{\multirowthead} +% These two macros use following arguments (example uses |\multirowcell| +% command): +% \begin{quote} +% |\multirowcell|\marg{nrow}\oarg{vmove}\oarg{hor alignment}\marg{contents} +% \end{quote} +% in these macros were skipped \oarg{njot} and \marg{width}. Instead of +% tuning optional argument \oarg{njot} for vertical +% correction used \oarg{vmove} optional argument. +% For the \marg{width} argument both |\multirowcell| and |\multirowthead| +% macros use natural width of contents (i.e. the |*| argument used). +% +% First example (table~\ref{tab:mrowI}) with ``|\multirow|'ed'' column heads +% and cells: +%\begin{verbatim} +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\begin{tabular}{|l|c|c|} +% \multirowthead{4}{First ...}& +% \multicolumn{2}{c|}{\thead{Multicolumn head}}\\ \cline{2-3} +% & \thead{Second ...} & \thead{Third ...}\\ \hline +% Cell text & A &\multirowcell{3}{28--31}\\ \cline{1-2} +% \makecell{Multilined\\Cell text} & B& \\ \hline +% \makecell[l]{Left ...} & C & \multirowcell{4}[1ex][l]{37--43}\\ \cline{1-2} +% \makecell[r]{Right ...} & D & \\ \hline +% \makecell[b]{Bottom ...} & E & \multirowcell{5}[1ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{5cm}}}]{Cell ...} & F & \\ \cline{1-2} +% \makecell[{{>{\parindent1em}p{5cm}}}]{Cell ...} & G & \\ \hline +% \end{tabular} +%\end{verbatim} +% +% \begin{table}[p] +%\renewcommand\theadset{\def\arraystretch{.85}}% +% \ttabbox +% {\caption{Example of ``\cmd{\multirow}'ed'' cells}\label{tab:mrowI}}% +% {\begin{tabular}{|l|c|c|} +% \hline +% \multirowthead{4}{First Column head}& +% \multicolumn{2}{c|}{\thead{Multicolumn head}}\\ +% \cline{2-3} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +% \hline +% Cell text & A &\multirowcell{3}{28--31}\\ +% \cline{1-2} +% \makecell{Multilined\\Cell text} & B& \\ +% \hline +% \makecell[l]{Left aligned\\ cell text} & C +% & \multirowcell{4}[1ex][l]{37--43}\\ +% \cline{1-2} +% \makecell[r]{Right aligned\\ cell text} & D & \\ +% \hline +% \makecell[b]{Bottom aligned\\ cell text} & E & +% \multirowcell{5}[1ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{5cm}}}]{Cell long long long long text with predefined width} +% & F & \\ +% \cline{1-2} +% \makecell[{{>{\parindent1em}p{5cm}}}]{Cell long long long long text with +% predefined width} & G & \\ +% \hline +% \end{tabular}} +% \end{table} +% +% Second example (table~\ref{tab:mrowII}) with ``multirow'ed'' column heads +% and cells uses |\makegapedcells| command. The |\theadgape| command does +% nothing: +%\begin{verbatim} +%\makegapedcells +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +%... +%\end{verbatim} +% \begin{table}[p]\makegapedcells +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +% \ttabbox +% {\caption{Example of ``\cmd{\multirow}'ed'' cells and additional vertical +% spaces}\label{tab:mrowII}}% +% {\begin{tabular}{|l|c|c|} +% \hline +% \multirowthead{4}{First Column head}& +% \multicolumn{2}{c|}{\thead{Multicolumn head}}\\ +% \cline{2-3} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +% \hline +% Cell text & A &\multirowcell{4}{28--31}\\ +% \cline{1-2} +% \makecell{Multilined \\Cell text} & B& \\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & C +% & \multirowcell{4}[0ex][l]{37--43}\\ +% \cline{1-2} +% \makecell[r]{Right aligned \\ cell text} & D & \\ +% \hline +% \makecell[b]{Bottom aligned \\ cell text} & E & +% \multirowcell{6}[0ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{5cm}}}]{Cell long long long long text with predefined width} +% & F & \\ +% \cline{1-2} +% \makecell[{{>{\parindent1em}p{5cm}}}]{Cell long long long long text with +% predefined width} & G & \\ +% \hline +% \end{tabular}} +% \end{table} +% \bigskip +% +% The last example (table~\ref{tab:mrowIII}) uses \env{tabularx} environment +% with |\hsize| in the width argument. +%\begin{verbatim} +%\makegapedcells +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +%\begin{tabularx}\hsize{|X|c|c|} +%... +%\cline{1-2} +%\makecell[{{p{\hsize}}}]{Cell ...} & F & \\ +%\cline{1-2} +%\makecell[{{>{\parindent1em}p{\hsize}}}]{Cell ...} & G & \\ +%\hline +%\end{tabularx} +%\end{verbatim} +% As you may see the |\makecell|'s in last two rows defined as +% \begin{quote} +% |\makecell[{{p{\hsize}}}]{...}| +% \end{quote} +% and +% \begin{quote} +% |\makecell[{{>{\parindent1em}p{\hsize}}}]{...}| +% \end{quote} +% consequently. +% \begin{table}\makegapedcells +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +% \ttabbox +% {\caption{Example of \env{tabularx} environment}\label{tab:mrowIII}}% +% {\begin{tabularx}\hsize{|X|c|c|} +% \hline +% \multirowthead{4}{First Column head}& +% \multicolumn{2}{c|}{\thead{Multicolumn head}}\\ +% \cline{2-3} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +% \hline +% Cell text & A &\multirowcell{4}{28--31}\\ +% \cline{1-2} +% \makecell{Multilined \\Cell text} & B& \\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & C +% & \multirowcell{4}[0ex][l]{37--43}\\ +% \cline{1-2} +% \makecell[r]{Right aligned \\ cell text} & D & \\ +% \hline +% \makecell[b]{Bottom aligned \\ cell text} & E & +% \multirowcell{6}[0ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{\hsize}}}]{Cell long long long long long long text with +% predefined width} & F & \\ +% \cline{1-2} +% \makecell[{{>{\parindent1em}p{\hsize}}}]{Cell long long long long long +% long text with predefined width} & G & \\ +% \hline +% \end{tabularx}} +% \end{table} +% +% \subsection{Multirow Table Heads and Cells: Second Variant} +% +% Another, simplified, variant of multirow cell: use +% |\makecell| and |\thead| commands, and set |\\| with +% negative space at the end, for example +%\begin{quote} +% |\thead{First Column head\\[-5ex]}| +%\end{quote} +% cells, which stay in one ``multi row'' will have the same value of this +% negative space, in spite of different number of lines in their contents. +% +% \clearpage\suppressfloats[t] +% \section{Numbered Lines in Tabulars} +% +% The three commands |\eline|, |\nline|, |\rnline| allow to skip: +% \begin{quote} +% |\eline|\marg{number of cells} +% \end{quote} +% and numbering (|\nline|) a few/all sells in the row: +% \begin{quote} +% |\nline|\oarg{numbering type}\oarg{start number}\marg{number of cells} +% \end{quote} +% Command |\rnline| does the same as |\nline|, but allows numbering by +% Russian letters (it redefines +% \LaTeX's |\Alph| and |\alph| with |\Asbuk| and |\asbuk| consequently). +% (see table~\ref{tab:elines}) +%\begin{verbatim} +% \begin{tabular}{|*{12}{c|}} +% \hline +% \eline{6} \\ \hline +% \nline{6} \\ \hline +% \eline{3} & \nline[1][4]{3} \\ \hline +% \nline[(a)]{6} \\ \hline +% \nline[column I]{6} \\ \hline +% \end{tabular} +%\end{verbatim} +% +% \begin{table}[H] +% \ttabbox +% {\caption{Examples of filling of cells}\label{tab:elines}}% +% {\begin{tabular}{|*{6}{c|}} +% \hline +% \eline{6} \\ \hline +% \nline{6} \\ \hline +% \eline{3} & \nline[1][4]{3} \\ \hline +% \nline[(a)]{6} \\ \hline +% \nline[column I]{6} \\ \hline +% \end{tabular}} +%\end{table} +% +% Two ``lazy'' commands: for empty table rows +% (|\erows|) and for rows with repeated text (|\Xrows|) were added in the version V0.1e. +% +%\DeleteShortVerb{\|} +%\begin{verbatim} +% \begin{tabular}{|*{4}{c|}} +% \hline +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hline +% \erows{4}{8} +% \end{tabular}\quad +% \begin{tabular}{||c||c||c||c||} +% \hhline{|t:=:t:=:t:=:t:=:t|} +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hhline{|:=::=::=::=:|} +% \erows[\\ \hhline{|:=::=::=::=:|}]{4}{8} +% \eline{4}\\ \hhline{|b:=:b:=:b:=:b:=:b|} +% \end{tabular}\quad +% \begin{tabular}{|*{4}{c|}} +% \hline +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hline +% \Xrows{\refstepcounter{enumi}\arabic{enumi}.\eline{3}\\ \hline}{8} +% \end{tabular} +%\end{verbatim} +% +% \begin{table}[hbt]\extrarowheight1pt +% \ttabbox[\hsize] +% {\caption{Examples of filling of cells}\label{tab:elines}}% +% {\begin{tabular}{|*{4}{c|}} +% \hline +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hline +% \erows{4}{8} +% \end{tabular}\par\bigskip +% \begin{tabular}{||c||c||c||c||} +% \hhline{|t:*3{=:t:}=:t|} +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hhline{|:*3{=::}=:|} +% \erows[\\ \hhline{|:*3{=::}=:|}]{4}{7} +% \eline{4}\\ +% \hhline{|b:*3{=:b:}=:b|} +% \end{tabular}\par\bigskip +% \begin{tabular}{|*{4}{c|}} +% \hline +% \thead{No}&\thead{First Data}&\thead{Second Data}&\thead{Third Data} \\ +% \hline +% \Xrows{\refstepcounter{enumi}\arabic{enumi}.\eline{4}\\ \hline}{8} +% \end{tabular}} +%\end{table} +%\MakeShortVerb{\|} +% +% \section{Cells (One-Column Tabulars) in the Text} +% +% If the |\makecell| command appears in the text (outside outer tabular environment) +% it could create wrong layout. The |\makecellbox| command +% and |mcellbox| environment are created for one-column tabulars in the text. +% +% \section{Diagonally Divided Cell} +% +% This variant of head's positioning is not too popular nowadays, but in +% the some cases it could be used. Instead of creating of +% multicolumn head above a wide couple of all column heads except the +% very left column, the most left column head (upper left cell) +% divided by diagonal line. The lower head is usually head of very left +% column and upper head---``multicolumn'' to all other column heads of +% table to the right. +% +% This package offers macro based on possibilities of \env{picture} +% environment. +% \begin{quote} +% |\diaghead|\texttt{(}\meta{\texttt{\textup{H}} ratio,%^^A +% \textup{\texttt{V}} ratio}\texttt{)}%^^A +% \marg{Text set for column width}|%|\\ +% \phantom{/diaghead }\marg{First head}\marg{Second head} +% \end{quote} +% where \texttt{(}\meta{\textup{\texttt{H ratio}},%^^A +% \textup{\texttt{V ratio}}}\texttt{)} sets the ratios like in |\line| +% command (digits from~|1| up to~|6|). This argument is optional, +% the default ratio (|\line| +% direction) defined as~|(5,-2)|. +% +% The \marg{Text set for column width} +% defined by hand, for example: +% \quad 1)\nobreak\enskip sets the width, using longest text lines from +% both heads---in this case you must put |\theadfont| macro, if you use +% |\thead|'s; \quad 2)\nobreak\enskip the longest text from the rest of +% column; \quad 3)\nobreak\enskip |\hskip|\meta{value}, even |\hskip\hsize| +% the case of |p| column (or |X| column in \env{tabularx} environment). +% The \marg{First head} +% is head in lower corner (usually for first or very left column), +% \marg{Second head}---in the upper corner (head for the all right columns). +% +% Here is code of table~\ref{tab:diaghead}. +%\begin{verbatim}\makegapedcells +%\begin{tabular}{|l|c|c|}\hline +%\diaghead{\theadfont Diag ColumnmnHead II}% +% {Diag Column \\Head I}{Diag\\Column Head II}& +%\thead{Second\\column}&\thead{Third\\column}\\ +%\hline... +%\end{tabular}\medskip +% +%\begin{tabularx}{.62\hsize}{|X|c|c|}\hline +%\diaghead(-4,1){\hskip\hsize}% +% {Diag \\Column Head I}{Diag Column \\Head II}& +%\thead{Second\\column}&\thead{Third\\column}\\ +%\hline... +%\end{tabularx}\medskip +% +% \nomakegapedcells +% \begin{tabular}{|l|c|c|}\hline +% \diaghead(4,1){\hskip4.2cm}% +% {Diag \\Column Head I}{Diag Column \\Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +%... +%\end{verbatim}% +% +% \begin{table}[!bp]\makegapedcells +% \begin{tabular}{|c|c|c|}% +% \hline +% \diaghead{\theadfont Diag ColumnmnHead II}%^^A +% {Diag \\Column Head I}{Diag Column\\ Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & A & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & B & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned\\ cell text} & C & 52--58\\ +% \hline +% \end{tabular}% +% \medskip +% +% \begin{tabularx}{.62\hsize}{|X|c|c|}% +% \hline +% \diaghead(4,1){\hskip\hsize}% +% %^^A{\theadfont Diag ColuDiag Column}%^^A +% {Diag \\Column Head I}{Diag Column \\Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & A & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & B & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned\\ cell text} & C & 52--58\\ +% \hline +% \end{tabularx}% +% \medskip +% +% \nomakegapedcells +% \begin{tabular}{|l|c|c|}% +% \hline +% \diaghead(-4,1){\hskip4.2cm}%^^A +% {Diag \\Column Head I}{Diag Column \\Head II}& +% \thead{Second\\column}&\thead{Third\\column}\\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & A & 37--43\\ +% \hline +% \makecell*[r]{Right aligned \\ cell text} & B & 37--43\\ +% \hline +% \makecell[b]{Bottom aligned\\ cell text} & C & 52--58\\ +% \hline +% \end{tabular}% +% +% \caption{Examples of tabulars with diagonally divided +% cells}\label{tab:diaghead} +% +% \end{table}% +% The correct position of diagonal ends depends of width of column. If cell width +% is narrower then necessary +% column ends of diagonal don't touch corners of cell. +% +% \section{Comparison: Diagonally Divided Cell with the slashbox package} +% +% I didn't know about the \texttt{slashbox} package in time +% when the code for the diagonal cells was created. This package uses also picture +% |\line| mechanism, but calculates slopes automatically. It creates the +% |\backslash| direction of diagonal lines only. (The |\slash| direction seems to be +% not correct. Or direction depends to traditions of current publishing house?) +% +% Here is used citation of the sample file distributed with the \texttt{slashbox} package%^^A +% \footnote{by Koichi Yasuoka, May 27, 1993; minor modification by Toru Sato, May 31, 1993}. +% The verbatim of the table examples are added only in citation.\smallskip +% +% \begingroup\slshape +% The usage is pretty straightforward, such as +% +%\begin{table}[H]% +%\begin{verbatim} +%\begin{tabular}{|l||*{5}{c|}}\hline +%\backslashbox{Room}{Date} +%&\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2} +%&\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline +%Meeting Room &&&&&\\\hline +%Auditorium &&&&&\\\hline +%Seminar Room &&&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \noindent +% \begin{tabular}{|l||*{5}{c|}}\hline +% \backslashbox{Room}{Date} +% &\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2} +% &\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline +% Meeting Room &&&&&\\\hline +% Auditorium &&&&&\\\hline +% Seminar Room &&&&&\\\hline +% \end{tabular} +%\end{table}% +% +% You may include a newline (\verb+\\+) in `Room' and/or `Date'. +% Note that you will get spaces aside the slash line if there is a +% wider column in the same column of a different line. +% In such a case, you need to specify the width of the slashed column +% by saying +% +%\begin{table}[H]% +%\begin{verbatim} +%\begin{tabular}{|l||*{4}{c|}}\hline +%\backslashbox[48mm]{Room}{Date} +%&\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2} +%&\makebox[3em]{6/3}\\\hline\hline +%Room With a Long Name &&&&\\\hline +%Auditorium &&&&\\\hline +%Seminar Room &&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \noindent +% \begin{tabular}{|l||*{4}{c|}}\hline +% \backslashbox[48mm]{Room}{Date} +% &\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2} +% &\makebox[3em]{6/3}\\\hline\hline +% Room With a Long Name &&&&\\\hline +% Auditorium &&&&\\\hline +% Seminar Room &&&&\\\hline +% \end{tabular} +%\end{table}% +% +% \bigskip +% The specified width is neglected if it is narrower than the natural +% width of the column. +% +% \verb+\(back)slashbox+ assumes by default that there is a blank space +% of width \verb+\tabcolsep+ on both sides of the column. +% Thus the slash line might exceeds the boundary when you use \verb+@{}+ +% etc. +% +% You can avoid it by specifying +% +%\begin{table}[H]% +%\begin{verbatim} +%\begin{tabular}{|@{\ $\bullet$\hspace*{3mm}}l||*{5}{c|}}\hline +%\multicolumn{1}{|@{}l||}{\backslashbox[0pt][l]{Room}{Date}} +%&\makebox[3em]{5/31}&\makebox[4em]{6/1}&\makebox[3em]{6/2} +%&\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline +%Meeting Room &&&&&\\\hline +%Auditorium &&&&&\\\hline +%Seminar Room &&&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \bigskip +% +% \noindent +% \begin{tabular}{|@{\ $\bullet$\hspace*{3mm}}l||*{5}{c|}}\hline +% \multicolumn{1}{|@{}l||}{\backslashbox[0pt][l]{Room}{Date}} +% &\makebox[3em]{5/31}&\makebox[4em]{6/1}&\makebox[3em]{6/2} +% &\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline +% Meeting Room &&&&&\\\hline +% Auditorium &&&&&\\\hline +% Seminar Room &&&&&\\\hline +% \end{tabular} +%\end{table}% +% +% Here \verb+[l]+ tells the command that there is no extra space on the +% left of this column. You can use \verb+[r]+ and \verb+[lr]+ likewise. +% You have to also specify the width of the column in this case, but it +% can be~0pt. +% \endgroup +% +% The addition for the sample with |\slashbox| command. This example demonstrates that you may combine +% the \texttt{makecell} commands and |\backslashbox|. +% +%\begin{table}[H]% +%\begin{verbatim} +%\begin{tabular}{|l||*{5}{c|}}\hline +%\theadset\theadfont\backslashbox{Room}{Date} +%&\makebox[3em]{\thead{5/31}}&\makebox[3em]{\thead{6/1}}&\makebox[3em]{\thead{6/2}} +%&\makebox[3em]{6/3}&\makebox[3em]{\thead{6/4}}\\\hline\hline +%Meeting Room &&&&&\\\hline +%Auditorium &&&&&\\\hline +%Seminar Room &&&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \noindent +% \begin{tabular}{|l||*{5}{c|}}\hline +%\theadset\theadfont\backslashbox{Room}{Date} +%&\makebox[3em]{\thead{5/31}}&\makebox[3em]{\thead{6/1}}&\makebox[3em]{\thead{6/2}} +%&\makebox[3em]{6/3}&\makebox[3em]{\thead{6/4}}\\\hline\hline +% Meeting Room &&&&&\\\hline +% Auditorium &&&&&\\\hline +% Seminar Room &&&&&\\\hline +% \end{tabular} +%\end{table}% +% +%\begin{table}[H]% +%\begin{verbatim} +%\begin{tabular}{|l||*{4}{c|}}\hline +%\theadset\backslashbox[48mm]{Room}{Date} +%&\makebox[3em]{\thead{5/31}}&\makebox[3em]{\thead{6/1}}&\makebox[3em]{\thead{6/2}} +%&\makebox[3em]{\thead{6/3}}\\\hline\hline +%Room With a Long Name &&&&\\\hline +%Auditorium &&&&\\\hline +%Seminar Room &&&&\\\hline +%\end{tabular} +%\end{verbatim}% +% +% \noindent +% \begin{tabular}{|l||*{4}{c|}}\hline +% \theadset\backslashbox[48mm]{Room}{Date} +% &\makebox[3em]{\thead{5/31}}&\makebox[3em]{\thead{6/1}}&\makebox[3em]{\thead{6/2}} +% &\makebox[3em]{\thead{6/3}}\\\hline\hline +% Room With a Long Name &&&&\\\hline +% Auditorium &&&&\\\hline +% Seminar Room &&&&\\\hline +% \end{tabular} +%\end{table}% +% +% \clearpage +% \section{Thick Rules for the hline and cline Commands} +% +% For horizontal rules in tabular there were added two commands +% \cmd{\Xhline} and \cmd{\Xcline} +% They use additional mandatory argument with defined rule width. +% +% The example, with result in table~\ref{tab:XmrowIII}. +%\begin{verbatim}% +%\begin{table} +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +%\ttabbox +%{\caption{...}\label{...}}% +%{\begin{tabular}{!{\vrule width1.2pt}c +% !{\vrule width1.2pt}c|c +% !{\vrule width1.2pt}} +%\Xhline{1.2pt} +%\multirowthead{4}{First Column head}& +%\multicolumn{2}{c!{\vrule width1.2pt}}{\thead{Multicolumn head}}\\ +%\Xcline{2-3}{1.2pt} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +%\Xhline{1.2pt} +%Cell text & A &\multirowcell{4}{28--31}\\ +%... +%\Xhline{1.2pt} +%\end{tabular}} +%\end{table} +%\end{verbatim}% +% +% \begin{table}\makegapedcells\relax +%\renewcommand\theadset{\def\arraystretch{.85}}% +%\renewcommand\theadgape{} +% \ttabbox +% {\caption{Example of \env{tabular} environment with +% thick lines}\label{tab:XmrowIII}}% +% {\begin{tabular}{!{\vrule width1.2pt}c +% !{\vrule width1.2pt}c|c!{\vrule width1.2pt}} +% \Xhline{1.2pt} +% \multirowthead{4}{First Column head}& +% \multicolumn{2}{c!{\vrule width1.2pt}}{\thead{Multicolumn head}}\\ +% \Xcline{2-3}{1.2pt} +% & \thead{Second \\multlined \\ column head} & +% \thead{Third \\ column head}\\ +% \Xhline{1.2pt} +% Cell text & A &\multirowcell{4}{28--31}\\ +% \cline{1-2} +% \makecell{Multilined \\Cell text} & B& \\ +% \hline +% \makecell[l]{Left aligned \\ cell text} & C +% & \multirowcell{4}[0ex][l]{37--43}\\ +% \cline{1-2} +% \makecell[r]{Right aligned \\ cell text} & D & \\ +% \hline +% \makecell[b]{Bottom aligned \\ cell text} & E & +% \multirowcell{6}[0ex][r]{37--43\\52--58}\\ +% \cline{1-2} +% \makecell[{{p{5cm}}}]{Cell long long long long long long text with +% predefined width} & F & \\ +% \cline{1-2} +% \makecell[{{>{\parindent1em}p{5cm}}}]{Cell long long long long long +% long text with predefined width} & G & \\ +% \Xhline{1.2pt} +% \end{tabular}} +% \end{table} +% +% \StopEventually{}\clearpage +% +% \section{Code of package} +% +% \subsection{Multilined cells} +% +% First goes request of \package{array} package. +% \begin{macrocode} +\RequirePackage{array} +% \end{macrocode} +% +% \begin{macro}{\makecell} +% The definition of command for multilined cells. At first defined |\gape| +% stuff. Non-star form loads special setting for vertical space around (if it +% used). Star form always creates additional vertical |\jot|-spaces. +% \begin{macrocode} +\newcommand\makecell{\@ifstar{\let\tabg@pe\gape\makecell@}% + {\let\tabg@pe\cellgape\makecell@}} +% \end{macrocode} +% Next macro loads vertical and horizontal common alignment for cells and +% loads redefined spacing parameters |\arraystretch| and |\extrarowheight| +% if these parameters were redefined. +% \begin{macrocode} +\newcommand\makecell@{\def\t@bset{\cellset}% + \let\mcell@align\cellalign + \@ifnextchar[\mcell@tabular + {\expandafter\mcell@@tabular\cellalign\@nil}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\thead} +% The macro for tabular column heads. At first defined |\gape| stuff. +% Non-star from loads special setting for vertical space around (if it used). +% Star form always creates additional vertical |\jot|-spaces. +% \begin{macrocode} +\newcommand\thead{\@ifstar{\let\tabg@pe\gape\thead@}% + {\let\tabg@pe\theadgape\thead@}} +% \end{macrocode} +% Next macro loads vertical and horizontal common alignment for column heads +% and loads redefined spacing parameters |\arraystretch| and |\extrarowheight| +% if these parameters were redefined. (First go settings +% for cells, as for |\makecell|, then special settings for column heads.) +% +% For column heads also loaded font settings. +% \begin{macrocode} +\newcommand\thead@{\def\t@bset{\cellset\theadfont\theadset}% + \let\mcell@align\theadalign + \@ifnextchar[\mcell@tabular + {\expandafter\mcell@@tabular\theadalign\@nil}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotheadsize} +% The width dimension for rotated cells. +% \begin{macrocode} +\@ifdefinable\rotheadsize{\newdimen\rotheadsize} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotcell} +% The macro for rotated cell. If no \package{rotating} package loaded +% this macro works like |\makecell|. +% \begin{macrocode} +\newcommand\rotcell{\@ifundefined{turn}% + {\PackageWarning{makecell}% + {\string\rotcell\space needs rotating package}% + \let\tabg@pe\empty\let\t@bset\cellset\makecell@} + {\@ifnextchar[{\@rotcell}{\@@rotcell}}} +% \end{macrocode} +% For rotated cell default column setting is similar to |p{\rotheadsize}| (plus +% some additional justification settings) +% \begin{macrocode} +\@ifdefinable\@rotcell{} +\def\@rotcell[#1]#2{\makecell*{\\[-.65\normalbaselineskip] + \turn{\cellrotangle}\makecell[#1]{#2}\endturn}} +\newcommand\@@rotcell[1]{\makecell*{\\[-.65\normalbaselineskip] + \turn{\cellrotangle}\makecell[c{>{\rightskip0explus + \rotheadsize\hyphenpenalty0\pretolerance-1% + \noindent\hskip\z@}p{\rotheadsize} + }]{#1}\endturn}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rothead} +% The macro for rotated tabular column heads. If no \package{rotating} package +% loaded this macro works like |\thead|. +% \begin{macrocode} +\newcommand\rothead{\@ifundefined{turn}% + {\PackageWarning{makecell}{\string\rothead\space + needs rotating package}% + \let\tabg@pe\theadgape + \def\t@bset{\cellset\theadfont\theadset}\thead@}% + {\let\theadgape\rotheadgape + \@ifnextchar[{\@rothead}{\@@rothead}}} +% \end{macrocode} +% For rotated column head default column setting is similar to +% |p{\rotheadsize}| (plus some additional justification settings) +% \begin{macrocode} +\@ifdefinable\@rothead{} +\def\@rothead[#1]#2{\thead{\\[-.65\normalbaselineskip] + \turn{\cellrotangle}\thead[#1]{#2@{}}\endturn}} +\newcommand\@@rothead[1]{\thead{\\[-.65\normalbaselineskip] + \turn{\cellrotangle}\thead[c{>{\rightskip0explus + \rotheadsize\hyphenpenalty0\pretolerance-1% + \noindent\hskip\z@}p{\rotheadsize} + @{}}]{#1}\endturn}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\multirowcell} +% The macro for multirow cells. If no \package{multirow} package loaded +% this macro works like |\makecell|. +% \begin{macrocode} +\newcommand\multirowcell{\@ifundefined{multirow}% + {\PackageWarning{makecell}{\string\multirowcell\space + needs multirow package}}% + {\let\mcell@multirow\multirow}\mcell@mrowcell@} +% \end{macrocode} +% These macros define settings for |\multirow| arguments. +% \begin{macrocode} +\newcommand\mcell@mrowcell@[1]{\@ifnextchar + [{\mcell@mrowcell@@{#1}}{\mcell@mrowcell@@{#1}[0pt]}} +\@ifdefinable\mcell@mrowcell@@{} +\def\mcell@mrowcell@@#1[#2]{\edef\mcell@nrows{#1}\edef\mcell@fixup{#2}% + \let\tabg@pe\cellgape\makecell@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\multirowthead} +% The macro for multirow column heads. If no \package{multirow} package loaded +% this macro works like |\thead|. +% \begin{macrocode} +\newcommand\multirowthead{\@ifundefined{multirow}% + {\PackageWarning{makecell}{\string\multirowthead\space + needs multirow package}}% + {\let\mcell@multirow\multirow}\mcell@mrowhead@} +% \end{macrocode} +% These macros define settings for |\multirow| arguments. +% \begin{macrocode} +\newcommand\mcell@mrowhead@[1]{\@ifnextchar + [{\mcell@mrowhead@@{#1}}{\mcell@mrowhead@@{#1}[0pt]}} +\@ifdefinable\mcell@mrowhead@@{} +\def\mcell@mrowhead@@#1[#2]{\edef\mcell@nrows{#1}\edef\mcell@fixup{#2}% + \let\tabg@pe\theadgape\thead@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mcell@multirow} +% By default |\mcell@multirow| macro gobbles |\multirow|'s arguments. +% \begin{macrocode} +\@ifdefinable\mcell@multirow{} +\def\mcell@multirow#1#2[#3]{}% +% \end{macrocode} +% \end{macro} +% +% Definitions for horizontal and vertical alignments, which use by \env{tabular} +% and \env{array} environments. +% +% For \texttt{l}, \texttt{r}, \texttt{t}, and \texttt{b} alignments commands +% set |c|-argument as vertical or horizontal centering alignment if necessary. +% For \texttt{l} and \texttt{r} alignments also redefined alignment +% settings for |\makecell| (|\thead|) blocks. +% \begin{macrocode} +\newcommand\mcell@l{\def\mcell@ii{l}\let\mcell@c\mcell@ic + \global\let\mcell@left\relax} +\newcommand\mcell@r{\def\mcell@ii{r}\let\mcell@c\mcell@ic + \global\let\mcell@right\relax} +\newcommand\mcell@t{\def\mcell@i{t}\let\mcell@c\mcell@iic} +\newcommand\mcell@b{\def\mcell@i{b}\let\mcell@c\mcell@iic} +\newcommand\mcell@{} +% \end{macrocode} +% If alone |c|-argument loaded it is used for horizontal alignment. +% \begin{macrocode} +\newcommand\mcell@c{\def\mcell@ii{c}} +\newcommand\mcell@ic{\def\mcell@i{c}} +\newcommand\mcell@iic{\def\mcell@ii{c}} +% \end{macrocode} +% Default vertical and horizontal alignment is centered. +% \begin{macrocode} +\newcommand\mcell@i{c} +\newcommand\mcell@ii{c} +% \end{macrocode} +% +% Default horizontal alignment of |\makecell| (|\thead|) blocks is centered. +% \begin{macrocode} +\@ifdefinable\mcell@left{\let\mcell@left\hfill} +\@ifdefinable\mcell@right{\let\mcell@right\hfill} +% \end{macrocode} +% +% \begin{macro}{\mcell@tabular} +% \begin{macro}{\mcell@@tabular} +% \begin{macro}{\mcell@@@tabular} +% The core macros for tabular building. +% +% Next few macros for sorting of |\makecell| (|\thead|) arguments. +% \begin{macrocode} +\@ifdefinable\mcell@tabular{}\@ifdefinable\mcell@@tabular{} +\@ifdefinable\mcell@@@tabular{} +\def\mcell@tabular[#1]#2{\mcell@@tabular#1\@nil{#2}} +% \end{macrocode} +% The code for this macro borrowed from \package{caption} 3.x package (AS). +% \begin{macrocode} +\newcommand\mcell@ifinlist[2]{% + \let\next\@secondoftwo + \edef\mcell@tmp{#1}% + \@for\mcell@Tmp:={#2}\do{% + \ifx\mcell@tmp\mcell@Tmp + \let\next\@firstoftwo + \fi}\next} +% \end{macrocode} +% +% The |\mcell@@tabular| macro at first calls |\mcell@setalign| macro for +% sorting of alignment arguments, then calls |\mcell@@@tabular| +% macro, which created tabular cell or column head. +% \begin{macrocode} +\def\mcell@@tabular#1#2\@nil#3{% + \expandafter\mcell@setalign\mcell@align\@nil + \mcell@setalign{#1}{#2}\@nil + \expandafter\mcell@@@tabular\expandafter\mcell@i\mcell@ii\@nil{#3}} +% \end{macrocode} +% +% \begin{macro}{\mcell@setalign} +% This macro sorts arguments for vertical and horizontal alignment. +% +% First argument has second check at the end of macro for the case if +% it is |c|-argument. +% \begin{macrocode} +\@ifdefinable\mcell@setalign{} +\def\mcell@setalign#1#2\@nil{\def\@tempa{#1}\def\@tempc{c}% +% \end{macrocode} +% Restore default alignment for |\makecell| and |\thead| blocks. +% \begin{macrocode} + \global\let\mcell@left\hfill\global\let\mcell@right\hfill +% \end{macrocode} +% If in optional argument appears alone |c|-argument it defines +% horizontal centering only. +% \begin{macrocode} + \def\mcell@c{\def\mcell@ii{c}}% + \mcell@ifinlist{#1}{l,r,t,b,c,}{\@nameuse{mcell@#1}}% +% \end{macrocode} +% If argument is not \texttt{l}, \texttt{r}, \texttt{c}, \texttt{t}, +% or \texttt{b} it could define horizontal alignment only. +% \begin{macrocode} + {\def\mcell@ii{#1}\let\mcell@c\mcell@ic + \let\mcell@left\relax\let\mcell@right\relax}% + \mcell@ifinlist{#2}{l,r,t,b,c,}{\@nameuse{mcell@#2}}% +% \end{macrocode} +% If argument is not \texttt{l}, \texttt{r}, \texttt{c}, \texttt{t}, +% or \texttt{b} it could define horizontal alignment only. +% \begin{macrocode} + {\def\mcell@ii{#2}\let\mcell@c\mcell@ic + \let\mcell@left\relax\let\mcell@right\relax}% +% \end{macrocode} +% Here goes repeated check for first argument, if it is |c|-argument +% we call |\mcell@c| command, which can be now redefined. +% \begin{macrocode} + \ifx\@tempa\@tempc\mcell@c\fi +} +% \end{macrocode} +% \end{macro} +% +% This macro builds tabular itself. +% First (and last) go commands which align |\makecell| and |\thead| +% blocks like \texttt{l}, \texttt{r}, or \texttt{c} (if they loaded). +% Then goes check whether math mode exists. +% The |\mcell@multirow| emulation macro transforms to |\multirow| +% when necessary. +% \begin{macrocode} +\def\mcell@@@tabular#1#2\@nil#3{%\mcell@mstyle + \ifdim\parindent<\z@\leavevmode\else\noindent\fi + \null\mcell@left + \ifmmode + \mcell@multirow\mcell@nrows*[\mcell@fixup]{\tabg@pe + {\hbox{\t@bset$\array[#1]{@{}#2@{}}#3\endarray$}}}% + \else + \mcell@multirow\mcell@nrows*[\mcell@fixup]{\tabg@pe + {\hbox{\t@bset\tabular[#1]{@{}#2@{}}#3\endtabular}}}% + \fi\mcell@right\null} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{\mcellbox} +% \begin{macro}{\makecellbox} +% \begin{macrocode} +\@ifdefinable\mcell@start{}\@ifdefinable\mcell@stop{} +\newcommand\mcellbox[1][c]{% + \expandafter\mcell@setalign\cellalign\@nil + \expandafter\mcell@setalign#1\@nil + \expandafter\mcell@box\expandafter\mcell@i\mcell@ii\@nil} +\@ifdefinable\mcell@box{} +\def\mcell@box#1#2\@nil{% + \ifdim\parindent<\z@\leavevmode\else\noindent\fi + \ifmmode\def\mcell@start{$\array}\def\mcell@stop{\endarray$}\else + \def\mcell@start{\tabular}\def\mcell@stop{\endtabular}\fi + \hbox\bgroup\cellset\mcell@start[#1]{@{}#2@{}}}% +\def\endmcellbox {\mcell@stop\egroup} +\newcommand\makecellbox[2][c]{\begin{mcellbox}[#1]#2\end{mcellbox}} +% \end{macrocode} +% \end{macro} +% \end{environment} +% +% \begin{macro}{\cellset} +% \begin{macro}{\cellgape} +% \begin{macro}{\cellalign} +% \begin{macro}{\cellrotangle} +% \begin{macro}{\theadfont} +% \begin{macro}{\theadset} +% \begin{macro}{\theadgape} +% \begin{macro}{\rotheadgape} +% \begin{macro}{\theadalign} +% The layout macros for tabular building settings.\nopagebreak +% +% Spacing settings for tabular spacing inside cells (like |\arraystretch| +% or |\extrarowheight|).\nopagebreak +% \begin{macrocode} +\newcommand\cellset{\def\arraystretch{1}\extrarowheight\z@ + \nomakegapedcells} +% \end{macrocode} +% Vertical space around cells (created by |\gape| stuff). +% \begin{macrocode} +\newcommand\cellgape{} +% \end{macrocode} +% Vertical and horizontal alignment of cell text. +% \begin{macrocode} +\newcommand\cellalign{cc} +% \end{macrocode} +% Angle for rotated column heads and cells. +% \begin{macrocode} +\newcommand\cellrotangle{90} +% \end{macrocode} +% +% Font for column heads +% \begin{macrocode} +\newcommand\theadfont{\footnotesize} +% \end{macrocode} +% Special spacing settings for tabular spacing in column heads (like +% |\arraystretch| or/and |\extrarowheight|). +% \begin{macrocode} +\newcommand\theadset{} +% \end{macrocode} +% Vertical space around column heads (created by |\gape| stuff). +% \begin{macrocode} +\newcommand\theadgape{\gape} +% \end{macrocode} +% Vertical space around rotated column heads. +% \begin{macrocode} +\newcommand\rotheadgape{} +% \end{macrocode} +% Vertical and horizontal alignment of column head text. +% \begin{macrocode} +\newcommand\theadalign{cc} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Gape commands} +% +% \begin{macro}{\gape} +% \begin{macro}{\setcellgapes} +% The macro itself. It uses analogous to |\smash| macro from \package{amsmath} +% package. +% \begin{macrocode} +\@ifdefinable\gape{} +\DeclareRobustCommand\gape{\@ifnextchar[\@gape{\@gape[tb]}} +% \end{macrocode} +% +% The |\setcellgapes| defines settings used by |\makegapedcells| command. +% +% First goes check for optional argument. +% \begin{macrocode} +\newcommand\setcellgapes{\@ifnextchar[%] + {\mcell@setgapes{MB}}{\mcell@setgapes{MB}[tb]}} +% \end{macrocode} +% Then body of settings. +% \begin{macrocode} +\@ifdefinable\@setcellgapes{} +\def\mcell@setgapes#1[#2]#3{\expandafter\let\csname + mcell@#1@\expandafter\endcsname\csname mcell@mb@#2\endcsname + \@namedef{mcell@#1jot}{#3}% +% \end{macrocode} +% Negative compensate inside |\makegapedsells| area. +% \begin{macrocode} + \@namedef{mcell@#1negjot}{-#3}\@namedef{mcell@#1negtb}{#2}} +% \end{macrocode} +% +% \begin{macrocode} +\newcommand\negjot[1]{{\jot\mcell@MBnegjot\gape[mcell@MBnegtb]{#1}}} +% \end{macrocode} +% +% The macros which count advanced height and depth of boxes. +% \begin{macrocode} +\newcommand\mcell@mb@t[2]{% + \@tempdima\ht#1\advance\@tempdima#2\ht#1\@tempdima} +\newcommand\mcell@mb@b[2]{% + \@tempdimb\dp#1\advance\@tempdimb#2\dp#1\@tempdimb} +\newcommand\mcell@mb@tb[2]{\mcell@mb@t{#1}{#2}\mcell@mb@b{#1}{#2}} +% \end{macrocode} +% +% The body of |\gape| macros. +% \begin{macrocode} +\@ifdefinable\@gape{}\@ifdefinable\@@gape{} +\def\@gape[#1]{\mcell@setgapes{mb}[#1]{\jot}\@@gape} +\def\@@gape{% + \ifmmode \expandafter\mathpalette\expandafter\mathg@pe + \else \expandafter\makeg@pe + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\makeg@pe} +% The macros which put box with necessary parameters in text and math mode. +% \begin{macrocode} +\newcommand\makeg@pe[1]{\setbox\z@ + \hbox{\color@begingroup#1\color@endgroup}\mcell@mb@\z@\mcell@mbjot\box\z@} +\newcommand\mathg@pe[2]{\setbox\z@ + \hbox{$\m@th#1{#2}$}\mcell@mb@\z@\mcell@mbjot\box\z@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Gape} +% The macros which put box with necessary parameters in text and math mode. +% \begin{macrocode} +\@ifdefinable\Gape{} +\DeclareRobustCommand\Gape{\@ifnextchar[\@Gape{\@Gape[\jot]}} +\@ifdefinable\@Gape{}\@ifdefinable\@@Gape{} +\def\@Gape[#1]{\@ifnextchar[{\@@Gape[#1]}{\@@Gape[#1][#1]}} +\def\@@Gape[#1][#2]{\def\depth{\dp\z@}\def\height{\ht\z@}% + \edef\mcell@mb@##1##2{% + \@tempdima\ht\z@\advance\@tempdima#1\ht\z@\@tempdima + \@tempdimb\dp\z@\advance\@tempdimb#2\dp\z@\@tempdimb}% + \@@gape} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\topstrut} +% \begin{macro}{\botstrut} +% \begin{macro}{\bottopstrut} +% The macros abbreviations for |\strut| which changed by value of |\jot|. +% First enlarges both depth and height. +% \begin{macrocode} +\newcommand\bottopstrut{\gape{\strut}} +% \end{macrocode} +% Second enlarges only height. +% \begin{macrocode} +\newcommand\topstrut{\gape[t]{\strut}} +% \end{macrocode} +% Third enlarges only depth. +% \begin{macrocode} +\newcommand\botstrut{\gape[b]{\strut}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Modification of command from \package{array} package} +% +% \begin{macro}{\makegapedcells} +% \begin{macro}{\nomakegapedcells} +% At first is saved |\@classz| macro. +% \begin{macrocode} +\@ifdefinable\mcell@oriclassz{\let\mcell@oriclassz\@classz} +% \end{macrocode} +% This macros redefine and restore the |\@classz| macro from \package{array} +% package. +% \begin{macrocode} +\newcommand\makegapedcells{\let\@classz\mcell@classz} +\newcommand\nomakegapedcells{\let\@classz\mcell@oriclassz} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\mcell@agape} +% Following macro creates tabular/array cells with changed vertical spaces. +% \begin{macrocode} +\newcommand\mcell@agape[1]{\setbox\z@\hbox{#1}\mcell@MB@\z@\mcell@MBjot + \null\mcell@left\box\z@\mcell@right\null} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mcell@classz} +% Redefined |\@classz| macro from \package{array} package. +% \begin{macrocode} +\newcommand\mcell@classz{\@classx + \@tempcnta \count@ + \prepnext@tok + \@addtopreamble{%\mcell@mstyle + \ifcase\@chnum + \hfil + \mcell@agape{\d@llarbegin\insert@column\d@llarend}\hfil \or + \hskip1sp + \mcell@agape{\d@llarbegin\insert@column\d@llarend}\hfil \or + \hfil\hskip1sp + \mcell@agape{\d@llarbegin \insert@column\d@llarend}\or + $\mcell@agape{\vcenter + \@startpbox{\@nextchar}\insert@column\@endpbox}$\or + \mcell@agape{\vtop + \@startpbox{\@nextchar}\insert@column\@endpbox}\or + \mcell@agape{\vbox + \@startpbox{\@nextchar}\insert@column\@endpbox}% + \fi + \global\let\mcell@left\relax\global\let\mcell@right\relax + }\prepnext@tok} +% \end{macrocode} +% \end{macro} +% +% \subsection{Rows of skipped and numbered cells} +% +% \begin{macro}{\eline} +% The row of empty cells. +% \begin{macrocode} +\@ifdefinable\eline{} +\DeclareRobustCommand\eline[1]{\@temptokena{}\count@ #1% + \advance\count@\m@ne + \loop \@temptokena\expandafter{\the\@temptokena&}% + \advance\count@\m@ne \ifnum\count@>\z@\repeat + \the\@temptokena\ignorespaces} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\erows} +% \begin{macro}{\Xrows} +% Lazy macros for filling few rows. +% \begin{macrocode} +%\newtoks\@temptokenb\newtoks\@temptokenc +%\newcommand\erows[3][\\ \hline]{\relax\@temptokenb{}\@temptokenc{}\@tempcnta#3\relax +% \count@#2\advance\count@\m@ne\loop\showthe\@temptokenc +% \@temptokenc\expandafter{\the\@temptokenc&}% +% \advance\count@\m@ne \ifnum\count@>\z@\repeat +% \loop +% \global\@temptokenb\expandafter{\the\expandafter\@temptokenb\expandafter\the\@temptokenc#1}% +% \advance\@tempcnta\m@ne \ifnum\@tempcnta>\z@\repeat +% \the\@temptokenb\showthe\@temptokenb} +\newcommand\erows[3][\\ \hline]{\@temptokena{}\count@ #3% + \loop \@temptokena\expandafter{\the\@temptokena\eline{#2}#1}% + \advance\count@\m@ne \ifnum\count@>\z@\repeat + \the\@temptokena} +\newcommand\Xrows[2]{\@temptokena{}\count@ #2% + \loop \@temptokena\expandafter{\the\@temptokena#1}% + \advance\count@\m@ne \ifnum\count@>\z@\repeat + \the\@temptokena} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\rnline} +% \begin{macro}{\nline} +% The rows of numbered cells. The |\rnline| command replaces |\Alph| and +% |\alph| counter by |\Asbuk| and |\asbuk| consequently. +% \begin{macrocode} +\newcounter{nlinenum} +\@ifdefinable\rnline{} +\DeclareRobustCommand\rnline{\gdef + \TeXr@rus{\let\@Alph\@Asbuk\let\@alph\@asbuk}\@nline} +\@ifdefinable\nline{} +\DeclareRobustCommand\nline{\gdef\TeXr@rus{}\@nline} +\newcommand\@nline{\@ifnextchar[%] + {\@@nline}{\@@nline[1]}} +\@ifdefinable\@@nline{} +\def\@@nline[#1]{\@ifnextchar[%] + {\@@@nline[#1]}{\@@@nline[#1][1]}} +\@ifdefinable\@@@nline{} +\def\@@@nline[#1][#2]#3{\count@ #3 + \def\TeXr@label{\TeXr@label@{nlinenum}}% + \expandafter\TeXr@loop\@gobble{}#1\@@@ + \xdef\Num{\the\TeXr@lab}% + \c@nlinenum#2\relax% + \expandafter\@temptokena\expandafter{\Num + \global\advance\c@nlinenum\@ne}% + \advance\count@\m@ne + \loop\@temptokena\expandafter{\the\@temptokena& + \Num \global\advance\c@nlinenum\@ne}% + \advance\count@\m@ne \ifnum\count@>\z@ \repeat + \the\@temptokena\ignorespaces} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% [Borrowed code stuff and explanation from \package{enumerate}/\package{paralist} +% packages just with changes of command names.] +% +% Internal token register used to build up the label command from the +% optional argument. +% \begin{macrocode} +\newtoks\TeXr@lab +% \end{macrocode} +% This just expands to a `?'. |\ref| will produce this, if no counter +% is printed. +% \begin{macrocode} +\def\TeXr@qmark{?} +% \end{macrocode} +% The next four macros build up the command that will print the item +% label. They each gobble one token or group from the optional argument, +% and add corresponding tokens to the register |\@enLab|. They each end +% with a call to |\@enloop|, which starts the processing of the next +% token. +% \begin{macro}{\TeXr@label} +% Add the counter to the label. |#2| will be one of the `special' +% tokens |A a I i 1|, and is thrown away. |#1| will be a command +% like |\Roman|. +% \begin{macrocode} +\def\TeXr@label@#1#2#3{% + \edef\TeXr@the{\noexpand#2{#1}}% + \TeXr@lab\expandafter + {\the\TeXr@lab\TeXr@rus\csname the#1\endcsname}% + \advance\@tempcnta1 + \TeXr@loop} +% \end{macrocode} +% The only foreign command in this stuff. It indicates whether +% the list has numeration by Russian letters. +% \begin{macrocode} +\def\TeXr@rus{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\TeXr@space} +% \begin{macro}{\TeXr@sp@ce} +% Add a space to the label. The tricky bit is to gobble the space token, +% as you can not do this with a macro argument. +% \begin{macrocode} +\def\TeXr@space{\afterassignment\TeXr@sp@ce\let\@tempa= } +\def\TeXr@sp@ce{\TeXr@lab\expandafter{\the\TeXr@lab\space}\TeXr@loop} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\TeXr@group} +% Add a |{ }| group to the label. +% \begin{macrocode} +\def\TeXr@group#1{\TeXr@lab\expandafter{\the\TeXr@lab{#1}}\TeXr@loop} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\TeXr@other} +% Add anything else to the label +% \begin{macrocode} +\def\TeXr@other#1{\TeXr@lab\expandafter{\the\TeXr@lab#1}\TeXr@loop} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\TeXr@loop} +% \begin{macro}{\TeXr@loop@} +% The body of the main loop. +% Eating tokens this way instead of using |\@tfor| lets you see +% spaces and {\bf all} braces. |\@tfor| would treat {\tt a} and +% |{a}| as special, but not |{{a}}|. +% \begin{macrocode} +\def\TeXr@loop{\futurelet\TeXr@temp\TeXr@loop@} +% \end{macrocode} +% \begin{macrocode} +\def\TeXr@loop@{% + \ifx A\TeXr@temp \def\@tempa{\TeXr@label\Alph }\else + \ifx a\TeXr@temp \def\@tempa{\TeXr@label\alph }\else + \ifx i\TeXr@temp \def\@tempa{\TeXr@label\roman }\else + \ifx I\TeXr@temp \def\@tempa{\TeXr@label\Roman }\else + \ifx 1\TeXr@temp \def\@tempa{\TeXr@label\arabic}\else + \ifx \@sptoken\TeXr@temp \let\@tempa\TeXr@space \else + \ifx \bgroup\TeXr@temp \let\@tempa\TeXr@group \else + \ifx \@@@\TeXr@temp \let\@tempa\@gobble \else + \let\@tempa\TeXr@other +% \end{macrocode} +% Hook for possible extensions +% \begin{macrocode} + \TeXr@hook + \fi\fi\fi\fi\fi\fi\fi\fi + \@tempa} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\TeXr@hook} +% \begin{macrocode} +\providecommand\TeXr@hook{} +% \end{macrocode} +% \end{macro} +% +% \subsection{Diagonally separated column heads} +% +% \begin{macro}{\diaghead} +% Macro for diagonally separated column heads. +% \begin{macrocode} +\newcommand\diaghead{\@ifnextchar({\mcell@diaghead}{\mcell@diagheads}} +\@ifdefinable\mcell@diaghead{} +\def\mcell@diaghead(#1){\def\celldiagratio{(#1)}\mcell@diagheads} +% \end{macrocode} +% The default value of diagonal ratio. +% \begin{macrocode} +\newcommand\celldiagratio{(5,-2)} +% \end{macrocode} +% The building itself +% \begin{macrocode} +\newcommand\mcell@diagheads[3]{\hbox\bgroup\expandafter + \mcell@getcelldiagratios\celldiagratio\relax + \@tempswafalse +% \end{macrocode} +% depends of sign of ratios. +% \begin{macrocode} + \ifnum\mcell@Hratio<\z@\count@-\mcell@Hratio\relax + \edef\mcell@Hratio{\the\count@}\relax + \ifnum\mcell@Vratio<\z@\count@-\mcell@Vratio\relax + \edef\mcell@Vratio{\the\count@}\else\@tempswatrue + \fi + \else + \ifnum\mcell@Vratio<\z@\count@-\mcell@Vratio\relax + \edef\mcell@Vratio{\the\count@}\@tempswatrue\else + \fi + \fi + \settowidth\@tempdima{#1}\advance\@tempdima2\tabcolsep + \edef\mcell@diagH{\the\@tempdima}\divide\@tempdima\mcell@Hratio + \@tempdima\mcell@Vratio\@tempdima\edef\mcell@diagV{\the\@tempdima}% +% \end{macrocode} +% The |\unitlength| here is |\relaxed|, we use just real dimensions. +% \begin{macrocode} + \let\mcell@oriunitlength\unitlength\let\unitlength\relax + \kern-\tabcolsep\kern-\@wholewidth + \setbox\z@\hbox{\theadfont{\strut}}\@tempdima\dp\z@ +% \end{macrocode} +% The value of compensate vertical spacing defined here experimentally +% and equals to 2~default line thickness. +% \begin{macrocode} + \advance\@tempdima.8\p@%2\@wholewidth +% \end{macrocode} +% If |\makedgapedcells| switched on for the table there is +% compensate spacing. +% \begin{macrocode} + {\ifx\@classz\mcell@classz + \setbox\z@\hbox{#1}\ht\z@\z@\dp\z@\z@ + \mcell@MB@\z@\mcell@MBjot + \global\dimen@\@tempdima\global\@tempdimb\@tempdimb + \else\global\dimen@\z@\global\@tempdimb\z@\fi + }% + \advance\@tempdima\dimen@ + \edef\mcell@diagVoffset{\the\@tempdima}% + \@tempdima\mcell@diagV\advance\@tempdima-\mcell@diagVoffset + \advance\@tempdima-\@tempdimb + \edef\mcell@diagVcorr{\the\@tempdima}% + \noindent\nomakegapedcells\hbox{\begin{tabular}{@{}c@{}}% +% \end{macrocode} +% At least a~|\normallineskip| vertical space from top and bottom of cell. +% \begin{macrocode} + \ifdim\jot<2\p@\jot2\p@\fi + \if@tempswa +% \end{macrocode} +% For South-East or North-West directions. +% \begin{macrocode} + \begin{picture}(\mcell@diagH,\mcell@diagVcorr)(\z@,\mcell@diagVoffset)% + \put(\z@,\mcell@diagV){\makebox(\z@,\z@)[tl]% + {\edef\tempa{(\mcell@Hratio,-\mcell@Vratio)}\expandafter + \line\tempa{\mcell@diagH}}} + \put(\tabcolsep,\jot)% + {\makebox(\z@,\z@)[bl]{\theadfont + \let\cellset\theadset\makecell[bl]{\strut#2}}} + \@tempdima\mcell@diagH\advance\@tempdima-\tabcolsep + \@tempdimb\mcell@diagV\advance\@tempdimb-\jot + \put(\@tempdima,\@tempdimb)% + {\makebox(\z@,\z@)[tr]{\theadfont + \let\cellset\theadset\makecell[tr]{#3\strut}}} + \end{picture}% + \else +% \end{macrocode} +% For South-West or North-East directions. +% \begin{macrocode} + \begin{picture}(\mcell@diagH,\mcell@diagVcorr)(\z@,\mcell@diagVoffset)% + \put(\z@,\mcell@diagV){\makebox(\z@,\z@)[tl]% + {\edef\tempa{(\mcell@Hratio,\mcell@Vratio)}\expandafter + \line\tempa{\mcell@diagH}}} + \@tempdima\mcell@diagV\advance\@tempdima-\jot + \put(\tabcolsep,\@tempdima)% + {\makebox(\z@,\z@)[tl]{\theadfont + \let\cellset\theadset\makecell[tl]{\strut#3}}} + \@tempdima\mcell@diagH\advance\@tempdima-\tabcolsep + \put(\@tempdima,\jot)% + {\makebox(\z@,\z@)[br]% + {\theadfont + \let\cellset\theadset{\makecell[br]{#2\strut}}}} + \end{picture}% + \fi + \end{tabular}% + \kern-\tabcolsep\kern-\@wholewidth + }\let\unitlength\mcell@oriunitlength\egroup\par + \ifvmode\strut + \vspace*{-\normalbaselineskip}\vspace*{-\normallineskip} + \fi +} +% \end{macrocode} +% \end{macro} +% Macro used by previous one. Extracts ratios for defining of height of cell. +% \begin{macrocode} +\@ifdefinable\mcell@getcelldiagratios{} +\def\mcell@getcelldiagratios(#1,#2){\def\mcell@Hratio{#1}\def\mcell@Vratio{#2}} +% \end{macrocode} +% +% \subsection{The \cmd{\hline} and \cmd{\cline} with necessary thickness} +% +% \begin{macro}{\Xhline} +% The commands for |\hline| and |\cline| with necessary thickness. +% Added code for the |longtable| environment. +% \begin{macrocode} +\newcommand\Xhline[1]{\noalign{\ifnum0=`}\fi\arrayrulewidth#1% + \ifx\hline\LT@hline\let\@xhline\LT@@hline\fi + \hrule\@height\arrayrulewidth\futurelet\reserved@a\@xhline} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Xcline} +% \begin{macrocode} +\def\Xcline#1#2{\@Xcline#1;#2\@nil} +\def\@Xcline#1-#2;#3\@nil{% + \omit + \@multicnt#1% + \advance\@multispan\m@ne + \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi + \@multicnt#2% + \advance\@multicnt-#1% + \advance\@multispan\@ne + \leaders\hrule\@height#3\hfill + \cr + \noalign{\vskip-#3}} +% \end{macrocode} +% \end{macro} +% +% \Finale +\endinput diff --git a/macros/latex/contrib/makecell/makecell.pdf b/macros/latex/contrib/makecell/makecell.pdf new file mode 100644 index 0000000000..f05e77f5b2 Binary files /dev/null and b/macros/latex/contrib/makecell/makecell.pdf differ -- cgit v1.2.3