summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/csbulletin/csbulletin.cls
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/csbulletin/csbulletin.cls')
-rw-r--r--Master/texmf-dist/tex/latex/csbulletin/csbulletin.cls218
1 files changed, 146 insertions, 72 deletions
diff --git a/Master/texmf-dist/tex/latex/csbulletin/csbulletin.cls b/Master/texmf-dist/tex/latex/csbulletin/csbulletin.cls
index b6100abcc0f..a646f065fa4 100644
--- a/Master/texmf-dist/tex/latex/csbulletin/csbulletin.cls
+++ b/Master/texmf-dist/tex/latex/csbulletin/csbulletin.cls
@@ -1,5 +1,15 @@
-\ProvidesClass{csbulletin}[2008/08/05 CSTUG Bulletin class]
-\ClassInfo{csbulletin}{$Id: csbulletin.cls 29 2008-08-05 19:36:49Z zw $}
+\ProvidesClass{csbulletin}[2017/02/10 CSTUG Bulletin class]
+\ClassInfo{csbulletin}{$Id$}
+
+% Switch
+
+\newif\ifcsbul@nomargins
+\newif\ifcsbul@web
+\newif\ifcsbul@color
+
+% Empty macro for later use
+
+\def\NovyClanek{}
% Language attributes
@@ -30,9 +40,28 @@
\DeclareOption{executivepaper}{}
\DeclareOption{landscape}{}
+% Always at the new page
+
+\DeclareOption{newpage}{\let\NovyClanek\clearpage}
+
+% No margins (special use)
+
+\DeclareOption{nomargins}{\csbul@nomarginstrue}
+
+% Color
+
+\DeclareOption{web}{\PassOptionsToPackage{web}{csbulobalka}\csbul@webtrue}
+\DeclareOption{color}{\PassOptionsToPackage{color}{csbulobalka}\csbul@colortrue}
+\DeclareOption{twocolor}{\PassOptionsToPackage{twocolor}{csbulobalka}\csbul@colortrue}
+\DeclareOption{custom}{\PassOptionsToPackage{custom}{csbulobalka}\csbul@colortrue}
+
% Pass all global options to the "article" class
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+
+% No margins if the first page given
+%\IfFileExists{\jobname.FirstPage}{\ExecuteOptions{nomargins}}{}
+
\ProcessOptions
\LoadClass[twoside]{article}
@@ -48,8 +77,10 @@
% To be deleted soon
\newif\if@html
+\ifpdf
\IfFileExists{microtype.sty}{\RequirePackage
[protrusion=false,expansion=true,stretch=8,shrink=24,step=4]{microtype}}{}
+\fi
\IfFileExists{array.sty}{\RequirePackage{array}}{}
@@ -62,7 +93,7 @@
\IfFileExists{SpecChar.sty}{\RequirePackage{SpecChar}\AddSpecial\-}{}
-\IfFileExists{csbulobalka.sty}{\RequirePackage{csbulobalka}}{}
+\IfFileExists{csbulobalka.sty}{\RequirePackage{csbulobalka}[2017/02/17]}{}
\ifx\mubytein\undefined
\newcount\mubytein
@@ -70,18 +101,22 @@
\newcount\mubytelog
\else
\IfFileExists{csbulutf8.sty}{\RequirePackage{csbulutf8}}{}
- \IfFileExists{encxvlna.sty}{\RequirePackage{encxvlna}}{}
\fi
% The next macros must be here, otherwise the PDF mode may report strange errors
\newtoks\cislo
\newtoks\rok
+\newtoks\doisufix\doisufix{\the\rok-\the\cislo/\thepage}
\newtoks\naklad
\newtoks\@uzaverka
\newtoks\pristi@uzaverka
\newtoks\obalka
+% Default
+
+\obalka{Anton\'{\i}n Strejc}%'
+
% \uzaverka DD.MM.RRRR<space or end-of-line>
\def\uzaverka #1.#2.#3 {\begingroup
@@ -165,12 +200,12 @@
% Newlines for titles and toc
-\DeclareRobustCommand\nl{\protect\p@nl}
-\def\p@nl{\unskip\\\ignorespaces}
-\DeclareRobustCommand\ln{\protect\p@ln}
-\let\p@ln\relax
-\DeclareRobustCommand\toc@nl{\let\p@nl\relax
- \def\p@ln{\unskip\\\ignorespaces}}
+\DeclareRobustCommand\TitleNewline{\\}
+\DeclareRobustCommand\TocNewline{\space}
+\AtBeginDocument{\addtocontents{toc}{\csbul@newlinedefs}}
+\DeclareRobustCommand\csbul@newlinedefs{%
+ \let\TitleNewline\space
+ \let\TocNewline\\}
%=========================================== Sizes etc.
@@ -252,15 +287,16 @@
\newenvironment{summary}{\ifhmode \par \fi
\begin{otherlanguage*}{english}
\setcounter{secnumdepth}{-1}\section{Summary:
- \zw@englishtitle}}{\ifhmode \par \fi\end{otherlanguage*}}
+ \zw@englishtitle}}{\ifhmode \par
+ \fi\end{otherlanguage*}\aftergroup\zw@summaryOK}
\renewcommand\@seccntformat[1]{\@nameuse{the#1}.\hspace{.5em}}
-\newcommand\StartPage[1][1]{\clearpage\setcounter{page}{#1}}
+\newcommand\StartPage[1][1]{\clearpage\setcounter{page}{#1}\zw@summaryOK}
\renewenvironment{abstract}{\narrower \small \noindent \ignorespaces}{\ifhmode \par \fi}
-\def\keywords:{\ifhmode \par \fi \smallskip \noindent\textbf{Key words:} \ignorespaces}
+\def\keywords:{\ifhmode \par \fi \medskip \noindent\textbf{Keywords:} \ignorespaces}
% ===================================================== New layout
@@ -269,8 +305,6 @@
\paperwidth 148mm
\paperheight 210mm
-\pdfpagewidth\paperwidth
-\pdfpageheight\paperheight
\headheight \z@
\headsep \z@
\textwidth 27cc
@@ -289,6 +323,11 @@
\advance\evensidemargin -1in
\parskip \z@
+\AtBeginDocument{\ifpdf
+ \pdfpagewidth\paperwidth \pdfpageheight\paperheight
+\else
+ \special{papersize=\the\paperwidth,\the\paperheight}\fi}
+
\newdimen\zw@bul@dim
\zw@bul@dim=148mm
\advance\zw@bul@dim -1in
@@ -299,8 +338,30 @@
\def\@oddfoot{\hfill \textrm{\thepage}}%
\def\@evenfoot{\textrm{\thepage}\hfill}}
+\def\ps@csbuldoi{%
+ \def\@oddhead{}\let\@evenhead\@oddhead
+ \def\@oddfoot{{\doiprefix \doi}\hfill \textrm{\thepage}}%
+ \def\@evenfoot{\textrm{\thepage}\hfill{\doiprefix \doi}}}
+
+\def\doiprefix{\footnotesize \textsc{doi:}\space}
+
+\def\ps@ODD{%
+ \def\@oddhead{}\let\@evenhead\@oddhead
+ \def\@oddfoot{\hfill \textrm{\thepage}}\let\@evenfoot\@oddfoot}
+
\pagestyle{csbul}
+\ifcsbul@nomargins
+ \oddsidemargin -1in
+ \evensidemargin -1in
+ \topmargin -1in
+ \pagestyle{empty}
+\fi
+
+% Dirty hax
+\def\ps@odd{\ps@csbul \let\@evenfoot\@oddfoot}
+\def\ps@even{\ps@csbul \let\@oddfoot\@evenfoot}
+
% ============================================ for use with minitoc
@@ -341,8 +402,9 @@
\let\pdf@title\relax
\let\signature\podpis
-\def\csbul@podepis{\ifx\p@dpis\relax \else
- \ifhmode \par \else \textwidth\lastskip \fi
+\def\csbul@podepis{\zw@nosummaryerror
+ \ifx\p@dpis\relax \else
+ \ifhmode \par \fi
\nobreak\medskip
\begin{flushright}\clubpenalty\@M \widowpenalty\@M \interlinepenalty\@M
\itshape\p@dpis
@@ -353,8 +415,20 @@
\AtEndDocument{\csbul@podepis}
+% Dirty hacking...
+\def\Podpis#1{\ifhmode \par \fi \nobreak \medskip
+ \begin{flushright}\clubpenalty\@M \widowpenalty\@M \interlinepenalty\@M
+ \itshape#1
+ \end{flushright}}
+
+\def\zw@nosummaryerror{\ClassWarningNoLine{csbulletin}{English summary is misssing!}}
+\def\zw@summaryOK{\let\zw@nosummaryerror\relax}
+
\def\titlepenalty{-100}
+% DOI removal
+\def\nodoi{\def\doi{}\let\doiprefix\doi}
+
\renewcommand\maketitle[1][\z@]{%
\vskip 3cc\vskip 0pt plus 5cc\penalty\titlepenalty
\vskip 0pt plus-5cc\vskip-\topskip
@@ -378,22 +452,72 @@
\hfill\ifautkn@wn\box\authb@x\fi
\vrule height 17pt width 0pt}}%
\nobreak\vglue 2cc plus 6dd minus 3dd \relax
- \ClanekToc
+ \thispagestyle{csbuldoi}\ClanekToc
\@afterindentfalse \@afterheading}
\def\ClanekToc{%
+ \ifx\zw@englishtitle\undefined
+ \ClassWarningNoLine{csbulletin}{English title not given, it must precede \protect\maketitle!}%
+ \let\zw@englishtitle\t@tle
+ \fi
\begingroup \let\footnote\@gobble
\ifautkn@wn
\def\PutAuthor{\protect\cl@nek{\auth@r}}
- \addcontentsline{toc}{clanek}{\protect\cl@nek{\auth@r}{\t@tle}}%
+ \addcontentsline{toc}{clanek}{\protect\cl@nek[\auth@r]{\t@tle}{\zw@englishtitle}}%
\ifx\pdf@title\relax \def\pdf@title{\protect\cl@nek{\auth@r}{\t@tle}}\fi
\else
\def\PutAuthor{}
- \addcontentsline{toc}{clanek}{\t@tle}%
+ \addcontentsline{toc}{clanek}{\protect\cl@nek{\t@tle}{\zw@englishtitle}}%
\ifx\pdf@title\relax \def\pdf@title{\t@tle}\fi
\fi
\secdef\@chapter\@schapter{\t@tle}% for minitoc
\endgroup}
+
+\newwrite\csbul@info
+\def\csbul@start@page#1{\begingroup
+ \let\@input\@gobble\@starttoc{toc}\endgroup
+ \setcounter{page}{#1}}
+
+% Default fake DOI
+\def\doi{10.5300/xxxx-x/zzz}
+
+% PDF clanek (include PDF, directory = optional argument, name without .pdf)
+
+\def\PDFclanek{\bgroup \catcode`\-12 \catcode`\_12 \csbul@PDFclanek}
+\newcommand*\csbul@PDFclanek[2][]{\egroup\clearpage
+ \ifcat$#1$
+ \def\csbul@fn{#2}
+ \immediate\write\@auxout{\string\CSBULpdf{#2}}
+ \else
+ \def\csbul@fn{#1/#2}
+ \immediate\write\@auxout{\string\CSBULpdf[#1]{#2}}
+ \fi
+ \immediate\openout\csbul@info\csbul@fn.info
+ \immediate\write\csbul@info{\noexpand\csbul@start@page{\thepage}}
+ \immediate\write\csbul@info{\noexpand\def\noexpand\doi{10.5300/\the\doisufix}}
+ \immediate\write\csbul@info{\ifcsbul@web\noexpand\csbul@webtrue\fi}
+ \immediate\write\csbul@info{\ifcsbul@color\noexpand\csbul@colortrue\fi}
+ \immediate\closeout\csbul@info
+ \addtocontents{toc}{\protect\@input{\csbul@fn.toc}}
+ \if@csbul@pdfinclude@ \csbul@PDF@clanek \fi}
+
+\def\csbul@PDF@clanek{\setcounter{section}{1}
+ \pdfximage{\csbul@fn.pdf}\edef\csbul@Npages{\the\pdflastximagepages}
+ \loop
+ \thispagestyle{empty}
+ \vbox to 0mm{\hsize \linewidth \vskip -\topmargin \vskip -\topskip \vskip -1in
+ \parindent \z@
+ \hbox to \hsize{%
+ \ifodd\c@page \hskip -\oddsidemargin \else \hskip -\evensidemargin\fi \hskip -1in
+ \includegraphics[page=\number\c@section]{\csbul@fn.pdf}\hss}\vss}\clearpage
+ \ifnum\value{section}<\csbul@Npages
+ \stepcounter{section}
+ \repeat}
+
+\newif\if@csbul@pdfinclude@
+
+\newcommand*\CSBULpdf[2][]{\global\@csbul@pdfinclude@true}
+
%
% Index
%
@@ -408,59 +532,7 @@
\def\printindex{%
\@input@{\bul@indexname.ind}%
\immediate\closeout\@indexfile}%
-%
-% Counters to reset
-%
-\def\csbul@zerocounters{%
-\setcounter{part}\z@
-\setcounter{section}\z@
-\setcounter{subsection}\z@
-\setcounter{subsubsection}\z@
-\setcounter{paragraph}\z@
-\setcounter{subparagraph}\z@
-\setcounter{equation}\z@
-\setcounter{figure}\z@
-\setcounter{table}\z@
-\setcounter{footnote}\z@
-\setcounter{mpfootnote}\z@
-\setcounter{secnumdepth}{-2}}
-
-\def\csbul@prefix{} % default for single article
-\def\csbul@redef#1 {\expandafter\let\csname csbul@#1\expandafter\endcsname\csname #1\endcsname
- \expandafter\def\csname #1\endcsname##1{\csname csbul@#1\endcsname{\csbul@prefix##1}}}
-\csbul@redef label
-\csbul@redef pageref
-\csbul@redef ref
-
-% Make the prefix
-
-\newcount\csbul@tempcnt
-
-\def\csbul@makeprefix{\global\advance\csbul@tempcnt\@ne
- \edef\csbul@prefix{CSBUL@@\number\csbul@tempcnt}}
-
-% Input
-
-\newcommand\Clanek[2][]{\csbul@makeprefix
- \begingroup
- \csbul@zerocounters
- \renewcommand\documentclass[2][CSBUL]{}%
- \renewcommand\usepackage[2][CSBUL]{}%
- \let\input\CSBULinput
- \renewenvironment{document}{\let\document\@notprerr\setmubytevalues}{\csbul@podepis}% ???
- \ifcat$#1$%
- \def\csbul@fn{#2}%
- \else
- \def\csbul@fn{#1/#2}\graphicspath{{#1/}}\def\csbul@input@path{#1/}%
- \fi
- \csbul@saved@input{\csbul@fn}
- \endgroup}
-% Input path
-
-\def\csbul@input@path{}
-\def\CSBULinput#1{\csbul@saved@input{\csbul@input@path #1}}
-\let\csbul@saved@input\input
%============================================= TUGboat -- obsah
@@ -501,3 +573,5 @@ java-scrip-to-vou java-scrip-to-v\'ych java-scrip-to-v\'ymi}
\AtBeginDocument{\pdfpageheight 210mm \pdfpagewidth 148mm \relax}
\AtBeginDocument{\edef\setmubytevalues{\noexpand\mubytein\the\mubytein
\noexpand\mubyteout\the\mubyteout \noexpand\mubytelog\the\mubytelog \relax}}
+
+\@input{\jobname.info}