% This is file sectionbreak.sty
%% (c) 2017--2018 Michal Hoftich
\ProvidesPackage{sectionbreak}[2018-01-03 v0.1c (Michal Hoftich)]
\usepackage{kvoptions}
\DeclareStringOption[2em]{preskip}
\DeclareStringOption[2em]{postskip}
\DeclareStringOption[\relax]{style}
\DeclareStringOption[~]{mark}
\DeclareBoolOption{asterism}

\ProcessKeyvalOptions*

\newdimen\asterism@width
% asterism is character which consists of three asterisks layed out as a triangel
\newcommand\asterism{%
  \settowidth{\asterism@width}{*}%
  % these values were found by trial and error
  \raise-0.6\asterism@width\hbox{*\kern-.6\asterism@width\raise.7\asterism@width\hbox{*}\kern-.6\asterism@width*}%
}

\newcommand\pre@sectionbreak{\par\vskip\sectionbreak@preskip\relax}
\newcommand\post@sectionbreak{\par\vskip\sectionbreak@postskip\relax}
% print centered section break mark
\newcommand\print@sectionbreak[1]{%
  \bgroup%
  \noindent\null\hfill\sectionbreak@style\hbox{#1}\hfill\null\par%
  \egroup%
}
% default section break mark is an unbreakable space

\newcommand\sectionbreak[1][\sectionbreak@mark]{%
  \pre@sectionbreak%
  \print@sectionbreak{#1}%
  \post@sectionbreak%
}

\newcommand\sectionbreakmark[1]{%
  \gdef\sectionbreak@mark{#1}%
}

% test the asterism option and set the section mark accordingly
\ifsectionbreak@asterism
  \sectionbreakmark{\asterism}
\fi

\endinput
