% --------------------------------------------------------------------------
% the EXSHEETS package
% 
%   Yet another package for the creation of exercise sheets
% 
% --------------------------------------------------------------------------
% Clemens Niederberger
% Web:    https://bitbucket.org/cgnieder/exsheets/
% E-Mail: contact@mychemistry.eu
% --------------------------------------------------------------------------
% Copyright 2011-2019 Clemens Niederberger
% 
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
% 
% This work has the LPPL maintenance status `maintained'.
% 
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
% If you have any ideas, questions, suggestions or bugs to report, please
% feel free to contact me.
% --------------------------------------------------------------------------
% HEADINGS FOR QUESTIONS AND SOLUTIONS
\ProvidesFile{exsheets_headings.cfg}
  [
    \c_exsheets_date_tl \c_space_tl
    v\c_exsheets_version_tl \c_space_tl
    ExSheets~ headings~ instances
  ]

\cs_new:Npn \exsheets_headings_files_loaded: {}

% EMPTY:
\DeclareInstance { exsheets-heading } { empty } { default }
  {
    runin = true ,
    above = \parskip ,
    below = \parskip ,
    attach           =
      { main[l,vc] points[l,vc] (\linewidth + \marginparsep,0pt) } 
  }

% SIMPLE:
\DeclareInstance { exsheets-heading } { simple } { default }
  {
    title-format     = \normalsize ,
    points-pre-code  = ( ,
    points-post-code = ) ,
    attach           = { main[l,t] number[l,t] (0pt,0pt) } ,
    join             =
      {
        number[r,b] title[l,b] (.333em,0pt) ;
        main[l,b] points[l,t] (1em,0pt)
      }
  }

% BLOCK, REVERSED:
\DeclareInstance { exsheets-heading } { block-rev } { default }
  {
    toc-reversed     = true ,
    join             = { number[r,B] title[l,B] (.333em,0pt) } ,
    attach           =
      {
        main[l,vc] number[l,vc] (0pt,0pt) ;
        main[r,vc] points[l,vc] (\marginparsep,0pt)
      }
  }

% BLOCK, SUBTITLE:
\DeclareInstance{exsheets-heading}{block-subtitle}{default}{
  join = {
    title[r,B]number[l,B](.333em,0pt) ;
    title[r,B]subtitle[l,B](1em,0pt)
  } ,
  attach = {
    main[l,vc]title[l,vc](0pt,0pt) ;
    main[r,vc]points[l,vc](\marginparsep,0pt)
  }
}

% BLOCK, POINTS WITH THE TITLE:
\DeclareInstance { exsheets-heading } { block-wp } { default }
  {
    points-pre-code  = ( ,
    points-post-code = ) ,
    join             =
      {
        title[r,B] number[l,B] (.333em,0pt) ;
        title[r,B] points[l,B] (.333em,0pt)
      } ,
    attach           = { main[l,vc] title[l,vc] (0pt,0pt) }
  }

% BLOCK, POINTS WITH THE TITLE, REVERSED:
\DeclareInstance { exsheets-heading } { block-wp-rev } { default }
  {
    toc-reversed     = true ,
    points-pre-code  = ( ,
    points-post-code = ) ,
    join             =
      {
        number[r,B] title[l,B] (.333em,0pt) ;
        number[r,B] points[l,B] (.333em,0pt)
      } ,
    attach           = { main[l,vc] number[l,vc] (0pt,0pt) }
  }

% BLOCK WITH NO TITLE:
\DeclareInstance { exsheets-heading } { block-nr } { default }
  {
    attach           =
      {
        main[l,vc] number[l,vc] (0pt,0pt) ;
        main[r,vc] points[l,vc] (\marginparsep,0pt)
      }
  }

% BLOCK WITH NO TITLE, NUMBER WITH THE TITLE:
\DeclareInstance { exsheets-heading } { block-nr-wp } { default }
  {
    points-pre-code  = ( ,
    points-post-code = ) ,
    join             = { number[r,vc] points[l,vc] (.333em,0pt) } ,
    attach           = { main[l,vc] number[l,vc] (0pt,0pt) }
  }

% RUNIN, REVERSED:
\DeclareInstance { exsheets-heading } { runin-rev } { default }
  {
    toc-reversed     = true ,
    runin            = true ,
    title-post-code  = \c_space_tl ,
    attach           =
      { main[l,vc] points[l,vc] (\linewidth + \marginparsep,0pt) } ,
    join             =
      {
        main[r,vc] number[r,vc] (0pt,0pt) ;
        main[r,vc] title[l,vc] (.333em,0pt)
      }
  }

% RUNIN, POINTS WITH THE TITLE:
\DeclareInstance { exsheets-heading } { runin-wp } { default }
  {
    runin            = true ,
    points-pre-code  = ( ,
    points-post-code = ) \c_space_tl ,
    join             =
      {
        main[r,vc] title[r,vc] (0pt,0pt) ;
        main[r,vc] number[l,vc] (.333em,0pt) ;
        main[r,vc] points[l,vc] (.333em,0pt)
      }
  }

% RUNIN, POINTS WITH THE TITLE, REVERSED:
\DeclareInstance { exsheets-heading } { runin-wp-rev } { default }
  {
    toc-reversed     = true ,
    runin            = true ,
    points-pre-code  = ( ,
    points-post-code = ) \c_space_tl ,
    join             =
      {
        main[r,vc] number[r,vc] (0pt,0pt) ;
        main[r,vc] title[l,vc] (.333em,0pt) ;
        main[r,vc] points[l,vc] (.333em,0pt)
      }
  }

% RUNIN WITH NO TITLE:
\DeclareInstance { exsheets-heading } { runin-nr } { default }
  {
    runin            = true ,
    number-post-code = \c_space_tl ,
    attach           =
      { main[l,vc] points[l,vc] (\linewidth + \marginparsep,0pt) } ,
    join             = { main[r,vc] number[l,vc] (0pt,0pt) }
  }

% RUNIN WITH NO TITLE, POINTS WITH THE TITLE:
\DeclareInstance { exsheets-heading } { runin-nr-wp } { default }
  {
    runin            = true ,
    points-pre-code  = ( ,
    points-post-code = ) \c_space_tl ,
    join             =
      {
        main[r,vc] number[l,vc] (0pt,0pt) ;
        main[r,vc] points[l,vc] (.333em,0pt)
      }
  }

% RUNIN WITH NO TITLE, FIXED WIDTH OF NUMBER
\DeclareInstance { exsheets-heading } { runin-fixed-nr } { default }
  {
    runin            = true ,
    number-pre-code  = \hbox to 2em \bgroup ,
    number-post-code = \hfil\egroup ,
    attach           =
      { main[l,vc]points[l,vc](\linewidth+\marginparsep,0pt) } ,
    join             = { main[r,vc]number[l,vc](0pt,0pt) }
  }

% INLINE
\DeclareInstance { exsheets-heading } { inline } { default }
  {
    inline           = true ,
    number-pre-code  = \c_space_tl ,
    number-post-code = \c_space_tl ,
    join             =
      {
        main[r,vc] title[r,vc] (0pt,0pt) ;
        main[r,vc] number[l,vc] (0pt,0pt)
      }
  }

% INLINE, POINTS WITH THE TITLE
\DeclareInstance { exsheets-heading } { inline-wp } { default }
  {
    inline           = true ,
    number-pre-code  = \c_space_tl ,
    number-post-code = \c_space_tl ,
    points-pre-code  = ( ,
    points-post-code = ) \c_space_tl ,
    join             =
      {
        main[r,vc] title[r,vc] (0pt,0pt) ;
        main[r,vc] number[l,vc] (0pt,0pt) ;
        main[r,vc] points[l,vc] (0pt,0pt)
      }
  }

% INLINE WITH NO TITLE:
\DeclareInstance { exsheets-heading } { inline-nr } { default }
  {
    inline           = true ,
    number-post-code = \c_space_tl ,
    join             = { main[r,vc] number[l,vc] (0pt,0pt) }
  }

% CENTERED:
\DeclareInstance { exsheets-heading } { centered } { default }
  {
    join             = { title[r,B] number[l,B] (.333em,0pt) } ,
    attach           =
      {
        main[hc,vc] title[hc,vc] (0pt,0pt) ;
        main[r,vc] points[l,vc] (\marginparsep,0pt)
      }
  }

% CENTERED, POINTS WITH THE TITLE:
\DeclareInstance { exsheets-heading } { centered-wp } { default }
  {
    points-pre-code  = ( ,
    points-post-code = ) ,
    join             =
      {
        title[r,B] number[l,B] (.333em,0pt) ;
        title[r,B] points[l,B] (.333em,0pt)
      } ,
    attach           = { main[hc,vc] title[hc,vc] (0pt,0pt) }
  }

% MARGIN:
\DeclareInstance { exsheets-heading } { margin } { default }
  {
    runin            = true ,
    number-post-code = \c_space_tl ,
    points-pre-code  = ( ,
    points-post-code = ) \c_space_tl ,
    join             = { title[r,b] number[l,b] (.333em,0pt) } ,
    attach           =
      {
        main[l,vc] title[r,vc] (0pt,0pt) ;
        main[l,b] points[r,t] (0pt,0pt)
      }
  }

% MARGIN WITH NO TITLE
\DeclareInstance { exsheets-heading } { margin-nr } { default }
  {
    runin  = true ,
    attach =
      {
        main[l,vc]number[r,vc](-.333em,0pt) ;
        main[r,vc]points[l,vc](\linewidth+\marginparsep,0pt)
      }
  }

% RIGHT-ALIGNED:
\DeclareInstance { exsheets-heading } { raggedleft } { default }
  {
    join             = { title[r,B] number[l,B] (.333em,0pt) } ,
    attach           =
      {
        main[r,vc] title[r,vc] (0pt,0pt) ;
        main[r,vc] points[l,vc] (\marginparsep,0pt)
      }
  }

% MIMICKING KOMA-SECTION:
\DeclareInstance { exsheets-heading } { koma-section } { default }
  {
    vscale           = 2 ,
    title-format     = \Large\bfseries\sffamily ,
    join             = { title[r,B] number[l,B] (.333em,0pt) } ,
    attach           =
      {
        main[l,vc] title[l,vc] (0pt,0pt) ;
        main[r,vc] points[l,vc] (\marginparsep,0pt)
      }
  }

% FANCY:
\DeclareInstance { exsheets-heading } { fancy } { default }
  {
    toc-reversed     = true ,
    indent-first     = true ,
    vscale           = 2 ,
    pre-code         = \rule{\linewidth}{1pt} ,
    post-code        = \rule{\linewidth}{1pt} ,
    title-format     = \large\scshape\color{rgb:red,0.65;green,0.04;blue,0.07} ,
    number-format    = \large\bfseries\color{rgb:red,0.02;green,0.04;blue,0.48} ,
    points-format    = \itshape ,
    join             = { number[r,B] title[l,B] (.333em,0pt) } ,
    attach           =
      {
        main[hc,vc] number[hc,vc] (0pt,0pt) ;
        main[l,vc] points[r,vc] (-\marginparsep,0pt)
      }
  }

% FANCY, POINTS WITH THE TITLE:
\DeclareInstance { exsheets-heading } { fancy-wp } { default }
  {
    toc-reversed     = true ,
    indent-first     = true ,
    vscale           = 2 ,
    pre-code         = \rule{\linewidth}{1pt} ,
    post-code        = \rule{\linewidth}{1pt} ,
    title-format     = \large\scshape\color{rgb:red,0.65;green,0.04;blue,0.07} ,
    number-format    = \large\bfseries\color{rgb:red,0.02;green,0.04;blue,0.48} ,
    points-format    = \itshape ,
    points-pre-code  = ( ,
    points-post-code = ) ,
    join             =
      {
        number[r,B] title[l,B] (.333em,0pt) ;
        number[r,B] points[l,B] (.333em,0pt)
      } ,
    attach           = { main[hc,vc] number[hc,vc] (0pt,0pt) }
  }

\file_input_stop: