Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jauslin <ian.jauslin@roma1.infn.it>2015-06-23 17:09:50 +0000
committerIan Jauslin <ian.jauslin@roma1.infn.it>2015-06-23 17:09:50 +0000
commit0334c43102e38fa770b58ad5830dc6f8411d9642 (patch)
tree6e0c0440e3c1e74892492c800482883c6f4e04e0 /iansecs.sty
Initial commitv0.0
Diffstat (limited to 'iansecs.sty')
-rw-r--r--iansecs.sty322
1 files changed, 322 insertions, 0 deletions
diff --git a/iansecs.sty b/iansecs.sty
new file mode 100644
index 0000000..5385df6
--- /dev/null
+++ b/iansecs.sty
@@ -0,0 +1,322 @@
+%%
+%% This file contains the main style commands
+%%
+%% Some options can be set by changing the \loaddefaults command
+%%
+
+\usepackage{color}
+\usepackage{marginnote}
+
+\def\loaddefaults{
+ \sectionstrue
+ \subseqcountfalse
+ \def\seqskip{\vskip1.5cm}
+ \def\subseqskip{\vskip1cm}
+ \resetpointattheofalse
+ \parindent=0pt
+ \def\indent{\hskip20pt}
+}
+
+% false if there are no sections
+\newif\ifsections
+% true if equation numbers should include the subsection number
+\newif\ifsubseqcount
+% true if there is a table of contents
+\newif\iftoc
+% true if point counting should reset at each theorem
+\newif\ifresetpointattheo
+
+% a prefix to put before the section number, e.g. A for appendices
+\def\sectionprefix{}
+
+\loaddefaults
+
+%% style for the equation number
+\def\eqnumstyle{}
+
+
+%% define a command and write it to aux file
+\def\outdef#1#2{%
+% define command
+\expandafter\xdef\csname #1\endcsname{\noexpand\hyperlink{page.\the\count0}{#2}}%
+% write command to aux
+\immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1\endcsname{\noexpand\hyperlink{page.\thepage}{#2}}}%
+% define ref with no link
+\expandafter\xdef\csname #1@nol\endcsname{#2}%
+% write command to aux
+\immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1@nol\endcsname{#2}}%
+}
+
+%% define a label for the latest tag
+%% label defines a command containing the string stored in \tag
+\AtBeginDocument{
+ \def\label#1{\expandafter\outdef{#1}{\safe\tag}}
+ \def\ref#1{\expandafter\safe\csname #1\endcsname}
+}
+
+%% counters
+\newcounter{sectioncount}
+\newcounter{subsectioncount}
+\newcounter{pointcount}
+\newcounter{subpointcount}
+\newcounter{subsubpointcount}
+\newcounter{seqcount}
+\newcounter{figcount}
+\newcounter{Theocount}
+\newcounter{tocsectioncount}
+\newcounter{tocsubsectioncount}
+
+%% section command
+\newlength\secnumwidth
+\newlength\sectitlewidth
+\def\section#1{%
+% reset counters
+\refstepcounter{sectioncount}%
+\setcounter{subsectioncount}{0}%
+\setcounter{pointcount}{0}%
+\setcounter{subpointcount}{0}%
+\setcounter{subsubpointcount}{0}%
+\setcounter{figcount}{0}%
+\setcounter{Theocount}{0}%
+\setcounter{seqcount}{0}%
+% space before section (if not first)
+\ifnum\thesectioncount>1%
+\seqskip%
+\fi%
+% get widths
+\def\@secnum{{\bf\Large\sectionprefix\thesectioncount.\hskip10pt}}%
+\settowidth\secnumwidth{\@secnum}%
+\setlength\sectitlewidth\textwidth%
+\addtolength\sectitlewidth{-\secnumwidth}%
+% print name
+\parbox{\textwidth}{%
+\@secnum%
+\parbox[t]{\sectitlewidth}{\Large\bf #1}%
+\par\penalty10000%
+\bigskip}\par\penalty10000%
+% define tag (for \label)
+\xdef\tag{\sectionprefix\thesectioncount}%
+% write to table of contents
+\iftoc%
+\write\tocoutput{\noexpand\tocsection{#1}{\thepage}}%
+\fi%
+}
+
+%% subsection
+\def\subsection#1{
+% counters
+\refstepcounter{subsectioncount}%
+\setcounter{pointcount}{0}%
+\setcounter{subpointcount}{0}%
+\setcounter{subsubpointcount}{0}%
+\ifsubseqcount%
+\setcounter{seqcount}0%
+\fi%
+% space before subsection (if not first)
+\ifnum\thesubsectioncount>1%
+\subseqskip%
+\fi%
+% get widths
+\def\@secnum{{\bf\large\hskip.5cm\sectionprefix\thesectioncount.\thesubsectioncount.\hskip5pt}}%
+\settowidth\secnumwidth{\@secnum}%
+\setlength\sectitlewidth\textwidth%
+\addtolength\sectitlewidth{-\secnumwidth}%
+% print name
+\parbox{\textwidth}{%
+\@secnum%
+\parbox[t]{\sectitlewidth}{\large\bf #1}%
+\par\penalty10000%
+\medskip}\par\penalty10000%
+% define tag (for \label)
+\xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount}%
+% write to table of contents
+\iftoc%
+\write\tocoutput{\noexpand\tocsubsection{#1}{\the\count0}}%
+\fi%
+}
+
+%% points
+\def\point{
+ \refstepcounter{pointcount}
+ \setcounter{subpointcount}{0}
+ \indent{\bf \thepointcount\ - }
+ % define tag (for \label)
+ \xdef\tag{\thepointcount}
+}
+\def\subpoint{
+ \refstepcounter{subpointcount}
+ \setcounter{subsubpointcount}0
+ \indent\hskip.5cm{\bf \thepointcount-\thesubpointcount\ - }
+ % define tag (for \label)
+ \xdef\tag{\thepointcount-\thesubpointcount}
+}
+\def\subsubpoint{
+ \refstepcounter{subsubpointcount}
+ \indent\hskip1cm{\bf \thepointcount-\thesubpointcount-\thesubsubpointcount\ - }
+ % define tag (for \label)
+ \xdef\tag{\thepointcount-\thesubpointcount-\thesubsubpointcount}
+}
+% reset points
+\def\resetpointcounter{
+ \setcounter{pointcount}{0}
+ \setcounter{subpointcount}{0}
+ \setcounter{subsubpointcount}{0}
+}
+
+%% equation numbering
+\def\seqcount{
+ \refstepcounter{seqcount}
+ % the output
+ \edef\seqformat{\theseqcount}
+ % add subsection number
+ \ifsubseqcount
+ \let\tmp\seqformat
+ \edef\seqformat{\thesubsectioncount.\tmp}
+ \fi
+ % add section number
+ \ifsections
+ \let\tmp\seqformat
+ \edef\seqformat{\sectionprefix\thesectioncount.\tmp}
+ \fi
+ % define tag (for \label)
+ \xdef\tag{\seqformat}
+ % write number
+ \marginnote{\eqnumstyle\hfill(\seqformat)}
+}
+%% equation environment compatibility
+\def\equation{$$\seqcount}
+\def\endequation{$$\@ignoretrue}
+
+%% figures
+\newlength\figwidth
+\setlength\figwidth\textwidth
+\addtolength\figwidth{-2.5cm}
+
+\def\figcount#1{%
+\refstepcounter{figcount}%
+% the number of the figure
+\edef\figformat{\thefigcount}%
+% add section number
+\ifsections%
+\let\tmp\figformat%
+\edef\figformat{\sectionprefix\thesectioncount.\tmp}%
+\fi%
+% define tag (for \label)
+\xdef\tag{\figformat}%
+% write
+\hfil fig \figformat: \parbox[t]{\figwidth}{\small#1}%
+\par\bigskip%
+}
+
+%% environment
+\def\figure{
+ \vfill\hbox{}
+}
+\def\endfigure{
+ \vfill\hbox{}
+}
+\let\caption\figcount
+
+%% delimiters
+\def\delimtitle#1{\par \leavevmode\raise.3em\hbox to\hsize{\lower0.3em\hbox{\vrule height0.3em}\hrulefill\ \lower.3em\hbox{#1}\ \hrulefill\lower0.3em\hbox{\vrule height0.3em}}\par\penalty10000}
+\def\delim{\par\leavevmode\raise.3em\hbox to\hsize{\vrule height0.3em\hrulefill\vrule height0.3em}\par\penalty10000}
+\def\enddelim{\par\penalty10000\leavevmode\raise.3em\hbox to\hsize{\vrule height0.3em\hrulefill\vrule height0.3em}\par}
+
+%% theorem headers
+\def\theo#1{
+ \refstepcounter{Theocount}
+ % reset points
+ \ifresetpointattheo\resetpointcounter\fi
+ % the number
+ \def\formattheo{\theTheocount}
+ % add section number
+ \ifsections
+ \let\tmp\formattheo
+ \edef\formattheo{\sectionprefix\thesectioncount.\tmp}
+ \fi
+ % define tag (for \label)
+ \xdef\tag{\formattheo}
+ % write
+ \delimtitle{\bf #1 \formattheo}
+}
+\let\endtheo\enddelim
+
+%% start appendices
+\def\appendix{%
+\vfill
+\pagebreak
+% counter
+\setcounter{sectioncount}0%
+% prefix
+\def\sectionprefix{A}%
+% write
+{\bf \LARGE Appendices}\par\penalty10000\bigskip\penalty10000%
+% add a mention in the table of contents
+\iftoc%
+\write\tocoutput{\noexpand\tocappendices}\penalty10000%
+\fi%
+%% uncomment for new page for each appendix
+%\def\seqskip{\vfill\pagebreak}
+}
+
+%% start references
+\def\references{%
+% write
+{\bf \LARGE References}\par\penalty10000\bigskip\penalty10000%
+% add a mention in the table of contents
+\iftoc%
+\write\tocoutput{\noexpand\tocreferences{\the\count0}}\penalty10000%
+\fi%
+}
+
+
+%% table of contents
+\newif\iftocopen
+\def\tableofcontents{
+{\bf \large Table of contents:}\par\penalty10000\bigskip\penalty10000%
+% copy content from file
+\IfFileExists{\jobname.toc}{\input{\jobname.toc}}{{\tt error: table of contents missing}}
+% open new toc
+\newwrite\tocoutput
+\immediate\openout\tocoutput=\jobname.toc
+\toctrue
+}
+%% close file
+\AtEndDocument{
+ % close toc
+ \iftoc
+ \immediate\closeout\tocoutput
+ \fi
+}
+
+
+%% fill line with dots
+\def\leaderfill{\leaders\hbox to 1em {\hss. \hss}\hfill}
+
+%% same as sectionprefix
+\def\tocsectionprefix{}
+
+%% toc formats
+\def\tocsection #1#2{
+ \stepcounter{tocsectioncount}
+ \setcounter{tocsubsectioncount}{0}
+ % write
+ \smallskip\hyperlink{page.#2}{{\bf \tocsectionprefix\thetocsectioncount}.\hskip5pt #1\leaderfill#2}\par
+}
+\def\tocsubsection #1#2{
+ \stepcounter{tocsubsectioncount}
+ % write
+ {\hskip10pt\hyperlink{page.#2}{{\bf \thetocsubsectioncount}.\hskip5pt {\small #1}\leaderfill#2}}\par
+}
+\def\tocappendices{
+ \medskip
+ \setcounter{tocsectioncount}0
+ {\bf Appendices}\par
+ \smallskip
+ \def\tocsectionprefix{A}
+}
+\def\tocreferences#1{
+ \medskip
+ {\hyperlink{page.#1}{{\bf References}\leaderfill#1}}\par
+ \smallskip
+}