summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbmarkup.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-05-19 16:06:11 +0000
committerKarl Berry <karl@freefriends.org>2007-05-19 16:06:11 +0000
commitc11a0850e29ea8d9ffdb5696efc582fad8e57793 (patch)
tree300bd861c8a6e10ac06031fd70f8abd1ba073efd /Master/texmf-dist/tex/latex/dlfltxb/dlfltxbmarkup.sty
parent71199f0d5b9772184cc792bfe50790505a6180cb (diff)
new latex bundle dlfltxb (17may07)
git-svn-id: svn://tug.org/texlive/trunk@4314 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/dlfltxb/dlfltxbmarkup.sty')
-rw-r--r--Master/texmf-dist/tex/latex/dlfltxb/dlfltxbmarkup.sty262
1 files changed, 262 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbmarkup.sty b/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbmarkup.sty
new file mode 100644
index 00000000000..30daa71f5f7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/dlfltxb/dlfltxbmarkup.sty
@@ -0,0 +1,262 @@
+\ProvidesPackage{dlfltxbmarkup}[2007/05/16 v0.6 by daleif]
+
+\@ifclassloaded{memoir}{}{%
+ \PackageError{felinemarkup}{This package depends on several internal
+ components of the memoir class and therefore need the memoir
+ class}{Use the memoir class}
+}
+
+
+
+\RequirePackage{keyval}
+\RequirePackage{ragged2e}
+
+
+\DeclareOption{loadsampleconfig}{\AtEndOfPackage{\InputIfFileExists{dlfltxbmarkup-sample.cfg}{}{}}}
+
+\ProcessOptions\relax
+
+
+
+% HISTORY
+% <2007 this package dates back to at least 2004
+% 2007/03/20 added \color{black} to the margin writing devices, since
+% color at a line boundary may extend out into the margin
+% 2007/03/21 added inputenc keyword
+% 2007/03/21 added counter keyword
+% 2007/03/21 added length keyword
+% 2007/03/22 added gauss keyword
+% 2007/03/23 added tabs keyword
+% 2007/03/23 added nbop keyword
+% 2007/03/24 fixed a bug in tabs
+% 2007/03/24 fixed loads more index errors
+% 2007/04/27 added \hspace{0pt} to \MarkWMargin to activate automatic hyphenation
+% 2007/04/30 added \feline@MWM@inner to get better source re-use
+% 2007/05/05 fixed a margin placement problem by adding \leavevmode
+% in front of \checkoddpage in \feline@MWM@inner, fix
+% supplied by Peter Wilson, after I submitted a bug report
+% about it.
+% 2007/05/10 started adding support for key explanations, planning to
+% make it possible to print a generated overview of the
+% regisered keys
+% 2007/05/14 all keys for my book project have now been moved to
+% felinemarkup.cfg, which wil be loaded at the end of the
+% package, if the 'loadfelinemarkupconfig' package option
+% is given
+% 2007/05/15 \feline@index@cmd renamed to \felineIndexCmd
+% 2007/05/16 package renamed to dlfltxbmarkup
+
+
+% this boolean is meant to be used for example inside constructions
+% that will not permit the use of \marginpar, for example the
+% environments 'framed' and 'shaded', then \MarkWMargin will use
+% \sidepar instead of \marginpar
+
+\@ifundefined{ifNoMarginparAvail}{%
+ \newif\ifNoMarginparAvail
+ \NoMarginparAvailfalse
+}{}
+
+
+\newcommand\felineMarginAdjustment{%
+ \ifoddpage\RaggedRight\else\RaggedLeft\fi}
+
+
+% typesets the material in the margin
+% we use \checkoddpage (assuming the use of \strictpagechecktrue) to
+% perform a rigid test on whether or not we are on an odd page
+% \RaggedRight \RaggedLeft is used to get the test 'mashed' up against
+% the text, and to permit hyphenation. If the material in #1 is using
+% typewriter font, then it is #1's responsability to ensure that
+% hyphenation is possible in that font
+\newcommand\feline@MWM@inner[1]{%
+ \parbox[t]{\marginparwidth}{%
+ \leavevmode\checkoddpage% needs \leavevmode since \checkoddpage
+ % leaves a whatsit
+% \ifoddpage\RaggedRight\else\RaggedLeft\fi%
+ \felineMarginAdjustment%
+ {\slshape\footnotesize\hspace{0pt}\color{black}#1\par}}}
+
+% this might not belong here, but we will leave it for now
+\strictpagechecktrue%
+\reversesideparfalse%
+
+% the main macro to write in the margin with
+\newcommand\felineWriteInMargin[1]{%
+ \ifNoMarginparAvail%
+ \sidepar{\feline@MWM@inner{#1}}%
+ \else%
+ \if@feline@forcesidepar%
+ \sidepar{\feline@MWM@inner{#1}}%
+ \else%
+ \marginpar{\feline@MWM@inner{#1}}%
+ \fi%
+ \fi%
+}%
+
+
+% because of a possible babel use, and its active charecters (in
+% danish, " is an active character, it seems that we cannot directly
+% add automatic english hyphenation to \cs and \css, in most cases it
+% can be added by hand to the macros specified in \FelineKeyGenerator
+% see felinemarkup.cfg
+\DeclareRobustCommand\cs[1]{%
+ \textnormal{\texttt{\symbol{'134}#1}}}
+
+\@ifpackagewith{babel}{english}{
+ \DeclareRobustCommand\css[1]{%
+ \textnormal{\texttt{%
+ \protect\makebox[0pt][r]{\symbol{'134}}%
+ \foreignlanguage{english}{\cs{\hyphenchar\font=`\-#1}}}}}
+}{
+ \DeclareRobustCommand\css[1]{%
+ \textnormal{\texttt{%
+ \protect\makebox[0pt][r]{\symbol{'134}}%
+ {#1}}}}
+}
+
+% indexing commands, first just two alias macros
+\newcommand\textitindex[1]{\textit{#1}}
+\newcommand\textbfindex[1]{\textbf{#1}}
+% then two different indexing macros, one for italic index entries and
+% one for bold. we use them like this to avoid expansion problems (or
+% at least try to)
+\newcommand\itindex[1]{\index{#1|textitindex}}
+\newcommand\bfindex[1]{\index{#1|textbfindex}}
+% default indexing command, we change this using the idxit, idxbf keys
+\newcommand\felineIndexCmd{\index}
+
+
+% ---------------------------------------------------------------------------
+
+
+
+% just initial definitions
+\newcommand*\feline@margin[1]{\par margin: #1\par}
+\newcommand*\feline@index[1]{\par index: #1\par}
+\newcommand*\feline@text[1]{\par text: #1\par}
+
+% just a shortcut, amsmath makes the same one
+\let\@xp\expandafter
+
+\define@key{FelineIndex}{empty}[]{%
+ \renewcommand*\feline@margin[1]{\par margin: ##1\par}%
+ \renewcommand*\feline@index[1]{\par index: ##1\par}%
+ \renewcommand*\feline@text[1]{\par text: ##1\par}%
+}
+
+% whether or not to write the text part
+\newif\if@feline@txt \@feline@txttrue
+% whether or not to write in the margin
+\newif\if@feline@mrgn \@feline@mrgntrue
+% whether or not to add to the index
+\newif\if@feline@idx \@feline@idxtrue
+% force the use of sidepar instead of the usual marginpar
+\newif\if@feline@forcesidepar
+% whether or not to let \markup add a \hspace{0pt} in the text
+% don't know it this is still needed
+\newif\if@feline@hsp
+
+% basically stolen from another package
+\newcommand*\dlf@M@setbool[2]{%
+ \csname #2\ifx\relax#1\relax true \else #1\fi\endcsname}
+
+% switch off keys
+\define@key{FelineIndex}{notxt} []{\@feline@txtfalse} % = nowr
+\define@key{FelineIndex}{nowr} []{\@feline@txtfalse} % no writing in text
+\define@key{FelineIndex}{nomk} []{\@feline@mrgnfalse} % no mark in margin
+\define@key{FelineIndex}{noidx} []{\@feline@idxfalse} % no adding index
+
+\define@key{FelineIndex}{hsp} []{\@feline@hsptrue}
+
+% locally use a different index command
+\define@key{FelineIndex}{idxit} []{\renewcommand\felineIndexCmd{\itindex}}
+\define@key{FelineIndex}{idxbf} []{\renewcommand\felineIndexCmd{\bfindex}}
+\define@key{FelineIndex}{idxn} []{\renewcommand\felineIndexCmd{\index}}
+
+% \sidepar's are non-floating objects so they does not move by them
+% self, we need to help if needed, the argument should be a number
+% (the unit will be \onelineskip)
+\newlength\feline@spvs@addto
+\setlength\feline@spvs@addto{0pt}
+\define@key{FelineIndex}{addtospvrt}{\addtolength{\feline@spvs@addto}{#1\onelineskip}}
+\define@key{FelineIndex}{vaddtosp} {\addtolength{\feline@spvs@addto}{#1\onelineskip}}
+
+% force the use of \sidepar, don't think I've ever used this
+\define@key{FelineIndex}{forcesidepar}[true]{\dlf@M@setbool{#1}{@feline@forcesidepar}}
+
+% by default this macro does nothing, the idea behind it is to use
+% this in an external document to generate a list of key names and
+% descriptions (using the first two arguments)
+\providecommand\felineMarkupDescription[5]{}
+
+% key generator macro, has the following arguments
+% #1: name of the key
+% #2: description of what this key is for
+% #3: code for margin command
+% #4: code for index command
+% #5: code for text command
+% and does the following:
+% * creates \feline@margin@<key>, \feline@index@<key> and
+% \feline@text@<key>
+% * the \define@key part then performs three \let's:
+% \let\feline@margin\feline@margin@<key> etc.
+% when using \FelineKeyGenerator, #1 refers to the main argument given
+% to \markup
+\newcommand\felineKeyGenerator[5]{%
+ \felineMarkupDescription{#1}{#2}{#3}{#4}{#5}%
+ \global\define@key{FelineIndex}{#1}[]{%
+ \global\@xp\@xp\@xp\let\@xp\@xp\@xp\feline@margin\@xp\csname feline@margin@#1\endcsname%
+ \global\@xp\@xp\@xp\let\@xp\@xp\@xp\feline@index\@xp\csname feline@index@#1\endcsname%
+ \global\@xp\@xp\@xp\let\@xp\@xp\@xp\feline@text\@xp\csname feline@text@#1\endcsname%
+ }%
+ \@namedef{feline@margin@#1}##1{#3}%
+ \@namedef{feline@index@#1}##1{#4}%
+ \@namedef{feline@text@#1}##1{#5}%
+}
+
+% standard key er lavet ned i \setkeys, da \markup[notxt]{...} ellers ikke vil
+% være det samme som \markup[macro,notxt]{...}
+
+% this is the main macro, take two arguments, a optional argument for
+% key controls and the mandatory arguments for the think we want to
+% markup
+% note the it starts by setting the \feline@std@key which will be the
+% stadard key used if the optional argument is empty or the other keys
+% does not alter the \feline@margin, \feline@text and \feline@index
+\newcommand\markup[2][]{%
+% \@bsphack
+ \begingroup%
+ \setkeys{FelineIndex}{\felineStandardKey}%
+ \setkeys{FelineIndex}{#1}%
+ \ifdim\feline@spvs@addto>0pt%
+ \addtolength\sideparvshift{\feline@spvs@addto}%
+ \fi%
+ \if@feline@txt\feline@text{#2}\fi%
+ \if@feline@idx\feline@index{#2}\fi%
+ \if@feline@mrgn\if@feline@hsp\hspace{0pt}\fi\feline@margin{#2}\fi%
+ \@feline@txttrue%
+ \@feline@mrgntrue%
+ \@feline@idxtrue%
+ \endgroup%
+% \@esphack
+}
+
+% default generated key used by \markup, in the example setup 'macro'
+% is used
+\def\felineStandardKey{test}
+
+% test key
+\felineKeyGenerator{test}
+ {test key, does not do anything useful}%
+ {\MarkWMargin{#1}}%
+ {\felineIndexCmd{#1}}%
+ {\emph{#1}}
+
+
+
+\InputIfFileExists{dlfltxbmarkup.cfg}{}{}
+
+
+
+