You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1430 lines
50 KiB
1430 lines
50 KiB
%%
|
|
%% This is file `scrlayer-notecolumn.sty',
|
|
%% generated with the docstrip utility, extended by scrdocstrip.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% scrlayer-notecolumn.dtx (with options: `interface,trace,notecolumn,identify')
|
|
%% scrlayer.dtx (with options: `interface,trace,notecolumn,init')
|
|
%% scrlayer-notecolumn.dtx (with options: `interface,trace,notecolumn,init')
|
|
%% scrlayer.dtx (with options: `interface,trace,notecolumn,options')
|
|
%% scrlayer-notecolumn.dtx (with options: `interface,trace,notecolumn,options')
|
|
%% scrlayer.dtx (with options: `interface,trace,notecolumn,body')
|
|
%% scrlayer-notecolumn.dtx (with options: `interface,trace,notecolumn,body')
|
|
%% scrlayer-notecolumn.dtx (with options: `interface,trace,notecolumn,final')
|
|
%% scrlogo.dtx (with options: `logo')
|
|
%%
|
|
%% Copyright (c) 2013-2019 Markus Kohm [komascript at gmx info]
|
|
%%
|
|
%% This file was generated from file(s) of the KOMA-Script bundle.
|
|
%% ---------------------------------------------------------------
|
|
%%
|
|
%% It may be distributed under the conditions of the
|
|
%% LaTeX Project Public License in the version distributed together
|
|
%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
|
|
%%
|
|
%% This file may only be distributed together with a copy of the
|
|
%% KOMA-Script bundle. You may however distribute the
|
|
%% KOMA-Script bundle without all such generated files. See also
|
|
%% `lppl.txt' or `lppl-de.txt' for additional information.
|
|
%%
|
|
%% The list of files belonging to KOMA-Script distribution is given in
|
|
%% the file `manifest.txt'. See also `lppl.txt' or `lppl-de.txt' for
|
|
%% additional information.
|
|
%%
|
|
%% If this file is a beta version, you may not be allowed to distribute
|
|
%% it. Look at the comments below to see if this is the case.
|
|
%%
|
|
%% English and German manuals are part of KOMA-Script bundle.
|
|
%% ----------------------------------------------------------
|
|
%%
|
|
%% See `README'.
|
|
%%
|
|
%% The KOMA-Script bundle (but maybe not this file) was based upon the
|
|
%% LaTeX 2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
|
|
%% standard classes created by The LaTeX3 Project 1994-1996. You can
|
|
%% find a complete unmodified copy of LaTeX2e at
|
|
%% <http://mirror.ctan.org/tex-archive/macros/latex/base/>.
|
|
%%
|
|
%%% From File: $Id: scrlayer-notecolumn.dtx 3426 2019-12-02 09:15:20Z kohm $
|
|
%%% (run: identify)
|
|
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
|
\ProvidesPackage{scrlayer-notecolumn}[%
|
|
2019/12/02 v0.3.3426 KOMA-Script
|
|
package
|
|
(end user interface for scrlayer)]
|
|
%%% From File: $Id: scrlayer.dtx 3411 2019-11-28 09:11:27Z kohm $
|
|
%%% (run: init)
|
|
\RequirePackage{scrlayer}
|
|
\scr@ifundefinedorrelax{scrlayer@AtEndOfPackage}{%
|
|
\AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}%
|
|
}{%
|
|
\ifx\scrlayer@AtEndOfPackage\@firstofone
|
|
\AtEndOfPackage{\let\scrlayer@AtEndOfPackage\@firstofone}%
|
|
\fi
|
|
}
|
|
\let\scrlayer@AtEndOfPackage\AtEndOfPackage
|
|
\scrlayerInitInterface
|
|
%%% From File: $Id: scrlayer-notecolumn.dtx 3426 2019-12-02 09:15:20Z kohm $
|
|
%%% (run: init)
|
|
\@tempswatrue
|
|
\scr@ifundefinedorrelax{pdfsavepos}{%
|
|
\scr@ifundefinedorrelax{savepos}{%
|
|
\expandafter\@tempswafalse
|
|
}{%
|
|
\let\scr@savepos\savepos
|
|
}%
|
|
}{%
|
|
\let\scr@savepos\pdfsavepos
|
|
}
|
|
\scr@ifundefinedorrelax{pdflastypos}{%
|
|
\scr@ifundefinedorrelax{lastypos}{%
|
|
\expandafter\@tempswafalse
|
|
}{%
|
|
\let\scr@lastypos\lastypos
|
|
}%
|
|
}{%
|
|
\let\scr@lastypos\pdflastypos
|
|
}%
|
|
\if@tempswa\else
|
|
\PackageError{scrlayer-notecolumn}{missing pdfTeX/luaTeX features}{%
|
|
This package needs \string\pdfsavepos\space or \string\savepos\space
|
|
and\MessageBreak
|
|
\string\pdflastypos\space or \string\lastypos.\MessageBreak
|
|
This error is fatal, because usage of the package without these
|
|
features\MessageBreak
|
|
cannot work!\MessageBreak
|
|
You shouldn't continue, but if you'd try, I'll try to abort the LaTeX run
|
|
}%
|
|
\batchmode\csname @@end\endcsname\end
|
|
\fi
|
|
%%% From File: $Id: scrlayer.dtx 3411 2019-11-28 09:11:27Z kohm $
|
|
%%% (run: options)
|
|
\KOMA@key{markcase}{%
|
|
\begingroup
|
|
\KOMA@set@ncmdkey{markcase}{reserved@a}{%
|
|
{upper}{0},{lower}{1},{used}{2},%
|
|
{ignoreuppercase}{3},{nouppercase}{3},%
|
|
{ignoreupper}{3},{noupper}{3}%
|
|
}{#1}%
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\aftergroup\FamilyKeyStateProcessed
|
|
\ifnum \reserved@a>\m@ne
|
|
\aftergroup\let\aftergroup\MakeMarkcase
|
|
\ifcase \reserved@a
|
|
\aftergroup\MakeUppercase
|
|
\aftergroup\scrlayer@forceignoreuppercasefalse
|
|
\or
|
|
\aftergroup\MakeLowercase
|
|
\aftergroup\scrlayer@forceignoreuppercasefalse
|
|
\or
|
|
\aftergroup\@firstofone
|
|
\aftergroup\scrlayer@forceignoreuppercasefalse
|
|
\else
|
|
\aftergroup\scrlayer@ignoreuppercase
|
|
\aftergroup\scrlayer@forceignoreuppercasetrue
|
|
\fi
|
|
\fi
|
|
\else
|
|
\aftergroup\FamilyKeyStateUnknownValue
|
|
\fi
|
|
\endgroup
|
|
\ifx\FamilyKeyState\FamilyKeyStateProcessed
|
|
\KOMA@kav@removekey{.scrlayer.sty}{markcase}%
|
|
\KOMA@kav@xadd{.scrlayer.sty}{markcase}{#1}%
|
|
\fi
|
|
}
|
|
\KOMA@key{autooneside}[true]{%
|
|
\KOMA@set@ifkey{autooneside}{scrlayer@autooneside}{#1}%
|
|
\KOMA@kav@replacebool{.scrlayer.sty}{autooneside}{scrlayer@autooneside}%
|
|
}
|
|
\KOMA@key{automark}[]{%
|
|
\scrlayer@testunexpectedarg{automark}{#1}%
|
|
\scrlayer@AtEndOfPackage{%
|
|
\if@chapter
|
|
\scr@ifundefinedorrelax{section}{%
|
|
\automark{chapter}%
|
|
}{%
|
|
\automark[section]{chapter}%
|
|
}%
|
|
\else
|
|
\scr@ifundefinedorrelax{section}{%
|
|
\automark{}%
|
|
}{%
|
|
\scr@ifundefinedorrelax{subsection}{%
|
|
\automark{section}%
|
|
}{%
|
|
\automark[subsection]{section}%
|
|
}
|
|
}%
|
|
\fi
|
|
}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@removekey{.scrlayer.sty}{automark}%
|
|
\KOMA@kav@removekey{.scrlayer.sty}{manualmark}%
|
|
\KOMA@kav@add{.scrlayer.sty}{automark}{}%
|
|
}
|
|
\KOMA@key{manualmark}[]{%
|
|
\scrlayer@testunexpectedarg{manualmark}{#1}%
|
|
\scrlayer@AtEndOfPackage{\manualmark}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@removekey{.scrlayer.sty}{automark}%
|
|
\KOMA@kav@removekey{.scrlayer.sty}{manualmark}%
|
|
\KOMA@kav@add{.scrlayer.sty}{manualmark}{}%
|
|
}
|
|
\KOMA@key{onpsselect}{%
|
|
\l@addto@macro{\@ps@initialhook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsselect}{#1}%
|
|
}
|
|
\KOMA@key{onpsinit}{%
|
|
\l@addto@macro{\@ps@hook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsinit}{#1}%
|
|
}
|
|
\KOMA@key{onpsoneside}{%
|
|
\l@addto@macro{\@ps@onesidehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsoneside}{#1}%
|
|
}
|
|
\KOMA@key{onpstwoside}{%
|
|
\l@addto@macro{\@ps@twosidehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpstwoside}{#1}%
|
|
}
|
|
\KOMA@key{onpsoddpage}{%
|
|
\l@addto@macro{\@ps@oddpagehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsoddpage}{#1}%
|
|
}
|
|
\KOMA@key{onpsevenpage}{%
|
|
\l@addto@macro{\@ps@evenpagehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsevenpage}{#1}%
|
|
}
|
|
\KOMA@key{onpsfloatpage}{%
|
|
\l@addto@macro{\@ps@floatpagehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsfloatpage}{#1}%
|
|
}
|
|
\KOMA@key{onpsnonfloatpage}{%
|
|
\l@addto@macro{\@ps@nonfloatpagehook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsnonfloatpage}{#1}%
|
|
}
|
|
\KOMA@key{onpsbackground}{%
|
|
\l@addto@macro{\@ps@backgroundhook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsbackground}{#1}%
|
|
}
|
|
\KOMA@key{onpsforeground}{%
|
|
\l@addto@macro{\@ps@foregroundhook}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
\KOMA@kav@add{.scrlayer.sty}{onpsforeground}{#1}%
|
|
}
|
|
\KOMA@ifkey{singlespacing}{@ps@singlespacing}
|
|
\KOMA@key{deactivatepagestylelayers}[true]{%
|
|
\KOMA@set@ifkey{deactivatepagestylelayers}{scrlayer@deactivate@layers}{#1}%
|
|
\KOMA@kav@replacebool{.scrlayer.sty}{deactivatepagestylelayers}
|
|
{scrlayer@deactivate@layers}%
|
|
}
|
|
\KOMA@key{draft}[true]{%
|
|
\KOMA@set@ifkey{draft}{scrlayer@draft}{#1}%
|
|
\KOMA@kav@replacebool{.scrlayer.sty}{draft}{scrlayer@draft}%
|
|
}
|
|
\KOMA@key{forceoverwrite}[true]{%
|
|
\KOMA@set@ifkey{forceoverwrite}{scrlayer@forceoverwrite}{#1}%
|
|
\KOMA@kav@replacebool{.scrlayer.sty}{forceoverwrite}{scrlayer@forceoverwrite}%
|
|
}
|
|
\KOMA@key{autoremoveinterfaces}[true]{%
|
|
\KOMA@set@ifkey{autoremoveinterfaces}{scrlayer@autoremoveinterfaces}{#1}%
|
|
\KOMA@kav@replacebool{.scrlayer.sty}{autoremoveinterfaces}
|
|
{scrlayer@autoremoveinterfaces}%
|
|
}
|
|
%%% From File: $Id: scrlayer-notecolumn.dtx 3426 2019-12-02 09:15:20Z kohm $
|
|
%%% (run: options)
|
|
\KOMA@ifkey{autoclearnotecolumns}{slnc@autoclearnotecolumns}\slnc@autoclearnotecolumnstrue
|
|
\scrlayer@AddCsToInterface{KV@KOMA.\@currname.\@currext @autoclearnotecolumns}
|
|
\scrlayer@AddCsToInterface{KV@KOMA.\@currname.\@currext @autoclearnotecolumns@default}
|
|
%%% From File: $Id: scrlayer.dtx 3411 2019-11-28 09:11:27Z kohm $
|
|
%%% (run: body)
|
|
\KOMAProcessOptions\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @markcase\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @autooneside\endcsname\relax
|
|
\expandafter\let\csname KV@KOMA.\@currname.\@currext @automark\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @automark@default\endcsname\relax
|
|
\expandafter\let\csname KV@KOMA.\@currname.\@currext @manualmark\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @manualmark@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsselect\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsselect@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsinit\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsinit@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsoneside\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsoneside@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpstwoside\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpstwoside@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsoddpage\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsoddpage@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsevenpage\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsevenpage@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsfloatpage\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsfloatpage@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsnonfloatpage\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsnonfloatpage@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsbackground\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsbackground@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsforeground\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @onpsforeground@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @deactivatepagestylelayers\endcsname
|
|
\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @deactivatepagestylelayers@default\endcsname
|
|
\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @draft\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @draft@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @forceoverwrite\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @forceoverwrite@default\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @autoremoveinterfaces\endcsname\relax
|
|
\expandafter\let
|
|
\csname KV@KOMA.\@currname.\@currext @autoremoveinterfaces@default\endcsname
|
|
\relax
|
|
%%% From File: $Id: scrlayer-notecolumn.dtx 3426 2019-12-02 09:15:20Z kohm $
|
|
%%% (run: body)
|
|
\scrlayerAddToInterface\DeclareNoteColumn{%
|
|
\newcommand*{\DeclareNoteColumn}[2][]{%
|
|
\@ifundefined{slnc@#2@box}{%
|
|
\expandafter\newsavebox\csname slnc@#2@box\endcsname
|
|
\scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
|
|
\expandafter\let\csname slnc@#2@box\endcsname\relax
|
|
}%
|
|
}{}%
|
|
\@ifundefined{slnc@#2@unprocessed}{%
|
|
\@namedef{slnc@#2@unprocessed}{}%
|
|
\scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
|
|
\expandafter\let\csname slnc@#2@unprocessed\endcsname\relax
|
|
}%
|
|
}{}%
|
|
\@ifundefined{slnc@#2@pos}{%
|
|
\scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
|
|
\expandafter\let\csname slnc@#2@pos\endcsname\relax
|
|
}%
|
|
}{}%
|
|
\@ifundefined{slnc@#2@width}{%
|
|
\scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
|
|
\expandafter\let\csname slnc@#2@width\endcsname\relax
|
|
}%
|
|
}{}%
|
|
\@ifundefined{slnc@#2@colorstack}{%
|
|
\scr@ifundefinedorrelax{pdfcolorstackinit}{%
|
|
\scr@ifundefinedorrelax{pdffeedback}{}{%
|
|
\expandafter\chardef\csname slnc@#2@colorstack\endcsname=
|
|
\pdffeedback colorstackinit direct {\slnc@initial@black}%
|
|
\scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
|
|
\expandafter\let\csname slnc@#2@colorstack\endcsname\relax
|
|
}%
|
|
}%
|
|
}{%
|
|
\expandafter\chardef\csname slnc@#2@colorstack\endcsname=
|
|
\pdfcolorstackinit direct {\slnc@initial@black}%
|
|
\scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
|
|
\expandafter\let\csname slnc@#2@colorstack\endcsname\relax
|
|
}%
|
|
}%
|
|
}{}%
|
|
\@ifundefined{scr@fnt@notecolumn.#2}{%
|
|
\@ifundefined{@notecolumn.#2font}{%
|
|
\scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
|
|
\expandafter\let\csname @notecolumn.#2font\endcsname\relax
|
|
}%
|
|
}{%
|
|
\PackageInfo{scrlayer-notecolumn}{using already defined
|
|
macro\MessageBreak
|
|
`\expandafter\string\csname @notecolumn.#2font\endcsname' for font
|
|
element\MessageBreak
|
|
`notecolumn.#2'%
|
|
}%
|
|
}%
|
|
\newkomafont{notecolumn.#2}{}%
|
|
\scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
|
|
\expandafter\let\csname scr@fnt@notecolumn.#2\endcsname\relax
|
|
}%
|
|
}{%
|
|
\PackageInfo{scrlayer-notecolumn}{using already defined font
|
|
element\MessageBreak
|
|
`notecolumn.#2'%
|
|
}%
|
|
}%
|
|
\newcommand*{\slnc@name}{}%
|
|
\edef\slnc@name{#2}%
|
|
\FamilyExecuteOptions[.definenotecolumn]{KOMAarg}{marginpar,#1}%
|
|
\let\slnc@name\relax
|
|
\DeclareLayer[%
|
|
foreground,%
|
|
align=tl,%
|
|
voffset=1in+\topmargin+\headheight+\headsep,%
|
|
height=\dimexpr\textheight+\topskip\relax,%
|
|
hoffset=\csname slnc@#2@pos\endcsname,%
|
|
width=\csname slnc@#2@width\endcsname,%
|
|
contents=\slnc@processnotes{#2}%
|
|
]{notecolumn.#2}
|
|
\IfLayerAtPageStyle{@everystyle@}{notecolumn.#2}{}{%
|
|
\AddLayersToPageStyle{@everystyle@}{notecolumn.#2}%
|
|
}%
|
|
\scrlayerOnAutoRemoveInterface[scrlayer-notecolumn.sty]{%
|
|
\RemoveLayersFromPageStyle{@everystyle@}{notecolumn.#2}%
|
|
\DestroyLayer{notecolumn.#2}%
|
|
}%
|
|
\@cons\slnc@processnotecolumns{{#2}}%
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@initial@black{%
|
|
\newcommand*{\slnc@initial@black}{0 g 0 G}%
|
|
\AfterPackage*{color}{%
|
|
\let\slnc@initial@black\current@color
|
|
\AtBeginDocument{\let\slnc@initial@black\default@color}%
|
|
}%
|
|
\AfterPackage*{xcolor}{%
|
|
\let\slnc@initial@black\current@color
|
|
\AtBeginDocument{\let\slnc@initial@black\default@color}%
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@processnotecolumns{%
|
|
\newcommand*{\slnc@processnotecolumns}{}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@testforpagestylewarning{%
|
|
\newcommand*{\slnc@testforpagestylewarning}{%
|
|
\IfLayerPageStyleExists{\currentpagestyle}{}{%
|
|
\PackageWarning{scrlayer-notecolumn}{%
|
|
output of note columns delayed,\MessageBreak
|
|
because with `\currentpagestyle'\MessageBreak
|
|
a page style has been selected, that\MessageBreak
|
|
isn't a layer page style,%
|
|
}%
|
|
}%
|
|
}%
|
|
}
|
|
\AfterSelectAnyPageStyle{\slnc@testforpagestylewarning}
|
|
\DefineFamilyMember[.definenotecolumn]{KOMAarg}
|
|
\DefineFamilyKey[.definenotecolumn]{KOMAarg}{position}{%
|
|
\@namedef{slnc@\slnc@name @pos}{\dimexpr #1\relax}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@position}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@position@default}
|
|
\DefineFamilyKey[.definenotecolumn]{KOMAarg}{width}{%
|
|
\@namedef{slnc@\slnc@name @width}{\dimexpr #1\relax}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@width}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@width@default}
|
|
\DefineFamilyKey[.definenotecolumn]{KOMAarg}{font}{%
|
|
\setkomafont{notecolumn.\slnc@name}{#1}%
|
|
\FamilyKeyStateProcessed
|
|
}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@font}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@font@default}
|
|
\DefineFamilyKey[.definenotecolumn]{KOMAarg}{marginpar}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{marginpar}{#1}%
|
|
\edef\reserved@a{\noexpand\slnc@defpos{\slnc@name}}\reserved@a
|
|
\@namedef{slnc@\slnc@name @width}{\marginparwidth}%
|
|
}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@marginpar}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@marginpar@default}
|
|
\scrlayerAddToInterface\slnc@defpos{%
|
|
\newcommand*\slnc@defpos[1]{%
|
|
\@namedef{slnc@#1@pos}{%
|
|
\ifodd\value{page}
|
|
\if@reversemargin
|
|
\dimexpr \oddsidemargin+1in
|
|
-\marginparsep-\csname slnc@#1@width\endcsname\relax
|
|
\else
|
|
\dimexpr \oddsidemargin+1in
|
|
+\textwidth+\marginparsep\relax
|
|
\fi
|
|
\else
|
|
\if@twoside
|
|
\if@reversemargin
|
|
\dimexpr \evensidemargin+1in
|
|
+\textwidth+\marginparsep\relax
|
|
\else
|
|
\dimexpr \evensidemargin+1in
|
|
-\marginparsep-\csname slnc@#1@width\endcsname\relax
|
|
\fi
|
|
\else
|
|
\if@reversemargin
|
|
\dimexpr \oddsidemargin+1in
|
|
-\marginparsep-\csname slnc@#1@width\endcsname\relax
|
|
\else
|
|
\dimexpr \oddsidemargin+1in
|
|
+\textwidth+\marginparsep\relax
|
|
\fi
|
|
\fi
|
|
\fi
|
|
}%
|
|
}%
|
|
}%
|
|
\DefineFamilyKey[.definenotecolumn]{KOMAarg}{normalmarginpar}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{normalmarginpar}{#1}%
|
|
\edef\reserved@a{\noexpand\slnc@defnormalpos{\slnc@name}}\reserved@a
|
|
\@namedef{slnc@\slnc@name @width}{\marginparwidth}%
|
|
}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@normalmarginpar}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@normalmarginpar@default}
|
|
\scrlayerAddToInterface\slnc@defnormalpos{%
|
|
\newcommand*\slnc@defnormalpos[1]{%
|
|
\@namedef{slnc@#1@pos}{%
|
|
\ifodd\value{page}
|
|
\dimexpr \oddsidemargin+1in
|
|
+\textwidth+\marginparsep\relax
|
|
\else
|
|
\if@twoside
|
|
\dimexpr \evensidemargin+1in
|
|
-\marginparsep-\csname slnc@#1@width\endcsname\relax
|
|
\else
|
|
\dimexpr \oddsidemargin+1in
|
|
+\textwidth+\marginparsep\relax
|
|
\fi
|
|
\fi
|
|
}%
|
|
}%
|
|
}%
|
|
\DefineFamilyKey[.definenotecolumn]{KOMAarg}{reversemarginpar}[\relax]{%
|
|
\FamilyKeyStateProcessed
|
|
\scrlayer@testunexpectedarg{reversemarginpar}{#1}%
|
|
\edef\reserved@a{\noexpand\slnc@defreversepos{\slnc@name}}\reserved@a
|
|
\@namedef{slnc@\slnc@name @width}{\marginparwidth}%
|
|
}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@reversemarginpar}
|
|
\scrlayer@AddCsToInterface{KV@KOMAarg.definenotecolumn@reversemarginpar@default}
|
|
\scrlayerAddToInterface\slnc@defreversepos{%
|
|
\newcommand*\slnc@defreversepos[1]{%
|
|
\@namedef{slnc@#1@pos}{%
|
|
\ifodd\value{page}
|
|
\dimexpr \oddsidemargin+1in
|
|
-\marginparsep-\csname slnc@#1@width\endcsname\relax
|
|
\else
|
|
\if@twoside
|
|
\dimexpr \evensidemargin+1in
|
|
+\textwidth+\marginparsep\relax
|
|
\else
|
|
\dimexpr \oddsidemargin+1in
|
|
-\marginparsep-\csname slnc@#1@width\endcsname\relax
|
|
\fi
|
|
\fi
|
|
}%
|
|
}%
|
|
}%
|
|
\scrlayerAddToInterface\DeclareNewNoteColumn{%
|
|
\newcommand*{\DeclareNewNoteColumn}[2][]{%
|
|
\scr@ifundefinedorrelax{slnc@#2@box}{}{%
|
|
\PackageError{scrlayer-notecolumn}{note column `#2' already defined}{%
|
|
You may declare only note columns, that haven't been declared
|
|
previously using\MessageBreak
|
|
\string\DeclareNewNoteColumn. See also the alternatives
|
|
\string\RedeclareNoteColumn,\MessageBreak
|
|
\string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak
|
|
Nevertheless, if you'll continue, declaration will be done.%
|
|
}%
|
|
}%
|
|
\DeclareNoteColumn[{#1}]{#2}%
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\ProvideNoteColumn{%
|
|
\newcommand*{\ProvideNoteColumn}[2][]{%
|
|
\scr@ifundefinedorrelax{slnc@#2@box}{}{%
|
|
\PackageInfo{scrlayer-notecolumn}{\string\ProvideNoteColumn{#2}
|
|
ignored,\MessageBreak
|
|
because of already defined\MessageBreak
|
|
not column}%
|
|
}{%
|
|
\DeclareNoteColumn[{#1}]{#2}%
|
|
}%
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\RedeclareNoteColumn{%
|
|
\newcommand*{\RedeclareNoteColumn}[2][]{%
|
|
\scr@ifundefinedorrelax{slnc@#2@box}{%
|
|
\PackageError{scrlayer-notecolumn}{note column `#2' undefined}{%
|
|
You may declare only note columns, that have been declared
|
|
previously using\MessageBreak
|
|
\string\RedeclareNoteColumn. See also the alternatives
|
|
\string\DeclareNewNoteColumn,\MessageBreak
|
|
\string\ProvideNoteColumn, and \string\DeclareNoteColumn.\MessageBreak
|
|
Nevertheless, if you'll continue, declaration will be done.%
|
|
}%
|
|
}{}%
|
|
\DeclareNoteColumn[{#1}]{#2}%
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\tf@slnc{%
|
|
\newwrite\tf@slnc
|
|
\AtBeginDocument{%
|
|
\if@filesw
|
|
\immediate\write\@auxout{%
|
|
\noexpand\csname slnc@initwrite\noexpand\endcsname
|
|
}%
|
|
\fi
|
|
}%
|
|
\AtEndDocument{\let\slnc@initwrite\slnc@openwrite}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@initwrite{}%
|
|
\scrlayerAddToInterface\slnc@openwrite{%
|
|
\newcommand*{\slnc@openwrite}{%
|
|
\immediate\closein\slnc@file
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
Opening `\jobname.slnc'\MessageBreak
|
|
for writing}%
|
|
\immediate\openout\tf@slnc\jobname.slnc
|
|
}%
|
|
}
|
|
\AfterReadingMainAux{%
|
|
\immediate\closeout\tf@slnc
|
|
\begingroup
|
|
\scr@ifundefinedorrelax{pdfmdfivesum}{%
|
|
\scr@ifundefinedorrelax{mdfivesum}{%
|
|
\ifdefined\directlua
|
|
\edef\reserved@a{\directlua{slncmdfivesum("\jobname.slnc")}}%
|
|
\else
|
|
\let\reserved@a\relax
|
|
\fi
|
|
}{%
|
|
\edef\reserved@a{\mdfivesum file {\jobname.slnc}}%
|
|
}%
|
|
}{%
|
|
\edef\reserved@a{\pdfmdfivesum file {\jobname.slnc}}%
|
|
}%
|
|
\ifx\reserved@a\relax
|
|
\PackageWarningNoLine{scrlayer-notecolumn}{%
|
|
\string\pdfmdfivesum\space unavailable.\MessageBreak
|
|
The package needs \string\pdfmdfivesum,\MessageBreak
|
|
\string\mdfivesum, or LuaTeX to test whether\MessageBreak
|
|
or not one more LaTeX run is needed to place the\MessageBreak
|
|
note columns correctly. If these are unavailable\MessageBreak
|
|
you have to do the decision without the help\MessageBreak
|
|
of the package%
|
|
}%
|
|
\else
|
|
\ifx \slnc@mdfivesum\reserved@a
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
MD5 of current `\jobname.slnc':\MessageBreak
|
|
\reserved@a}%
|
|
\else
|
|
\PackageWarningNoLine{scrlayer-notecolumn}{%
|
|
MD5 of slnc-file changed.\MessageBreak
|
|
Last: \slnc@mdfivesum\MessageBreak
|
|
New: \space \reserved@a\MessageBreak
|
|
At least one more LaTeX rerun needed to\MessageBreak
|
|
make note columns right%
|
|
}%
|
|
\aftergroup\@tempswatrue
|
|
\fi
|
|
\fi
|
|
\endgroup
|
|
}
|
|
\scrlayerAddToInterface\slnc@unexpanded{%
|
|
\let\slnc@unexpanded\detokenize
|
|
}
|
|
\scrlayerAddToInterface\makenote{%
|
|
\newcommand*{\makenote}{%
|
|
\kernel@ifstar{\let\slnc@unexpanded\detokenize\slnc@makenote}%
|
|
{\let\slnc@unexpanded\@firstofone\slnc@makenote}%
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@makenote{%
|
|
\newcommand{\slnc@makenote}[2][marginpar]{%
|
|
\@bsphack
|
|
\scr@savepos
|
|
\addtocontents{slnc}{%
|
|
\string\slnc@note{#1}%
|
|
{\noexpand\number\value{slncpage}}%
|
|
{\noexpand\number\scr@lastypos}%
|
|
{\slnc@unexpanded{#2}}%
|
|
}%
|
|
\@esphack
|
|
}%
|
|
}
|
|
\@ifundefined{c@slncpage}{%
|
|
\newcounter{slncpage}%
|
|
\AddToLayerPageStyleOptions{@everystyle@}{%
|
|
onbackground=\stepcounter{slncpage}%
|
|
}%
|
|
}{}
|
|
\scrlayerAddToInterface\slnc@processnotes{%
|
|
\newcommand*{\slnc@processnotes}[1]{%
|
|
\begingroup
|
|
\slnc@readnotes{\value{slncpage}}%
|
|
\expandafter\let\expandafter\reserved@a
|
|
\csname slnc@#1@unprocessed\endcsname
|
|
\expandafter\global
|
|
\expandafter\let\csname slnc@#1@unprocessed\endcsname\@empty
|
|
\def\slnc@notesyncfonttest##1{%
|
|
\ifhmode
|
|
\PackageError{scrlayer-notecolumn}{%
|
|
illegal font setting for `notecolumn.##1'%
|
|
}{%
|
|
Current setting of font for `notecolumn.##1' switches
|
|
from\MessageBreak
|
|
vertical mode to horizontal mode. This is
|
|
illegal!\MessageBreak
|
|
You have to change the font setting to fix
|
|
this.\MessageBreak
|
|
If you'll continue vertical alignment of notes may fail%
|
|
}%
|
|
\par\vskip-\dimexpr \baselineskip+\parskip\relax
|
|
\fi
|
|
}%
|
|
\long\def\slnc@note##1##2##3##4{%
|
|
\typeout{TRACE (slnc): ##2<=\theslncpage?}%
|
|
\ifnum ##2>\value{slncpage}\relax
|
|
\typeout{TRACE (slnc): no: unprocess note}%
|
|
\expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{%
|
|
\slnc@note{##1}{##2}{##3}{##4}%
|
|
}%
|
|
\else
|
|
\ifnum ##2<\value{slncpage}\relax
|
|
\PackageWarning{scrlayer-notecolumn}{note of type `#1' delayed}%
|
|
\fi
|
|
\boxmaxdepth\maxdepth
|
|
\expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
|
|
\expandafter\hsize\csname slnc@#1@width\endcsname
|
|
\normalfont\normalsize
|
|
\slnc@switchcolorstack{#1}%
|
|
{%
|
|
\usekomafont{notecolumn.#1}{%
|
|
\slnc@notesyncfonttest{#1}%
|
|
\expandafter\ifvoid\csname slnc@#1@box\endcsname
|
|
\expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
|
|
\kern\dimexpr\topskip-\baselineskip\relax
|
|
}%
|
|
\fi
|
|
\scr@ifundefinedorrelax{pdfpageheight}{%
|
|
\scr@ifundefinedorrelax{pageheight}{%
|
|
\@tempdima=\paperheight
|
|
}{%
|
|
\@tempdima=\pageheight
|
|
}%
|
|
}{%
|
|
\@tempdima=\pdfpageheight
|
|
}%
|
|
\@tempdima=\dimexpr \@tempdima-##3sp
|
|
-1in-\topmargin
|
|
-\headheight-\headsep
|
|
-\baselineskip
|
|
\relax
|
|
\@tempdimb=\dimexpr \expandafter\ht\csname slnc@#1@box\endcsname
|
|
+\expandafter\dp\csname slnc@#1@box\endcsname
|
|
\relax
|
|
\typeout{Soll: \the\@tempdima^^JIst: \space\the\@tempdimb}%
|
|
\ifdim\@tempdima<\@tempdimb
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
Note moved down from\MessageBreak
|
|
\the\@tempdima\space to \the\@tempdimb\MessageBreak
|
|
at note box `#1'
|
|
}%
|
|
\else
|
|
\ifdim\@tempdima>\@tempdimb
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
Adding vertical white space from\MessageBreak
|
|
\the\@tempdimb\space to \the\@tempdima\MessageBreak
|
|
into note box `#1'
|
|
}%
|
|
\expandafter\setbox\csname slnc@#1@box\endcsname
|
|
\vbox {%
|
|
\expandafter\unvbox\csname slnc@#1@box\endcsname
|
|
\kern\dimexpr\@tempdima-\@tempdimb\relax
|
|
}%
|
|
\fi
|
|
\fi
|
|
\expandafter\ifvoid\expandafter\csname slnc@#1@box\endcsname
|
|
\else
|
|
\@tempdima\dimexpr
|
|
\dp\strutbox
|
|
-\dp\csname slnc@#1@box\endcsname
|
|
\relax
|
|
\expandafter\unvbox\csname slnc@#1@box\endcsname
|
|
\ifdim\@tempdima>\z@ \kern\@tempdima\fi
|
|
\fi
|
|
\slnc@restoreinnote
|
|
\strut\ignorespaces ##4\par
|
|
}%
|
|
}%
|
|
}%
|
|
\fi
|
|
}%
|
|
\def\slnc@sync##1##2##3##4{%
|
|
\ifnum ##2>\value{slncpage}\relax
|
|
\expandafter\g@addto@macro\csname slnc@#1@unprocessed\endcsname{%
|
|
\slnc@sync{##1}{##2}{##3}{}%
|
|
}%
|
|
\else
|
|
\if@filesw
|
|
\expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
|
|
\expandafter\unvbox\csname slnc@#1@box\endcsname
|
|
\scr@savepos
|
|
\protected@write\@auxout{}{%
|
|
\string\newlabel{notecolumn.##1.##3.syncnote.label}{%
|
|
{%
|
|
\noexpand\number\scr@lastypos
|
|
}{\thepage}%
|
|
}%
|
|
}%
|
|
}%
|
|
\fi
|
|
\fi
|
|
}%
|
|
\reserved@a
|
|
\expandafter\ifvoid\csname slnc@#1@box\endcsname
|
|
\PackageInfo{scrlayer-notecolumn}{Note box `#1' empty}%
|
|
\else
|
|
\ifdim \dimexpr \expandafter\ht\csname slnc@#1@box\endcsname
|
|
+\expandafter\dp\csname slnc@#1@box\endcsname
|
|
\relax >\textheight\relax
|
|
\PackageInfo{scrlayer-notecolumn}{Split note box `#1'}%
|
|
\splittopskip\topskip
|
|
\splitmaxdepth\baselineskip
|
|
\usekomafont{notecolumn.#1}{%
|
|
\expandafter\vsplit\csname slnc@#1@box\endcsname to
|
|
\textheight\relax
|
|
}%
|
|
\expandafter\ifvoid\csname slnc@#1@box\endcsname
|
|
\else
|
|
\expandafter\setbox\csname slnc@#1@box\endcsname\vbox{%
|
|
\slnc@switchcolorstack{#1}%
|
|
\expandafter\unvbox\csname slnc@#1@box\endcsname
|
|
}%
|
|
\fi
|
|
\else
|
|
\PackageInfo{scrlayer-notecolumn}{Flush note box `#1'}%
|
|
\usekomafont{notecolumn.#1}{%
|
|
\slnc@switchcolorstack{#1}%
|
|
\expandafter\box\csname slnc@#1@box\endcsname%
|
|
}%
|
|
\fi
|
|
\fi
|
|
\expandafter\global
|
|
\expandafter\setbox\csname slnc@#1@box\expandafter\endcsname
|
|
\expandafter\box\csname slnc@#1@box\endcsname
|
|
\endgroup
|
|
}
|
|
}
|
|
\scrlayerAddToInterface{\slnc@switchcolorstack}{%
|
|
\newcommand*{\slnc@switchcolorstack}[1]{%
|
|
\scr@ifundefinedorrelax{slnc@#1@colorstack}{%
|
|
\def\set@color{%
|
|
\PackageWarningNoLine{scrlayer-notecolumn}{%
|
|
unsupported change of colour!\MessageBreak
|
|
It seems you are using a TeX engine,\MessageBreak
|
|
that does not support switching the\MessageBreak
|
|
colour stack like pdfTeX or luaTeX do.\MessageBreak
|
|
Because of this, usage of \string\color,\MessageBreak
|
|
\string\textcolor\space etc. inside a note
|
|
column\MessageBreak
|
|
is not supported%
|
|
}%
|
|
}%
|
|
}{%
|
|
\scr@ifundefinedorrelax{@pdfcolorstack}{%
|
|
}{%
|
|
\expandafter\let\expandafter\@pdfcolorstack
|
|
\csname slnc@#1@colorstack\endcsname
|
|
}%
|
|
\scr@ifundefinedorrelax{pdfcolorstack}{%
|
|
\scr@ifundefinedorrelax{pdfextension}{%
|
|
\PackageError{scrlayer-notecolumm}{%
|
|
colour stack defined but not usable%
|
|
}{%
|
|
\expandafter\string
|
|
\csname slnc@#1@colorstack\endcsname\space defined
|
|
\MessageBreak
|
|
but neither \string\pdfcolorstack\space nor
|
|
\string\pdfextension.\MessageBreak
|
|
This should never happen!%
|
|
}%
|
|
}{%
|
|
\pdfextension colorstack
|
|
\csname slnc@#1@colorstack\endcsname current\relax
|
|
}%
|
|
}{%
|
|
\pdfcolorstack
|
|
\csname slnc@#1@colorstack\endcsname current\relax
|
|
}%
|
|
}%
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@restoreinnote{%
|
|
\let\slnc@restoreinnote\@empty
|
|
}
|
|
\scrlayerAddToInterface\restoreinnote{%
|
|
\newcommand*\restoreinnote[1]{%
|
|
\AtBeginDocument{%
|
|
\expandafter\scrlayerAddCsToInterface[scrlayer-notecolumn.sty]{slnc\string#1}{%
|
|
\expandafter\let\csname slnc\string#1\endcsname#1%
|
|
\g@addto@macro\slnc@restoreinnote{%
|
|
\expandafter\let\expandafter#1\csname slnc\string#1\endcsname
|
|
}%
|
|
}%
|
|
}%
|
|
}%
|
|
\@onlypreamble\restoreinnote
|
|
\restoreinnote\label
|
|
\restoreinnote\index
|
|
\restoreinnote\glossary
|
|
}
|
|
\scrlayerAddToInterface\slnc@catcodes{%
|
|
\newcommand*{\slnc@catcodes}{}%
|
|
}
|
|
\AtBeginDocument{%
|
|
\begingroup
|
|
\def\do#1{%
|
|
\protected@xdef\slnc@catcodes{\slnc@catcodes
|
|
\catcode`\protect#1=\the\catcode`#1\relax
|
|
}%
|
|
}%
|
|
\dospecials
|
|
\let\protect\noexpand
|
|
\xdef\slnc@catcodes{\slnc@catcodes\catcode`\protect\@=11\relax}%
|
|
\endgroup
|
|
}
|
|
\scrlayerAddToInterface\slnc@readnotes{%
|
|
\newcommand*\slnc@readnotes[1]{%
|
|
\ifeof\slnc@file\else
|
|
\ifnum \number #1<\slnc@unprocessed\relax
|
|
\@tempswafalse
|
|
\else
|
|
\@tempswatrue
|
|
\fi
|
|
\@whilesw\if@tempswa\fi{%
|
|
\begingroup
|
|
\slnc@catcodes
|
|
\endlinechar\m@ne
|
|
\read\slnc@file to\reserved@a
|
|
\edef\reserved@a{%
|
|
\endgroup
|
|
\noexpand\def\noexpand\reserved@a{%
|
|
\unexpanded\expandafter{\reserved@a}%
|
|
}%
|
|
}%
|
|
\reserved@a
|
|
\expandafter\slnc@iofv\expandafter\reserved@b\reserved@a
|
|
\@empty\@empty\@empty\@empty\@empty
|
|
\@tempswafalse
|
|
\@for\reserved@c :={\slnc@note },{\slnc@sync }\do{%
|
|
\ifx\reserved@b\reserved@c \@tempswatrue\fi
|
|
}%
|
|
\if@tempswa
|
|
\@tempswafalse
|
|
\expandafter\slnc@iiiofv\expandafter\reserved@b\reserved@a
|
|
\@empty\@empty\@empty\@empty\@empty
|
|
\ifx\reserved@b\@empty
|
|
\PackageError{scrlayer-notecolumn}{internal syntax error}{%
|
|
Unexpected syntax of file `\jobname.slnc'.\MessageBreak
|
|
Second argument should be a number.\MessageBreak
|
|
I don't know what to do with\MessageBreak
|
|
\expandafter\detokenize\expandafter{\reserved@a}%
|
|
}%
|
|
\@tempswatrue
|
|
\else
|
|
\global\let\slnc@unprocessed\reserved@b
|
|
\expandafter\slnc@iiofv\expandafter\reserved@b\reserved@a
|
|
\@empty\@empty\@empty\@empty\@empty
|
|
\@ifundefined{slnc@\reserved@b @unprocessed}{%
|
|
\PackageWarning{scrlayer-notecolumn}{%
|
|
column `\reserved@b' undefined.\MessageBreak
|
|
You should declare the column before the usage.\MessageBreak
|
|
Notes will be lost%
|
|
}%
|
|
}{%
|
|
\expandafter\g@addto@macro
|
|
\csname slnc@\reserved@b @unprocessed\expandafter\endcsname
|
|
\expandafter{%
|
|
\reserved@a
|
|
}%
|
|
}%
|
|
\ifnum \number #1<\slnc@unprocessed\relax
|
|
\@tempswafalse
|
|
\else
|
|
\@tempswatrue
|
|
\fi
|
|
\fi
|
|
\else
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
Ignoring `\expandafter\detokenize\expandafter{\reserved@a}'}%
|
|
\@tempswatrue
|
|
\fi
|
|
\ifeof\slnc@file\@tempswafalse\fi
|
|
}%
|
|
\fi
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@iofv{%
|
|
\newcommand\slnc@iofv[6]{\def#1{#2}}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@iiofiv{%
|
|
\newcommand\slnc@iiofv[6]{\def#1{#3}}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@iiiofiv{%
|
|
\newcommand\slnc@iiiofv[6]{\def#1{#4}}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@unprocessed{%
|
|
\newcommand*{\slnc@unprocessed}{0}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@mdfivesum{%
|
|
\let\slnc@mdfivesum\@empty
|
|
}
|
|
\scrlayerAddToInterface\slnc@file{%
|
|
\scr@ifundefinedorrelax{pdfmdfivesum}{%
|
|
\scr@ifundefinedorrelax{mdfivesum}{%
|
|
\ifdefined\directlua
|
|
\directlua{%
|
|
function slncmdfivesum(filename)
|
|
local fh = io.open(filename,"rb")
|
|
if fh then
|
|
local sum=md5.sumhexa(fh:read("*a"))
|
|
tex.sprint(sum)
|
|
fh:close()
|
|
end
|
|
end
|
|
}%
|
|
\xdef\slnc@mdfivesum{\directlua{slncmdfivesum("\jobname.slnc")}}%
|
|
\fi
|
|
}{%
|
|
\xdef\slnc@mdfivesum{\mdfivesum file {\jobname.slnc}}%
|
|
}%
|
|
}{%
|
|
\xdef\slnc@mdfivesum{\pdfmdfivesum file {\jobname.slnc}}%
|
|
}%
|
|
\scr@ifundefinedorrelax{slnc@mdfivesum}{}{%
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
MD5 of last `\jobname.slnc':\MessageBreak
|
|
\slnc@mdfivesum}%
|
|
}%
|
|
\newread\slnc@file
|
|
\immediate\openin\slnc@file \jobname.slnc
|
|
\scrlayerOnAutoRemoveInterface{\immediate\closein\slnc@file}%
|
|
}
|
|
\scrlayerAddToInterface\c@slnc@clearnote@label{%
|
|
\newcounter{slnc@clearnote@label}%
|
|
}
|
|
\scrlayerAddToInterface\clearnotecolumn{%
|
|
\newcommand*\clearnotecolumn[1][marginpar]{%
|
|
\begingroup
|
|
\slnc@autoclearnotecolumnsfalse
|
|
\stepcounter{slnc@clearnote@label}%
|
|
\if@filesw
|
|
\protected@write\@auxout{%
|
|
\let\theslncpage\relax
|
|
\let\slnc@voidtest\relax
|
|
}{%
|
|
\string\newlabel{notecolumn.\theslnc@clearnote@label}%
|
|
{{\theslncpage}{\slnc@voidtest{#1}}}%
|
|
}%
|
|
\fi
|
|
\scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{%
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
Using estimated to low value for clearing\MessageBreak
|
|
note colum `#1'%
|
|
}
|
|
\edef\slnc@cmp@value{\the\value{slncpage}}%
|
|
\let\reserved@a\z@
|
|
}{%
|
|
\edef\reserved@a{%
|
|
\@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty
|
|
}%
|
|
\edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}%
|
|
\edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}%
|
|
}%
|
|
\typeout{TRACE (slnc): clearnote=\@nameuse{theslnc@clearnote@label},
|
|
abspage=\the\value{slncpage}, until page=\slnc@cmp@value,
|
|
process=\reserved@a, pagetotal=\the\pagetotal, topskip=\the\topskip}%
|
|
\ifvmode\ifdim \pagetotal<\topskip
|
|
\edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}%
|
|
\typeout{TRACE (slnc): until page=\slnc@cmp@value}%
|
|
\fi\fi
|
|
\ifnum \reserved@a=\z@
|
|
\ifvmode
|
|
\ifdim \pagetotal<\topskip
|
|
\else
|
|
\slnc@readnotes{\slnc@cmp@value}%
|
|
\fi
|
|
\else
|
|
\slnc@readnotes{\slnc@cmp@value}%
|
|
\fi
|
|
\begingroup
|
|
\aftergroup\@tempswafalse
|
|
\long\def\slnc@note##1##2##3##4{%
|
|
\ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
|
|
}%
|
|
\let\slnc@sync\slnc@note
|
|
\csname slnc@#1@unprocessed\endcsname
|
|
\endgroup
|
|
\else
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
box of note column `#1'\MessageBreak
|
|
not empty after page of \string\clearnotecolumn}%
|
|
\@tempswatrue
|
|
\fi
|
|
\if@tempswa
|
|
\IfLayerPageStyleExists{\currentpagestyle}{}{%
|
|
\PackageWarning{scrlayer-notecolumn}{%
|
|
\string\clearnotecolumn\space while active non-layer page
|
|
style.\MessageBreak
|
|
Activate empty page style until note column\MessageBreak
|
|
has been cleared%
|
|
}%
|
|
\pagestyle{empty}%
|
|
}%
|
|
\@tempswatrue
|
|
\fi
|
|
\@whilesw\if@tempswa\fi{%
|
|
\typeout{TRACE (slnc): add \string\clearpage}%
|
|
\clearpage
|
|
\expandafter\ifcase \slnc@voidtest{#1}%
|
|
\begingroup
|
|
\aftergroup\@tempswafalse
|
|
\long\def\slnc@note##1##2##3##4{%
|
|
\ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
|
|
}%
|
|
\let\slnc@sync\slnc@note
|
|
\csname slnc@#1@unprocessed\endcsname
|
|
\endgroup
|
|
\else
|
|
\@tempswatrue
|
|
\fi
|
|
\if@tempswa
|
|
\null
|
|
\fi
|
|
}%
|
|
\endgroup
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface{\slnc@firstof}{%
|
|
\def\slnc@firstof#1#2\@nil{#1}%
|
|
}
|
|
\scrlayerAddToInterface{slnc@secondof}{%
|
|
\def\slnc@secondof#1#2#3\@nil{#2}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@voidtest{%
|
|
\newcommand*{\slnc@voidtest}[1]{%
|
|
\expandafter\ifvoid \csname slnc@#1@box\endcsname \z@\else \@ne\fi
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\clearnotecolumns{%
|
|
\newcommand*\clearnotecolumns[1][\relax]{%
|
|
\begingroup
|
|
\slnc@autoclearnotecolumnsfalse
|
|
\ifx\relax#1\relax\else
|
|
\let\slnc@processnotecolumns\@empty
|
|
\edef\reserved@a{#1}%
|
|
\@for\reserved@a:=\reserved@a\do {%
|
|
\scr@trim@spaces\reserved@a
|
|
\ifx\reserved@a\@empty\else
|
|
\expandafter\l@addto@macro\expandafter\slnc@processnotecolumns
|
|
\expandafter{\expandafter\@elt\expandafter{\reserved@a}}%
|
|
\fi
|
|
}%
|
|
\fi
|
|
\stepcounter{slnc@clearnote@label}%
|
|
\if@filesw
|
|
\begingroup
|
|
\def\@elt##1{+\slnc@voidtest{##1}}%
|
|
\protected@write\@auxout{%
|
|
\let\theslncpage\relax
|
|
\let\slnc@voidtest\relax
|
|
}{%
|
|
\string\newlabel{notecolumn.\theslnc@clearnote@label}%
|
|
{{\theslncpage}{\numexpr \slnc@processnotecolumns\relax}}%
|
|
}%
|
|
\endgroup
|
|
\fi
|
|
\scr@ifundefinedorrelax{r@notecolumn.\theslnc@clearnote@label}{%
|
|
\begingroup
|
|
\def\@elt##1{, `##1'}%
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
Using estimated to low value for\MessageBreak
|
|
clearing note colums\MessageBreak
|
|
\expandafter\@gobble\slnc@processnotecolumns
|
|
}%
|
|
\endgroup
|
|
\edef\slnc@cmp@value{\the\value{slncpage}}%
|
|
\let\reserved@a\z@
|
|
}{%
|
|
\edef\reserved@a{%
|
|
\@nameuse{r@notecolumn.\theslnc@clearnote@label}\@empty\@empty
|
|
}%
|
|
\edef\slnc@cmp@value{\expandafter\slnc@firstof\reserved@a\@nil}%
|
|
\edef\reserved@a{\expandafter\slnc@secondof\reserved@a\@nil}%
|
|
}%
|
|
\typeout{TRACE (slnc): clearnote=\@nameuse{theslnc@clearnote@label},
|
|
abspage=\theslncpage, until page=\slnc@cmp@value,
|
|
process=\reserved@a, pagetotal=\the\pagetotal, topskip=\the\topskip}%
|
|
\ifvmode\ifdim \pagetotal<\topskip
|
|
\edef\slnc@cmp@value{\the\numexpr\slnc@cmp@value-1}%
|
|
\typeout{TRACE (slnc): until page=\slnc@cmp@value}%
|
|
\fi\fi
|
|
\ifnum \reserved@a=\z@
|
|
\ifvmode
|
|
\ifdim \pagetotal<\topskip
|
|
\else
|
|
\slnc@readnotes{\slnc@cmp@value}%
|
|
\fi
|
|
\else
|
|
\slnc@readnotes{\slnc@cmp@value}%
|
|
\fi
|
|
\begingroup
|
|
\aftergroup\@tempswafalse
|
|
\long\def\slnc@note##1##2##3##4{%
|
|
\ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
|
|
}%
|
|
\let\slnc@sync\slnc@note
|
|
\def\@elt##1{\csname slnc@##1@unprocessed\endcsname}%
|
|
\slnc@processnotecolumns
|
|
\endgroup
|
|
\else
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
box of at least one note column\MessageBreak
|
|
not empty after page of \string\clearnotecolumns}%
|
|
\@tempswatrue
|
|
\fi
|
|
\if@tempswa
|
|
\IfLayerPageStyleExists{\currentpagestyle}{}{%
|
|
\PackageWarning{scrlayer-notecolumn}{%
|
|
\string\clearnotecolumns\space while active non-layer page
|
|
style.\MessageBreak
|
|
Activate empty page style until note column\MessageBreak
|
|
has been cleared%
|
|
}%
|
|
\pagestyle{empty}%
|
|
}%
|
|
\@tempswatrue
|
|
\fi
|
|
\@whilesw\if@tempswa\fi{%
|
|
\typeout{TRACE (slnc): add \string\clearpage}%
|
|
\clearpage
|
|
\begingroup
|
|
\def\@elt##1{+\slnc@voidtest{##1}}%
|
|
\ifcase \numexpr \slnc@processnotecolumns\relax
|
|
\aftergroup\@tempswafalse
|
|
\long\def\slnc@note##1##2##3##4{%
|
|
\ifnum ##2>\slnc@cmp@value\relax \else \aftergroup\@tempswatrue\fi
|
|
}%
|
|
\let\slnc@sync\slnc@note
|
|
\def\@elt##1{\csname slnc@##1@unprocessed\endcsname}%
|
|
\slnc@processnotecolumns
|
|
\else
|
|
\aftergroup\@tempswatrue
|
|
\fi
|
|
\endgroup
|
|
\if@tempswa
|
|
\null
|
|
\fi
|
|
}%
|
|
\endgroup
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface{\c@slnc@syncpoint}{%
|
|
\newcounter{slnc@syncpoint}%
|
|
}
|
|
\scrlayerAddToInterface{\syncwithnotecolumn}{%
|
|
\newcommand*{\syncwithnotecolumn}[1][marginpar]{%
|
|
\begingroup
|
|
\edef\reserved@a{\endgroup\noexpand\syncwithnotecolumns[{#1}]}%
|
|
\reserved@a
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface{\syncwithnotecolumns}{%
|
|
\newcommand*{\syncwithnotecolumns}[1][\relax]{%
|
|
\begingroup
|
|
\ifx\relax#1\relax\else
|
|
\let\slnc@processnotecolumns\@empty
|
|
\edef\reserved@a{#1}%
|
|
\@for\reserved@a:=\reserved@a\do {%
|
|
\scr@trim@spaces\reserved@a
|
|
\ifx\reserved@a\@empty\else
|
|
\expandafter\l@addto@macro\expandafter\slnc@processnotecolumns
|
|
\expandafter{\expandafter\@elt\expandafter{\reserved@a}}%
|
|
\fi
|
|
}%
|
|
\fi
|
|
\stepcounter{slnc@syncpoint}%
|
|
\def\@elt##1{%
|
|
\addtocontents{slnc}{%
|
|
\string\slnc@sync{##1}%
|
|
{\noexpand\number\value{slncpage}}%
|
|
{\theslnc@syncpoint}%
|
|
{}%
|
|
}%
|
|
}%
|
|
\slnc@processnotecolumns
|
|
\ifvmode
|
|
\let\slnc@voffset\@empty%
|
|
\expandafter\@firstofone
|
|
\else
|
|
\PackageWarning{scrlayer-notecolumn}{%
|
|
\string\syncwithnotecolumn\space in hmode.\MessageBreak
|
|
Using \string\syncwithnotecolumn\space in horizontal\MessageBreak
|
|
mode may result in unwanted vertical\MessageBreak
|
|
space inside paragraphs and may lost\MessageBreak
|
|
colours of text of notes. \space So perhaps you\MessageBreak
|
|
should move \string\syncwithnotecolumn\space before\MessageBreak
|
|
or after the paragraph%
|
|
}%
|
|
\let\slnc@voffset\@empty%\def\slnc@voffset{-\number\baselineskip}%
|
|
\expandafter\slnc@vadjust
|
|
\fi
|
|
{%
|
|
\if@filesw
|
|
\scr@savepos
|
|
\protected@write\@auxout{}{%
|
|
\string\newlabel{notecolumn.\theslnc@syncpoint.synctext.label}{%
|
|
{%
|
|
\noexpand\number
|
|
\numexpr \scr@lastypos\slnc@voffset\relax
|
|
}{\thepage}%
|
|
}%
|
|
}%
|
|
\fi
|
|
\@ifundefined{r@notecolumn.\theslnc@syncpoint.synctext.label}{%
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
No text label for \string\syncwithnotecolumn.\MessageBreak
|
|
Need rerun to sync position}%
|
|
}{%
|
|
\edef\reserved@a{%
|
|
\@nameuse{r@notecolumn.\theslnc@syncpoint.synctext.label}%
|
|
\@empty\@empty
|
|
}%
|
|
\edef\slnc@textpos{\expandafter\slnc@firstof\reserved@a\@nil}%
|
|
\edef\slnc@textpage{\expandafter\slnc@secondof\reserved@a\@nil}%
|
|
\let\slnc@notepos\slnc@textpos
|
|
\let\slnc@notepage\slnc@textpage
|
|
\def\@elt##1{%
|
|
\@ifundefined{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}{%
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
No note label for sync with note column\MessageBreak
|
|
`##1'.\MessageBreak
|
|
Need rerun to sync position}%
|
|
\G@refundefinedtrue
|
|
}{%
|
|
\edef\reserved@a{%
|
|
\@nameuse{r@notecolumn.##1.\theslnc@syncpoint.syncnote.label}%
|
|
\@empty\@empty
|
|
}%
|
|
\edef\reserved@b{\expandafter\slnc@firstof\reserved@a\@nil}%
|
|
\edef\reserved@c{\expandafter\slnc@secondof\reserved@a\@nil}%
|
|
\ifnum \slnc@notepage<\reserved@c\relax
|
|
\let\slnc@notepos=\reserved@b
|
|
\let\slnc@notepage=\reserved@c
|
|
\else
|
|
\ifnum \slnc@notepage=\reserved@c\relax
|
|
\ifnum \slnc@notepos>\reserved@b
|
|
\let\slnc@notepos=\reserved@b
|
|
\let\slnc@notepage=\reserved@c
|
|
\fi
|
|
\fi
|
|
\fi
|
|
}%
|
|
}%
|
|
\slnc@processnotecolumns
|
|
\ifnum\slnc@textpage>\slnc@notepage\relax
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
Last note page before last text page.\MessageBreak
|
|
Need rerun to sync position}%
|
|
\else
|
|
\ifnum\slnc@textpage<\slnc@notepage\relax
|
|
\@whilenum \slnc@textpage<\slnc@notepage\do {%
|
|
\newpage\null\vskip-\dimexpr \baselineskip+\parskip\relax
|
|
\edef\slnc@textpage{\the\numexpr\slnc@textpage+1\relax}%
|
|
}%
|
|
\scr@ifundefinedorrelax{pdfpageheight}{%
|
|
\scr@ifundefinedorrelax{pageheight}{%
|
|
\@tempdima=\paperheight
|
|
}{%
|
|
\@tempdima=\pageheight
|
|
}%
|
|
}{%
|
|
\@tempdima=\pdfpageheight
|
|
}%
|
|
\@tempdima=\dimexpr \@tempdima
|
|
-\topmargin-1in
|
|
-\headheight-\headsep
|
|
-\topskip+\baselineskip
|
|
\relax
|
|
\edef\slnc@textpos{\number\@tempdima}%
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
Top position is \slnc@textpos%
|
|
}%
|
|
\fi
|
|
\ifnum\slnc@notepos>\slnc@textpos\relax
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
Last note position before last text\MessageBreak
|
|
position.\MessageBreak
|
|
Need rerun to sync position%
|
|
}%
|
|
\else
|
|
\ifnum\slnc@notepos<\slnc@textpos\relax
|
|
\@tempdima=\numexpr \slnc@textpos-\slnc@notepos\relax sp
|
|
\PackageInfo{scrlayer-notecolumn}{%
|
|
skipping \the\@tempdima\space to sync%
|
|
}%
|
|
\vskip\@tempdima
|
|
\fi
|
|
\fi
|
|
\fi
|
|
}%
|
|
}%
|
|
\endgroup
|
|
}%
|
|
}
|
|
\scrlayerAddToInterface\slnc@vadjust{%
|
|
\newcommand{\slnc@vadjust}[1]{%
|
|
\@bsphack
|
|
\vadjust{#1}%
|
|
\@esphack
|
|
}%
|
|
}
|
|
%%% From File: $Id: scrlayer-notecolumn.dtx 3426 2019-12-02 09:15:20Z kohm $
|
|
%%% (run: final)
|
|
\DeclareNoteColumn{marginpar}
|
|
\let\reserved@a\clearpage
|
|
\def\clearpage{%
|
|
\ifslnc@autoclearnotecolumns\clearnotecolumns\relax\fi
|
|
}%
|
|
\expandafter\g@addto@macro\expandafter\clearpage\expandafter{\reserved@a}
|
|
%%% From File: $Id: scrlogo.dtx 2640 2017-05-08 09:36:55Z kohm $
|
|
\@ifundefined{KOMAScript}{%
|
|
\DeclareRobustCommand{\KOMAScript}{\textsf{K\kern.05em O\kern.05em%
|
|
M\kern.05em A\kern.1em-\kern.1em Script}}}{}
|
|
\endinput
|
|
%%
|
|
%% End of file `scrlayer-notecolumn.sty'.
|
|
|