summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ncctools/source/ncccropmark.dtx
blob: 735bb5d75ac399ebf2990627676a12ec3443234c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
% \iffalse
%%
%% File: ncccropmark.dtx Copyright (C) 2002--2004 by Alexander I. Rozhenko
%%
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{ncccropmark}
%<package>         [2004/11/29 v1.1 Cropmarks (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/29}{Bug fix on misusing the bottom skip instead of top one}
% \changes{v1.1}{2004/11/29}{Documentation was prepared}
%
%<*driver>
\let\makeindex\relax
\documentclass{ltxdoc}
\usepackage{ncccropmark,watermark}
\GetFileInfo{ncccropmark.sty}
\begin{document}
\title{The \textsf{ncccropmark} package\thanks{This file
        has version number \fileversion, last
        revised \filedate.}}
\author{Alexander I. Rozhenko\\rozhenko@oapmg.sscc.ru}
\date{\filedate}
\maketitle
\DocInput{ncccropmark.dtx}
\end{document}
%</driver>
% \fi
%
% \watermark{\cropmark[f]{10mm}{10mm}{10mm}{10mm}{5mm}
%            \cropmark[f]{10mm}{10mm}{10mm}{10mm}{-5mm}}
% \thiswatermark{\cropmark[f]{10mm}{10mm}{10mm}{10mm}{5mm}}
%
% \section{User Interface}
%
% \DescribeMacro{cropmark}
% The package implements the command
% \begin{quote}
% |\cropmark|\oarg{fields}\marg{left}\marg{right}\marg{top}\marg{bottom}\marg{length}
% \end{quote}
% useful as a watermark. The command was desired for use together with the
% |watermark| package. It must be called inside the picture environment
% (a watermark content is prepared in such a way).
%
% The optional \meta{fields} parameter contains a combination of letters
% |h| (header), |f| (footer), and |m| (marginal notes).
% It determines the additional fields of paper area to be taken into account
% in crop area when the crop-mark is typed out. If the optional parameter is omitted,
% the crop area coincides with the text area only.
%
% Next four parameters mean padding values for crop-mark corners with respect to
% the crop area and the last parameter is equal to crop lines length.
% Its positive value means crop-mark corners looking on the crop area.
% Otherwise, the corners look outside of the crop area.
% To prepare crosses, you need to use the crop-mark twice with positive
% and negative values.
%
% In two-side mode the left and right padding are swapped for
% every even page.
%
% For example, |\watermark{\cropmark[f]{10mm}{10mm}{10mm}{10mm}{5mm}}|
% means a crop-mark indented on 10mm in all directions from the crop area
% containing the text area and the page footer. You can see the result
% on this page. The crosses on the next page were prepared with
% the following command:
% \begin{quote}
% |\watermark{\cropmark[f]{10mm}{10mm}{10mm}{10mm}{5mm}|\\
% |           \cropmark[f]{10mm}{10mm}{10mm}{10mm}{-5mm}}|
% \end{quote}
% \StopEventually{}
%
% \section{The Implementation}
% This package requires the |ncccropbox| package to prepare a
% crop-mark and the |tocenter| package to calculate crop-area
% dimensions.
%    \begin{macrocode}
%<*package>
\RequirePackage{ncccropbox,tocenter}
%    \end{macrocode}
%
% \begin{macro}{\cropmark}
% We suppose here that the |\cropmark| will be
% used at the beginning of header. The |\NCC@pos| command
% from the |tocenter| package parses the \meta{fields} parameter
% and prepares |\NCC@h|\marg{register}, |\NCC@f|\marg{register},
% and |\NCC@m|\marg{register} commands to adjust values of skip
% registers. See the |tocenter| package for more details.
%    \begin{macrocode}
\newcommand*{\cropmark}[6][]{\NCC@pos{#1}%
%    \end{macrocode}
% At the first, we calculate the width of crop-box and the
% left skip from the beginning of header.
% The |\@tempswatrue| means reverse left and right paddings.
%    \begin{macrocode}
  \@tempswafalse
  \if@twoside \ifodd\c@page \else \@tempswatrue \fi\fi
%    \end{macrocode}
% Set |\@tempdima| to the left padding and |\@tempdimb| to the right
% padding.
%    \begin{macrocode}
  \if@tempswa
    \setlength{\@tempdima}{#3}%
    \setlength{\@tempdimb}{#2}%
  \else
    \setlength{\@tempdima}{#2}%
    \setlength{\@tempdimb}{#3}%
  \fi
%    \end{macrocode}
% Adjust values of |\@tempdima| and |\@tempdimb| with margin
% widths:
%    \begin{macrocode}
  \if@twocolumn
    \NCC@m\@tempdima \NCC@m\@tempdimb
  \else
    \if@tempswa
      \if@reversemargin \NCC@m\@tempdimb \else \NCC@m\@tempdima \fi
    \else
      \if@reversemargin \NCC@m\@tempdima \else \NCC@m\@tempdimb \fi
    \fi
  \fi
%    \end{macrocode}
% Calculate the left skip in |\@tempskipa| and the crop-box width
% in  |\@tempdima|:
%    \begin{macrocode}
  \@tempskipa -\@tempdima
  \advance\@tempdima\@tempdimb
  \advance\@tempdima\textwidth
%    \end{macrocode}
% Now we calculate the height of crop-box in the |\@tempdimb| register
% and the bottom skip in the |\@tempskipb| register:
%    \begin{macrocode}
  \@tempdimb\headsep
  \advance\@tempdimb\textheight
  \NCC@f\@tempdimb
  \addtolength{\@tempdimb}{#5}%
  \@tempskipb -\@tempdimb
  \advance\@tempdimb -\headsep
  \NCC@h\@tempdimb
  \addtolength{\@tempdimb}{#4}%
%    \end{macrocode}
% All necessary calculations are done. Put the crop-box at
% the relative position |\@tempskipa,\@tempskipb|:
%    \begin{macrocode}
  \begingroup
    \croplinelength{#6}%
    \lineskip\z@
    \@killglue\raise\@tempskipb
      \hb@xt@\z@{\kern\@tempskipa
        \cropbox[\@tempdima][\@tempdimb]{}\hss}\hss%
  \endgroup
}
%</package>
%    \end{macrocode}
% \end{macro}
\endinput