summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/misc/abstbook.cls
blob: ff699c941c4e1f519c5d913b79c753e77b54228b (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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
%
%	This is second version of the class. It redefines Chapters 
%	sections and subsections, in order to use the minitoc style!
%
%
% DESCRIPTION:
%
%	-``Quick and dirty'' class file for ``book of abstracts''
%	 (used for IWEPNM - Kirchberg 1997)
%
%	- It's getting less Quick and dirty, but it's far from beeing 
%	what i want, should be much more flexible for that.
%
%	-Written by Havlik Denis (havlik@pap.univie.ac.at) 02/1997.
%	-Based on the report class. 
% 
%	This .cls file has been written for the conference in Kirchberg.
%	It has been designed to produce a4-size pages,
%	which are later converted into a5. Output is double-sided.
%
%	Abstracts are suposed to be in separate files, with simple
%	formating (title, name, adress, text).
%
%	As i have a feeling that many conferences need something
%	like this booklet, i will try to document this file as good as 
%	i can. In the case anybody is interesting to use this class,
%	but neads more flexibility or new features, i would be pleased 
%	to help. This is a first time ever that i write a Latex class,
%	but i'm learning.   
%
%	Features: 
%	-Conferences consist of days and sessions.
%	-In every day there can be one or more sessions, in every
%	 session there can be several abstracts. Abstracts appear
%	 two on a page, with short name of the session, the number
%	 of the abstract and an additional entry WRITTEN ON THE MARGIN. 
%	-In the headings, day appears on the even, and session on the odd
%	 pages. 
%	-For every day, a table of abstracts is printed
%	-names of the authors are automatically added to index of authors
%	 (don't forget to run the ``makeindex''!!!) 
%	
% I would like to thank the ``\"Osterreichischen Fonds zur F\"orderung 
% der wissenschaftlichen Forschung'' for financing my work 
% under project Nr. +P10924-PHY. Furthermore, a Linux, and \TeX/\LaTeX 
% comunity, for providing wonderfull free software, that i use for all my 
% work. Special thanks to Jean-Pierre Drucbert 
%					Havlik Denis 
%
% TODO: 
%	1. redefine \titl, \name and \adr, so i can get automatic: 
%	indexing of authors and automatic referencing of authors to adress
%	2. automatic resizing of abstracts to fit other page-sizes, 
%	(not only a4) and other margines etc.
%	3. add formatting stuff like:
%		 \newcommand{\titlstyle}{\bf \Large \MakeUppercase}
%	with some logical names and use it consequently for all the macros
%	in the whole class
%	4. ?%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{abstbook}[1997/02/10 for typseting book of abstracts]
\DeclareOption{twocolumn}{\OptionNotUsed} % makes no sense to use it...
% All other options go to ``report'' class.
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
\ProcessOptions
\LoadClass[a4,twoside]{report}
\RequirePackage{makeidx} % neaded to make index
\RequirePackage{graphicx} % neaded to input graphics into booklet.
%\RequirePackage{minitoc}
% page - size related stuff. Looks good on my printer...
\setlength{\unitlength}{1cm}
%\setlength{\topmargin}{1.5cm}
\setlength{\hoffset}{-0.8in}
%\setlength{\voffset}{-1in} 
\setlength{\textwidth}{16.5cm}
\setlength{\textheight}{24.8cm}
\setlength{\topskip}{0cm}
\setlength{\footskip}{0cm}
\setlength{\oddsidemargin}{1.5cm}
\setlength{\evensidemargin}{1.5cm}
\setlength{\marginparsep}{0.3cm}
\setlength{\marginparwidth}{1.0 cm}
\setlength{\parindent}{0cm}
\pagestyle{myheadings} 		% to get the day - session in headings!

% I had to redefine \chapter  because i have to use it, if i want
% mini-tables-of-contents... 
\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                    \global\@topnum\z@
                    \@afterindentfalse
                    \secdef\@chapter\@schapter}
\def\@makechapterhead#1{\relax} 	%write nothing...
\RequirePackage{minitoc}

\AtBeginDocument{% this comes after \begin{document}
		\makeindex 
		\dominitoc 
		\faketableofcontents}	

\AtEndDocument{\printindex}	% dont forget to run the ``makeindex'' program!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%	COMMANDS
%
\newcounter{Cabstract}[section]
\newsavebox{\ConferenceDay} % hier comes the name of the day
\newsavebox{\SessionName}   % name of the session
\newsavebox{\ShortSessionName}% short name of the session
% Counters for days, sessions and abstracts.
% hope this will work....

\sbox{\ConferenceDay}{}
\sbox{\SessionName}{}
\markboth{\usebox{\ConferenceDay}}{\usebox{\SessionName}}

\def\mtctitle{\relax}%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Command: 	\conferenceday
%  Usage: 	\conferenceday{some day}
%  Provides:	advances day-counter, adds the day-name to TOC 
%		and clears the page		
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\conferenceday}[1]{%
	\chapter{#1}
	{\Large \bf #1}\par 
	\minitoc
	\sbox{\ConferenceDay}{#1} 
	\sbox{\SessionName}{#1}
	}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Command:	\sessionname
%  Usage: 	\sessionname{shortname}{longname}
%  Provides:    advances session-counter, adds the session-name to TOC
%		and clears the page
%  Important:	I'm not using \section here. Instead, i try to emulate 
%		the part that i nead. It worked with my version 
%		of minitoc, but didn't work with an older version 
%		we had at the university. Bad. Redefining \section 
%		would be better, but i can't figure it out.
%		Well, Jean-Pierre Drucbert <Jean-Pierre.Drucbert@onecert.fr>
%		said it should be O.K., so be it. 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\sessionname}[2]{%
	\clearpage
	\refstepcounter{section}
	\sbox{\ShortSessionName}{#1}
	\sbox{\SessionName}{#2}
	\addcontentsline{toc}{section}{\MakeUppercase{#2}}
	}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Following definitions determine how to deal with the abstracts     %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ABSTRACTS SHOULD BE IN SEPARATE FILES, FORMATED LIKE THIS:
%
% Abstract example: 
%	\index{Name1} \index{Name2}... - this is nessesary for authornames 
%					to appear in index!!!  
%	\titl{Title of the abstract}
%	\name{A. First$^1$, A. Second$^1$, A. Third$^2$}
%	\adr{1~First address\\
%	     2~Second addrass}
%
%	\begin{abstr}
%	Abstracts text (in Latex notation). Most of the Latex commands 
%	can be used here...
%	\end{abstr}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% TO DO:
% I would like to change \name and \adr in such a way that
%
%	\name[mark1]{name1}
%	\name[mark2]{name2}
%	\name[mark1]{name3}
%	\adr[adr1]{adress1}
%	\adr[adr2]{adress2}
%
%	produces the same result as one obtained in the previous example
%	and automaticaly includes the names into index list...
%	Unfortunately, i don't know how to do it.
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%	COMMANDS TO BE USED IN ABSTRACTS:
%
% Title of the abstract
\newcommand{\titl}[1]{\large \bf \MakeUppercase{#1}\par\medskip}
% author(s) name(s)
\newcommand{\name}[1]{\rm \normalsize #1\par\smallskip}
% author(s) addres(es)
\newcommand{\adr}[1]{\it \normalsize #1\par\smallskip}
% enviroment ``abstr''
\newenvironment{abstr}{\par\medskip \normalsize \rm}{\par\bigskip}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%	COMMANDS TO BE USED IN THE MAIN DOCUMENT
%
% Command: 	\loadabstr
% Usage: 	\loadabstr[additional]{TOC-entry}{filename.tex}
% Provides:	reserves 1/2 page for the abstract, loads the abstract 
%		from the file ``filename.tex'', writes the ``TOC-entry''
%		to table of contents, advances the abstracts-counter
%		and writes the short name of the session, abstract-number
%		and an additional entry to the margin. 
% (We have used the additional entry for the time..)
%usage: \loadabstr[additional]{toc-entry}{name.tex}
\newcommand{\loadabstr}[3][\relax]{%
	\stepcounter{Cabstract}
	\par
	\rule[-6cm]{0cm}{12cm}	% well, you might nead to change this
				% if you change the size/format of the page
	\marginpar{%
		\large\centering
		#1\par\smallskip
		\usebox{\ShortSessionName}\par\smallskip
		\arabic{Cabstract}}
	  \IfFileExists{#3}{%
	    \begin{minipage}{16.5cm} % this too...
		\input{#3} 
	    \end{minipage}}
	    {File #3 not found}
	\addcontentsline{toc}{subsection}{#2}
	}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Command:	\loadpsabstr
%  Usage:	\loadpsabstr[additional]{toc-entry}{name.ps}{formating}
%  Provides:	Some of our abstracts arrived as postscript or with s-mail
%		This commands loads the postscript file, cuts part of it out
%		and puts it on its place, just like \loadabstr does with 
%		an latex file. Additional parameter goes directly to 
%		``includegraphics'' (see explanation of graphicx package)
%		try something like: scale=1, bb=2.5cm 16cm 19cm 28cm 
\newcommand{\loadpsabstr}[4][\relax]{%
	\stepcounter{Cabstract}
	\par
	\rule[-6cm]{0cm}{12cm}	% well, you might nead to change this
				% if you change the size/format of the page
	\marginpar{%
		\large\centering
		#1\par\smallskip
		\usebox{\ShortSessionName}\par\smallskip
		\arabic{Cabstract}}
	  \begin{minipage}{16.5cm} % this too...
	  \unitlength	1cm
	  \IfFileExists{#3}{%
	    \begin{picture}(16.5,12) % and this, too!
	      \put(0,0){%
	        \includegraphics[%
		  angle=0, clip=true, #4]{#3}}
	    \end{picture}}
	    {File #3 not found!}
	\end{minipage}
	\addcontentsline{toc}{subsection}{#2}
	}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% end of the Kirchberg.cls
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%