summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ncctools/source/ncccropbox.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/ncctools/source/ncccropbox.dtx')
-rw-r--r--macros/latex/contrib/ncctools/source/ncccropbox.dtx167
1 files changed, 167 insertions, 0 deletions
diff --git a/macros/latex/contrib/ncctools/source/ncccropbox.dtx b/macros/latex/contrib/ncctools/source/ncccropbox.dtx
new file mode 100644
index 0000000000..e0c80dbd48
--- /dev/null
+++ b/macros/latex/contrib/ncctools/source/ncccropbox.dtx
@@ -0,0 +1,167 @@
+% \iffalse
+%%
+%% File: ncccropbox.dtx Copyright (C) 2002--2004 by Alexander I. Rozhenko
+%%
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{ncccropbox}
+%<package> [2004/11/24 v1.1 Crop Box Package (NCC)]
+%
+% \changes{v1.02}{2002/01/31}{This version is uploaded to CTAN}
+% \changes{v1.03}{2002/02/08}{The package is renamed to ncccropbox}
+% \changes{v1.1}{2004/11/24}{Documentation was prepared}
+%
+%<*driver>
+\let\makeindex\relax
+\documentclass{ltxdoc}
+\usepackage{ncccropbox}
+\GetFileInfo{ncccropbox.sty}
+\begin{document}
+\title{The \textsf{ncccropbox} package\thanks{This file
+ has version number \fileversion, last
+ revised \filedate.}}
+\author{Alexander I. Rozhenko\\rozhenko@oapmg.sscc.ru}
+\date{\filedate}
+\maketitle
+\DocInput{ncccropbox.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{User Interface}
+%
+% \DescribeMacro{\cropbox}
+% The package implements the command
+% \begin{quote}
+% |\cropbox|\oarg{width}\oarg{height}\marg{content}
+% \end{quote}
+% preparing a horizontal box with crop-marks at its corners looking like angles.
+% The crop-box is aligned at the bottom and is lowered at the |\lineskip| value.
+% The optional \meta{width} and \meta{height} parameters specify the width and
+% height of the crop-box respectively. If some of them is omitted or is
+% empty, the width or height of the crop-box \meta{content} is used for calculation
+% the omitted dimension. In this case, the doubled value of the
+% \textit{crop-box separation\/} parameter is added to the natural dimension
+% of the box's \meta{content}. The \meta{content} is centered inside the crop-box.
+%
+% \DescribeMacro{\cropboxsep}
+% The |\cropboxsep|\marg{length} command specifies the separation value to be used
+% in calculation of crop-box dimensions when any of optional parameters is
+% omitted or empty. The default is |\cropboxsep{5pt}|.
+%
+% \DescribeMacro{\croplinewidth}
+% The |\croplinewidth|\marg{length} command specifies a width of crop-lines.
+% The default is |\croplinewidth{.4pt}|.
+%
+% \DescribeMacro{\croplinelength}
+% The |\croplinelength|\marg{length} command specifies a length and direction
+% of crop-lines: the absolute value of \meta{length} specifies
+% a length of crop-lines and the sign of \meta{length} specifies a direction.
+% If the \meta{length} is negative, the angles look outside the crop-box.
+% Otherwise, they look inside the crop-box.
+%
+% The following example shows how crop-boxes are docked together:
+% \begin{center}
+% \cropbox[30mm][10mm]{Box 1}\cropbox[30mm][10mm]{Box 2}\cropbox[30mm][10mm]{Box 3}\cropbox[30mm][10mm]{Box 4}\\
+% \cropbox[30mm][10mm]{Box 5}\cropbox[30mm][10mm]{Box 6}\cropbox[30mm][10mm]{Box 7}\cropbox[30mm][10mm]{Box 8}
+% \end{center}
+% It was prepared as follows:
+% \begin{quote}
+% |\begin{center}|\\
+% |\cropbox[30mm][10mm]{Box 1}\cropbox[30mm][10mm]{Box 2}%|\\
+% |\cropbox[30mm][10mm]{Box 3}\cropbox[30mm][10mm]{Box 4}\\|\\
+% |\cropbox[30mm][10mm]{Box 5}\cropbox[30mm][10mm]{Box 6}%|\\
+% |\cropbox[30mm][10mm]{Box 7}\cropbox[30mm][10mm]{Box 8}|\\
+% |\end{center}|
+% \end{quote}
+% You can see that crop-lines of neighbour boxes exactly coincide.
+% \StopEventually{}
+%
+% \section{The Implementation}
+%
+% \begin{macro}{\croplinelength}
+% \begin{macro}{\croplinewidth}
+% \begin{macro}{\cropboxsep}
+% Styling macros:
+% \begin{macrocode}
+%<*package>
+\newcommand*{\croplinelength}[1]{\def\CRB@length{#1}}
+\newcommand*{\croplinewidth}[1]{\def\CRB@width{#1}}
+\newcommand*{\cropboxsep}[1]{\def\CRB@sep{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\cropbox}
+% The |\cropbox| command:
+% \begin{macrocode}
+\newcommand*{\cropbox}[1][]{\@ifnextchar[{\CRB@box[#1]}{\CRB@box[#1][]}}
+\def\CRB@box[#1][#2]#3{%
+% \end{macrocode}
+% Calculate crop-box dimensions in |\@tempdima| and |\@tempdimb|:
+% \begin{macrocode}
+ \@begin@tempboxa\hbox{#3}%
+ \def\@tempa{#1}\ifx\@tempa\@empty
+ \@tempdima\width \advance\@tempdima 2\CRB@sep\relax
+ \else
+ \setlength\@tempdima{#1}%
+ \fi
+ \def\@tempa{#2}\ifx\@tempa\@empty
+ \@tempdimb\totalheight \advance\@tempdimb 2\CRB@sep\relax
+ \else
+ \setlength\@tempdimb{#2}%
+ \fi
+% \end{macrocode}
+% Prepare crop-marks in 0th box of zero width:
+% \begin{macrocode}
+ \setbox\z@\hb@xt@\z@{%
+ \linethickness{\CRB@width}%
+ \setlength\unitlength{\CRB@length}%
+ \ifdim\unitlength=\z@ \else
+ \ifdim\unitlength>\z@
+ \CRB@hcross\z@\z@\@ne\@ne
+ \CRB@hcross\@tempdima\z@\m@ne\@ne
+ \CRB@hcross\z@\@tempdimb\@ne\m@ne
+ \CRB@hcross\@tempdima\@tempdimb\m@ne\m@ne
+ \else \unitlength -\unitlength
+ \CRB@hcross\z@\z@\m@ne\m@ne
+ \CRB@hcross\@tempdima\z@\@ne\m@ne
+ \CRB@hcross\z@\@tempdimb\m@ne\@ne
+ \CRB@hcross\@tempdima\@tempdimb\@ne\@ne
+ \fi
+ \fi
+ }%
+% \end{macrocode}
+% Put crop-marks as a background for vertical box containing the
+% crop-box content. We decrease the height of vertical box on
+% the |\lineskip| to make the exact docking of vertically neighbour
+% crop-boxes.
+% \begin{macrocode}
+ \leavevmode \ht\z@\z@ \dp\z@\z@ \box\z@
+ \advance\@tempdimb -\lineskip
+ \vbox to\@tempdimb{\vss\vskip -\lineskip
+ \hb@xt@\@tempdima{\hss\unhbox\@tempboxa\hss}\vss\kern\z@
+ }%
+ \@end@tempboxa
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\CRB@hcross}
+% This command prepares a crop-mark.
+% \begin{macrocode}
+\def\CRB@hcross#1#2#3#4{%
+ \@killglue\raise#2\hb@xt@\z@{\kern#1\line(#3,0)\@ne\hss}\hss
+ \@killglue\raise#2\hb@xt@\z@{\kern#1\line(0,#4)\@ne\hss}\hss
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Initial settings:
+% \begin{macrocode}
+\croplinelength{10pt}
+\croplinewidth{.4pt}
+\cropboxsep{5pt}
+%</package>
+% \end{macrocode}
+\endinput