Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Zdenek Dvorak
Comparable box dimension
Commits
583adca2
Commit
583adca2
authored
Nov 26, 2021
by
Abhiruk Lahiri
Browse files
Style file to compile the main.
parent
f6467ddf
Changes
1
Hide whitespace changes
Inline
Side-by-side
socg-lipics-v2021.cls
0 → 100644
View file @
583adca2
%% socg-lipics-v2021.cls
%% Authors: Michael Hoffmann <hoffmann@inf.ethz.ch> and Irina Kostitsyna <i.kostitsyna@tue.nl>
%% Revision: $Rev: 6990 $ from $Date: 2021-02-16 15:30:31 +0100 (Tue, 16 Feb 2021) $
%% wrapper around lipics-v2021 to obtain a more consistent line numbering
%% we patch/hack some relevant commands and environments and see what happens...
\NeedsTeXFormat
{
LaTeX2e
}
[2015/01/01]
\ProvidesClass
{
socg-lipics-v2021
}
[2021/02/16 v0.8 Adapt LIPIcs class so that lineno counts and numbers more relevant lines]
%% prefix output by classname
\newcommand
{
\socgtypeout
}
[1]
{
\typeout
{
socg-lipics-v2021: #1
}}
%
%% process options
\RequirePackage
{
ifthen
}
\RequirePackage
{
letltxmacro
}
%% with nolines, run lipics plain
\newboolean
{
socgnolines
}
\setboolean
{
socgnolines
}{
false
}
\DeclareOption
{
nolineno
}{
\setboolean
{
socgnolines
}{
true
}}
%% with noalgorithm2e, do not try to fix algorithm2e environments
\newboolean
{
socgnoalgorithm2e
}
\setboolean
{
socgnoalgorithm2e
}{
false
}
\DeclareOption
{
noalgorithm2e
}{
\setboolean
{
socgnoalgorithm2e
}{
true
}}
%% with noalgorithms, do not try to fix algorithms (algorithm/algorithmic) package
\newboolean
{
socgnoalgorithms
}
\setboolean
{
socgnoalgorithms
}{
false
}
\DeclareOption
{
noalgorithms
}{
\setboolean
{
socgnoalgorithms
}{
true
}}
%% with nosubfigcap, do not try to fix subcaptions
\newboolean
{
socgnosubfigcap
}
\setboolean
{
socgnosubfigcap
}{
false
}
\DeclareOption
{
nosubfigcap
}{
\setboolean
{
socgnosubfigcap
}{
true
}}
%% with notab, do not wrap tabular into edtable
\newboolean
{
socgnotab
}
\setboolean
{
socgnotab
}{
false
}
\DeclareOption
{
notab
}{
\setboolean
{
socgnotab
}{
true
}}
%% with notcolorbox, do not try to fix tcolorbox
\newboolean
{
socgnotcolorbox
}
\setboolean
{
socgnotcolorbox
}{
false
}
\DeclareOption
{
notcolorbox
}{
\setboolean
{
socgnotcolorbox
}{
true
}}
%% pass all the rest to LIPIcs
\DeclareOption*
{
\PassOptionsToClass
{
\CurrentOption
}{
lipics-v2021
}}
\ProcessOptions\relax
%% set all line numbering options for algorithm2e
\ifthenelse
{
\boolean
{
socgnolines
}}{
%
}{
%
\ifthenelse
{
\boolean
{
socgnoalgorithm2e
}}{
%
}{
%
\PassOptionsToPackage
{
linesnumbered,commentsnumbered,inoutnumbered,titlenumbered
}{
algorithm2e
}
}
%
%% set longtable -> edtable option to handle tabular
\ifthenelse
{
\boolean
{
socgnotab
}}{
%
}{
%
\PassOptionsToPackage
{
longtable
}{
lineno
}}
%
}
% !socgnolines
%% load LIPIcs class
\LoadClass
{
lipics-v2021
}
[2021/01/04]
%
\ifthenelse
{
\boolean
{
socgnolines
}}{
%
\newcounter
{
socglastlinecounter
}
%
\newcommand
{
\socgnl
}{}
%
\nolinenumbers
%
\endinput
}{}
%% hide LIPIcs DOI
\def\@
DOIPrefix
{}
%% \socgnl = number line: allows to manually add the current linenumber to a
%% single line if placed at the start of that line
\newsavebox
{
\socgnlbox
}
%
\newcommand
{
\socgnl
}{
%
\sbox
{
\socgnlbox
}{
\mbox
{
\linenumberfont\LineNumber\hskip\linenumbersep
}}
%
\hspace*
{
-
\wd\socgnlbox
}
\usebox
{
\socgnlbox
}
\stepcounter
{
linenumber
}
%
}
%% used in captions
\newcommand
{
\socglipicsyellowdot
}{
%
\kern
0.05em
{
\color
[rgb]
{
0.99,0.78,0.07
}
\rule
{
0.73em
}{
0.73em
}}
\hspace*
{
0.67em
}}
%% add line numbers to all captions
\DeclareCaptionTextFormat
{
socgnumberitall
}{
\internallinenumbers
#1
}
\captionsetup
{
textformat=socgnumberitall
}
%
%% handle subcaptions (this is a hack, really)
\ifthenelse
{
\boolean
{
socgnosubfigcap
}}{
}{
%
\socgtypeout
{
fix subcaptions
}
\RequirePackage
{
zref-savepos
}
\newcounter
{
socgstartofnewfloat
}
\setcounter
{
socgstartofnewfloat
}{
0
}
\newcounter
{
socglinenumbertmp
}
\newcounter
{
socglinenumbermax
}
\newcounter
{
socgsubfigcount
}
\setcounter
{
socgsubfigcount
}{
0
}
\newcounter
{
socgsubfiglastpos
}
\setcounter
{
socgsubfiglastpos
}{
0
}
\let\socgsubcaption\subcaption
%
\def\subcaption
#1
{
%
\stepcounter
{
socgsubfigcount
}
%
\zsavepos
{
\arabic
{
socgsubfigcount
}}
%
\ifthenelse
{
\value
{
socgstartofnewfloat
}
=1
\and\value
{
socgsubfiglastpos
}
>
\zposx
{
\arabic
{
socgsubfigcount
}}}{
%
\socgtypeout
{
add newline in Fig.
\thefigure
:
\thesubfigure
}
%
\setcounter
{
socgstartofnewfloat
}{
0
}
%
}{
%
}
%
\setcounter
{
socgsubfiglastpos
}{
\zposx
{
\arabic
{
socgsubfigcount
}}}
%
\ifthenelse
{
\value
{
socgstartofnewfloat
}
=0
}{
%
\setcounter
{
socgstartofnewfloat
}{
1
}
%
\setcounter
{
socglinenumbermax
}{
0
}
%
\setcounter
{
socglinenumbertmp
}{
\value
{
linenumber
}}
%
}{
%
\setcounter
{
linenumber
}{
\value
{
socglinenumbertmp
}}
}
%
\socgsubcaption
{
\internallinenumbers
#1
}
%
\ifthenelse
{
\value
{
linenumber
}
>
\value
{
socglinenumbermax
}}{
%
\setcounter
{
socglinenumbermax
}{
\value
{
linenumber
}}}
%
{
%
}
%
\setcounter
{
linenumber
}{
\value
{
socglinenumbermax
}}
%
}
\let\socgendfigure\endfigure
\def\endfigure
{
\setcounter
{
socgstartofnewfloat
}{
0
}
\socgendfigure
}
\let\socgendtable\endtable
\def\endtable
{
\setcounter
{
socgstartofnewfloat
}{
0
}
\socgendtable
}
\@
ifpackagelater
{
subcaption
}{
2019/08/28
}{
%
\socgtypeout
{
subcaption is from 2019+
}
\let\socgsubcaptionminipage\subcaption
@iiminipage
\renewcommand*\subcaption
@iiminipage[3]
{
%
\let\socgrealsubcaption\subcaption
%
\socgsubcaptionminipage
{
#1
}{
#2
}{
#3
}
%
\renewcommand
{
\caption
}
[1]
{
\socgrealsubcaption
{
##1
}}
\relax
}
%
}{
%
\socgtypeout
{
subcaption is from before 2019
}
%% replace subfigure/caption by subcaption
\renewcommand*\subcaption
@minipage[2]
{
%
\minipage
#1
{
#2
}
%
\renewcommand
{
\caption
}
[1]
{
\subcaption
{
##1
}}
\relax
}
%
}
%
}
%% number footnotes by wrapping them into a minipage
\let\socgfootnote
=
\footnote
\newcommand
{
\socgnumberfootnotes
}{
%
\gdef\footnote
##1
{
%
\socgfootnote
{
%
\begin{minipage}
[t]
{
.978
\linewidth
}
\internallinenumbers\setlength\linenumbersep
{
2em
}
##1
\end{minipage}
\vspace
{
1pt plus .5pt minus .5pt
}
%
}
%
}
%
}
%% don't number frontmatter
\let\socgrealmaketitle
=
\maketitle
\renewcommand
{
\maketitle
}{
\nolinenumbers\socgrealmaketitle\linenumbers
}
%% ... not even subject classification, doi, etc.
\let\socgabstract
=
\abstract
\let\socgendabstract
=
\endabstract
\newcounter
{
socglastlinecounter
}
\renewenvironment
{
abstract
}{
%
\socgabstract
%
}{
%
\par
\begin{nolinenumbers}
\socgendabstract
\end{nolinenumbers}
%
\socgnumberfootnotes
%
}
%% to list the lines, look where the references start
\RequirePackage
[absolute]
{
textpos
}
\AtBeginDocument
{
%
\let\socgthebibliography
=
\thebibliography
\renewcommand
{
\thebibliography
}{
%
\setcounter
{
socglastlinecounter
}{
\value
{
linenumber
}}
%
\addtocounter
{
socglastlinecounter
}{
-1
}
%
\makeatletter\write\@
auxout
{
\noexpand\setcounter
{
socglastlinecounter
}{
\thesocglastlinecounter
}}
\makeatother
%
\socgthebibliography
}
%
\begin{textblock*}
{
.75
\textwidth
}
(
\oddsidemargin
,28mm)
{
\ifnum\value
{
socglastlinecounter
}
>500
\color
{
red
}
\fi
{
\bfseries
Lines:
\enskip
}
\arabic
{
socglastlinecounter
}
\hfill
}
\end{textblock*}
}
%% wrap tabular into edtable
\ifthenelse
{
\boolean
{
socgnotab
}}{
%
}{
%
\socgtypeout
{
fix tabular
}
\let\socgtabular\tabular
%
\let\endsocgtabular\endtabular
%
\renewenvironment
{
tabular
}{
\begin{edtable}
{
socgtabular
}}{
\end{edtable}
}
%
}
%% fix align etc. "double line number issue"
%% see https://tex.stackexchange.com/questions/436011/linenomath-printing-extra-numbers-on-last-line-of-multline-align-flalign-envir
\newcommand*
{
\socgPatchAmsMathEnvironmentForLineno
}
[1]
{
%
\renewenvironment
{
#1
}
%
{
\linenomath\postdisplaypenalty
=0
\csname
old#1
\endcsname
}
%
{
\csname
oldend#1
\endcsname\endlinenomath
}}
%
\newcommand*\socgpatchBothAmsMathEnvironmentsForLineno
[1]
{
%
\socgPatchAmsMathEnvironmentForLineno
{
#1
}
%
\socgPatchAmsMathEnvironmentForLineno
{
#1*
}}
%
\AtBeginDocument
{
%
\socgpatchBothAmsMathEnvironmentsForLineno
{
align
}
%
\socgpatchBothAmsMathEnvironmentsForLineno
{
flalign
}
%
\socgpatchBothAmsMathEnvironmentsForLineno
{
alignat
}
%
\socgpatchBothAmsMathEnvironmentsForLineno
{
gather
}
%
\socgpatchBothAmsMathEnvironmentsForLineno
{
multline
}}
%
%% number tcolorboxes (just the vanilla ones...)
\ifthenelse
{
\boolean
{
socgnotcolorbox
}}{
%
}{
%
\socgtypeout
{
fix tcolorbox
}
\AtBeginDocument
{
%
\@
ifpackageloaded
{
tcolorbox
}{
%
\LetLtxMacro\socgtcolorbox\tcolorbox
%
\LetLtxMacro\endsocgtcolorbox\endtcolorbox
%
\renewenvironment
{
tcolorbox
}
[1][]
{
%
\nolinenumbers
%
\socgtcolorbox
[#1]
\internallinenumbers
%
\addtolength
{
\linenumbersep
}{
\kvtcb
@leftupper
}
%
\addtolength
{
\linenumbersep
}{
\kvtcb
@boxsep
}}{
%
\endsocgtcolorbox
%
\endnolinenumbers
}
%
}{
%
}
% package tcolorbox loaded
}
% AtBeginDocument
}
% if socgtcolorbox
%% fix algorithms
\ifthenelse
{
\boolean
{
socgnoalgorithms
}}{
%
}{
%
\newboolean
{
socgalgorithmicorx
}
\setboolean
{
socgalgorithmicorx
}{
false
}
\AtBeginDocument
{
%
\@
ifpackageloaded
{
algorithmic
}{
\setboolean
{
socgalgorithmicorx
}{
true
}}{}
\@
ifpackageloaded
{
algorithmicx
}{
\setboolean
{
socgalgorithmicorx
}{
true
}}{}
\ifthenelse
{
\boolean
{
socgalgorithmicorx
}}{
%
\socgtypeout
{
fix algorithmic(x)
}
%
\LetLtxMacro\socgalgorithmic\algorithmic
%
\LetLtxMacro\endsocgalgorithmic\endalgorithmic
%
\renewenvironment
{
algorithmic
}
[1][]
{
%
\socgalgorithmic
[#1]
\internallinenumbers
}{
%
\endsocgalgorithmic
}
% end of environment algorithmic
}{
%
}
% package algorithmic or algorithmicx loaded
\@
ifpackageloaded
{
algorithm
}{
%
\socgtypeout
{
fix algorithm
}
\LetLtxMacro\socgalgorithms\algorithm
%
\LetLtxMacro\endsocgalgorithms\endalgorithm
%
\renewenvironment
{
algorithm
}
[1][]
{
%
\socgalgorithms
[#1]
%
\LetLtxMacro\socgcaption\caption
%
\renewcommand
{
\caption
}
[2][]
{
%
\socgcaption
[##1]
{
\internallinenumbers
##2
}}
%
}{
\endsocgalgorithms
}
% end of environment algorithm
}{
%
}
% package algorithm loaded
}
% AtBeginDocument
}
% if socgalgo
%% fix algorithm2e
\ifthenelse
{
\boolean
{
socgnoalgorithm2e
}}{
%
}{
%
\AtBeginDocument
{
%
\@
ifpackageloaded
{
algorithm2e
}{
%
\socgtypeout
{
fix algorithm2e
}
%
\expandafter\LetLtxMacro\expandafter\socgalgorithmte\csname\algocf
@envname
\endcsname
%
\expandafter\LetLtxMacro\expandafter\endsocgalgorithmte\csname
end
\algocf
@envname
\endcsname
%
\renewenvironment
{
\algocf
@envname
}
[1][]
{
%
\begin{nolinenumbers}
%
\socgalgorithmte
[#1]
%
\SetAlCapFnt
{
\small\sffamily
}
%
\SetAlCapNameFnt
{
\small\upshape
}
%
\setcounter
{
AlgoLine
}{
\value
{
linenumber
}}
\addtocounter
{
AlgoLine
}{
-1
}
%
}{
%
\ifthenelse
{
\value
{
linenumber
}
<
\value
{
AlgoLine
}}{
%
\setcounter
{
linenumber
}{
\value
{
AlgoLine
}}
\stepcounter
{
linenumber
}
%
}{
%
}
%
\endsocgalgorithmte
%
\end{nolinenumbers}
%
}
% end of environment algorithm2e
%% font for line numbers
\renewcommand
{
\relsize
}
[1]
{
\normalfont\tiny\sffamily
}
%
\newcommand
{
\socgalgocaption
}
[2]
{
%
\begin{minipage}
[t]
{
\hsize
}
\internallinenumbers
%
\socglipicsyellowdot
{
#1
}{
~
}
\AlCapNameSty
{
\AlCapNameFnt
{}
#2
}
%
\end{minipage}
%
}
%
%% there are two caption types: (1) above the code
\renewcommand
{
\algocf
@makecaption@ruled
}
[2]
{
%
\global\sbox\algocf
@capbox
{
\socgalgocaption
{
#1
}{
#2
}}
%
\setcounter
{
AlgoLine
}{
\value
{
linenumber
}}
\addtocounter
{
AlgoLine
}{
-1
}
%
}
% end of algocf@makecaption@ruled
%% ... and (2) below, which we dress more like the LIPIcs style
\renewcommand
{
\algocf
@makecaption
}
[2]
{
%
\setcounter
{
linenumber
}{
\value
{
AlgoLine
}}
\stepcounter
{
linenumber
}
%
\socgalgocaption
{
#1
}{
#2
}
%
}
% end of algocf@makecaption
}{}
% package algorithm2e loaded
}
% AtBeginDocument
}
% if socgalgo2e
\endinput
% Local Variables:
% mode: latex
% End:
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment