\RequirePackage{etex}
\documentclass[11pt,oneside,a4paper,oldfontcommands,danish,english,article]{memoir}
\usepackage[latin1]{inputenc}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[widespace]{fourier}

\setlxvchars[\normalfont]

\settypeblocksize{*}{1.3\lxvchars}{1.618}

\setlrmargins{*}{*}{0.7}
\setulmargins{*}{*}{1}
\setlength\marginparwidth{4cm}

\checkandfixthelayout


\hfuzz=30pt


\usepackage{color}
\usepackage[colorlinks,breaklinks]{hyperref}
\definecolor{linkcolour}{rgb}{0,0.2,0.6}
\definecolor{citecolour}{rgb}{0,0.6,0.2}
\definecolor{urlcolour} {rgb}{0.8,0,0.8}
  
\hypersetup{
  pdftitle={The dlfltxbcodetips package},
  pdfauthor={Copyright \textcopyright\ \number\year\ Lars Madsen},
  linkcolor=linkcolour,citecolor=citecolour,
  filecolor=urlcolour,urlcolor=urlcolour,
  plainpages=false,
}
  
\ifpdf\else\usepackage{breakurl}\fi
\usepackage{memhfixc}

\clubpenalty=300
\widowpenalty=300

\usepackage{microtype}

\usepackage{amsmath,amssymb}
\usepackage[amsmath,thmmarks]{ntheorem}
\usepackage[round]{natbib}

\usepackage{dlfltxbcodetips}
\usepackage[loadsampleconfig]{dlfltxbmarkup}
\renewcommand\felineMarginAdjustment{\RaggedLeft}



\usepackage{dlfltxbmisc}
\usepackage{graphicx}

\chapterstyle{article}

\setsecheadstyle{\normalfont\large\bfseries\raggedright}


\reversemarginpar
\reversesidepartrue

\definecolor{shadecolor}{gray}{0.8}
\theorembodyfont{\normalfont}
\theoremseparator{.}
\NewShadedTheorem{caveat}{Caveat}


% until dlfltxbsd is released we will have to use the following
% construction

\usepackage{fancyvrb}
\fvset{fontsize=\footnotesize}

\newcommand\verbfile{\jobname.vrb}
\newenvironment{sourcedisplay}{%
\par\vskip0.5\baselineskip\noindent
\VerbatimOut{\verbfile}}{%
\endVerbatimOut%
\noindent
\begin{minipage}{0.48\linewidth}
\VerbatimInput{\verbfile}
\end{minipage}
\hfill
\begingroup%
\begin{minipage}{0.48\linewidth}
\begin{framed}
\input{\verbfile}
\end{framed}
\end{minipage}
\endgroup\vskip0.5\baselineskip}


\newenvironment{Sourcedisplay}{%
\par\vskip0.5\baselineskip\noindent
\VerbatimOut{\verbfile}}{%
\endVerbatimOut%
\noindent
\begin{minipage}{\linewidth}
\VerbatimInput{\verbfile}
\end{minipage}
\par\bigskip\noindent
\begin{minipage}{\linewidth}
\begin{framed}
\input{\verbfile}
\end{framed}
\end{minipage}
\vskip0.5\baselineskip}


\pagestyle{plain}

\begin{document}

\title{Code tips from ``Introduktion til \LaTeX''\\{\normalsize Or just the
    \textsf{\jobname} package}}
\author{Lars Madsen\thanks{Web:
    \url{http://home.imf.au.dk/daleif}\qquad Email: \url{daleif@imf.au.dk}}}
\maketitle

\tableofcontents*

\setsecnumdepth{part}

\chapter{Introduction}
\label{cha:introduction}

In my \LaTeX\ book \citep{ltxb} we present some macros that might be
helpful to the readers.  Some of these extra macros might be useful to
others as well so these macros have been included in the
\markup[nomk,sty]{dlfltxbcodetips} package. The package is published on \textsc{ctan} and the
package is released under the normal lppl license.

The >>\texttt{dlfltxb}<< part of the name simply stands for >>daleif<<
and \LaTeX\ book. The \markup[nomk,sty]{dlfltxbcodetips} package is the first
package in the >>\texttt{dlfltxb}<<-bundle which, over time, will
contain most of the home made packages that I use to create my book
(though not the book source itself).

Some of the macros might be better of included in the
\markup[nomk,sty]{mathtools} package by Morten Høgholm, but he is quite busy
elsewhere at the moment. over time some of the macros might be
imcluded in 

\newpage
\noindent
\emph{Note:} The macro \verb+\dbx+ will often be used to simulate some
text or mathematical material. 

\setsecnumdepth{section}

\chapter{Extra symbols}
\label{cha:extra-symbols}

\section{\texorpdfstring{A big version of \cs{times}}{A big version of 
    \textbackslash times}}
\label{sec:big-version-cstimes}



A few extra symbols have been created. First of is \markup{bigtimes}
which is a large operator version of \markup[nomk]{times}, but without
having to load special fonts.
\begin{sourcedisplay}
$\bigtimes_{n=1}^k A_n$
\[ \bigtimes_{n=1}^k A_n \]
\end{sourcedisplay}

\section{Negated up- and downarrows}
\label{sec:negat-up-down}

The package creates \markup{nuparrow} and \markup{ndownarrow} by
rotating and reflecting \markup[nomk]{nrightarrow} and 
\markup[nomk]{nleftarrow}
respectively.
\begin{sourcedisplay}
$ A  \nuparrow B$ \qquad
$ B \ndownarrow C$
\end{sourcedisplay}
The macros require the use of the \markup[nomk,sty]{graphicx} package,
which is not auto loaded.

\chapter{Fun with theorems}
\label{cha:fun-with-theorems}

\section{Shaded theorems with the ntheorem package}
\label{sec:shaded-theorems-with}

Even though we have the \markup[nomk,sty]{shadedthm} package, we can
easily do better if we are already using the
\markup[nomk,sty]{ntheorem} package. Simply use
\begin{syntax}
  \markup{NewShadedTheorem}
\end{syntax}
It has exactly the same syntax as the ordinary
\markup[nomk]{newtheorem}. Requirements: the
\markup[nomk,sty]{framed}, \markup[nomk,sty]{ntheorem},
(\texttt{x})\markup[nomk,sty]{color} packages and the definition of
the >>\texttt{shadecolor}<< (required by the \markup[nomk,sty]{framed} package).
\begin{sourcedisplay}
\theoremheaderfont{\bfseries}
\theoremseparator{.}
\NewShadedTheorem{thm}{Theorem}[chapter]
\NewShadedTheorem{lemma}[thm]{Lemma}
\newtheorem{prop}[thm]{Proposition}
\begin{thm}
  normal test.
\end{thm}
\begin{thm*}
  un-numbered.
\end{thm*}
\begin{lemma}
  a lemma.
\end{lemma}
\begin{prop}
  a theorem with no background.
\end{prop}
\end{sourcedisplay}
In contrast to \markup[nomk,sty]{ntheorem}, the $*$-ed version created
by \markup[nomk]{NewShadedTheorem} is a version that does not print a
number.

\section{Theorems that start with a list}
\label{sec:theorems-that-start}

A theorem that starts with a list looks odd because the first item
comes directly after the heading.\footnote{Depends on the
  configuration.}
\makeatletter
\let\thm\thm@inner
\let\endthm\endthm@inner
\makeatother
\begin{sourcedisplay}
\begin{thm}
  \begin{enumerate}
  \item \dbx[2cm]
  \item \dbx[2cm]
  \item \dbx[2cm]
  \end{enumerate}
\end{thm}
\end{sourcedisplay}
The macro \markup{InsertTheoremBreak} helps.
\begin{sourcedisplay}
\begin{thm}
  \InsertTheoremBreak
  \begin{enumerate}
  \item \dbx[2cm]
  \item \dbx[2cm]
  \item \dbx[2cm]
  \end{enumerate}
\end{thm}
\begin{thm}
  \InsertTheoremBreak*
  \begin{enumerate}
  \item \dbx[2cm]
  \item \dbx[2cm]
  \item \dbx[2cm]
  \end{enumerate}
\end{thm}
\end{sourcedisplay}
\noindent The un-stared version remove the space above the list, the
stared version does not.

\begin{caveat*}
  If the theorem comes too close to a page break it is quite likely
  that the page break will end up between the theorem header and the
  start of the list.
\end{caveat*}

\chapter{Various features regarding alignment}
\label{cha:vari-feat-regard}

\section{Arrow between lines}
\label{sec:arrow-between-lines}

Sometimes lines in an alignment are related in the sense of \emph{from
which it follows}, usually indicated by $\Rightarrow$. We would like
to place this between the lines in a nice way. The following macro is
due to Morten Høgholm.
\begin{syntax}
  \markup{ArrowBetweenLines}\oarg{arrow}
  \markup{ArrowBetweenLines*}\oarg{arrow}
\end{syntax}
Simply hold back one column of alignment for the arrow:
\begin{sourcedisplay}
\begin{alignat}{2}
  && f(x) & = \dbx[2cm] \\
  \ArrowBetweenLines
  && g(x) & = - \dbx[2cm] \\
  \ArrowBetweenLines[\Downarrow]
  && h(x) & = 0
\end{alignat}
\end{sourcedisplay}
Note the height of the arrow line and that the line automatically does
not contain equation numbers. The stared version can be used to place
the arrows on the right. Though several alignment columns on each line
might become a problem.
\begin{sourcedisplay}
\begin{alignat}{2}
  f(x) & = \dbx[2cm] \\
  \ArrowBetweenLines*
   g(x) & = - \dbx[2cm] \\
  \ArrowBetweenLines*[\Downarrow]
   h(x) & = 0
\end{alignat}
\end{sourcedisplay}


\section{Switch dead space}
\label{sec:switch-dead-space}

The standard \markup[nomk,env]{equation} environment has the feature
that if the text before it is short and the formula likewise, then the
drop between the preceding text and the formula will be
\markup[length,nomk]{abovedisplayshortskip} instead of the usual
\markup[length,nomk]{abovedisplayskip}. The macros from the
\markup[nomk,sty]{amsmath} package does not have this feature (except
\markup[nomk,env]{equation*}).
\begin{sourcedisplay}
text
\[ a=b \]
text
\begin{align*}
  a=b
\end{align*}
\end{sourcedisplay}
The macro \markup{SwapDeadSpace} can simulate this feature
\begin{sourcedisplay}
text
\[ a=b \]
text
\begin{align*}
  \SwapDeadSpace
  a=b
\end{align*}
\end{sourcedisplay}

\section{Left alignment}
\label{sec:left-alignment}

In \cite{swanson}, Ellen Swanson presents some recommendations
regarding how to arrange displayed formulas. One thing she recommends
is alignment to the left and with all subsequent lines indented by
2\,em. 
\begin{align*}
\malign[-2pt]{2} 
  &\dbx[5cm]=\dbx[4cm]\\
  &\qquad{}=\dbx[6cm]\\
  &\qquad{}=\dbx[5cm]\,.
\end{align*}
or
\begin{align*}
\malign[-2pt]{2}
  &\dbx[8cm]\\
  &\qquad{}=\dbx[4cm]\\
  &\qquad{}=\dbx[6cm]\,.
\end{align*}
or
\begin{align*}
\malign[-2pt]{2} 
  &\dbx[5cm]=\dbx[4cm]\\
  &\qquad{}+\dbx[6cm]\\
  &\qquad{}\times\dbx[5cm]\,.
\end{align*}
and
\begin{align*}
\malign[-2pt]{2}
  &\dbx[8cm]\\
  &\qquad{}-\dbx[4cm]\\
  &\qquad{}\otimes\dbx[6cm]\,.
\end{align*}
But having to do all those indentations by hand quickly becomes quite
dull. Instead, align everything to the left, and pull back the first
line. This is what the following macro does.
\begin{syntax}
  \markup{PullBack}\oarg{number}
\end{syntax}
The optional argument is a number (without unit, em will be used)
indicating the amount of indentation. 2\,em is the default. Now simply
use \markup[nomk]{PullBack} instead of the >>\texttt{\&}<< on the
first line.
\begin{sourcedisplay}
\begin{align*}
  \PullBack f(x) + g(x) + \dbx[4cm] \\
  & = \dbx[5cm] \\
  & = \dbx[5cm] 
\end{align*}
\end{sourcedisplay}
The optional argument is usually used whenever the alignment is moved
to the right of the equal signs.
\begin{sourcedisplay}
\begin{align*}
  \PullBack[3] f(x) + g(x) + \dbx[4cm] \\
   ={} & \dbx[5cm] \\
   & + \dbx[5cm] 
\end{align*}
\end{sourcedisplay}

\section{Alignment with material encased in delimiters on different lines}
\label{sec:alignm-with-mater}

Swanson also recommends that if one has material encased with
delimiters and the delimiters are on different lines, then if space
permits, the material should be indented such that the relationship is
evident. Usually we would use a \markup[nomk]{phantom} to do this,
such as in the next example.
\begin{sourcedisplay}
\begin{align*}
  \dbx[5mm]&= \dbx[5mm]\bigl[{} \dbx[3cm]\\
   &\phantom{=\dbx[5mm]\bigl[{}}
   \times \dbx[3cm]{}\\
   &\phantom{=\dbx[5mm]\bigl[{}}
   - \dbx[3cm]{}\bigr]\\
   &=\dbx[3cm]
\end{align*}
\end{sourcedisplay}
The problem with this is that it gets tedious and prone to human
error. How about instead maintaining a stack of material determining
the indentation together with tools to reset, add to and pop the
stack. For this you can use the following macros
\begin{syntax}
  \markup{MathIndent}
  \markup{SetMathIndent}\marg{math code}
  \markup{AddtoMathIndent}\marg{math code}
  \markup{PopMathIndent}
  \markup{PopMathIndent*}
\end{syntax}
\markup[nomk]{MathIndent} is used to set a space corresponding to the
current indentation saved on the stack. \markup[nomk]{SetMthIndent}
takes its argument and saves it on the stack, calculates the current
math indent length and ends by typesetting the given argument, i.e. no
need to copy anything. Similarly the \markup[nomk]{AddtoMathIndent}
adds it argument to the stack and adds the length of it to the saved
math indent. So instead of copying code, now we simply encase it with
either \markup[nomk]{SetMathIndent} (for the initialisation) or
\markup[nomk]{AddtoMathIndent}. \markup[nomk]{PopMathIndent} is
similar to \markup[nomk]{MathIndent}, in that it sets a blank space
corresponding to the contents of the stack after we have popped off
the top item. \markup[nomk]{PopMathIndent*} pops the stack but does
\emph{not} set any space.


Now, an illustrative example might be in order:
\begin{Sourcedisplay}
\begin{align*}
\dbx ={} & \SetMathIndent{\dbx[1cm] \Bigl[} \dbx[6cm]  \\
   & \MathIndent   + \dbx[7cm]  \\
   & \MathIndent 
   \AddtoMathIndent{{} + \dbx \Bigl\{}
   \AddtoMathIndent{\dbx[2cm] + \Bigl(} \dbx[4cm] \\
   & 
   \MathIndent + \dbx[4cm] \Bigr) \\
   & \PopMathIndent + \dbx[6cm] \Bigr\} \\
   & \PopMathIndent + \dbx[6cm] \Bigr]
\end{align*}
\end{Sourcedisplay}
Notice the dual use of \markup[nomk]{AddtoMathIndent} such that we can
return to the indentation set by the >>\texttt{\{}<<.

Of course, non-balanced \markup[nomk]{left}--\markup[nomk]{right}
constructions may not be used.

\bibliographystyle{plainnat}
\bibliography{package_doc}



\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% TeX-source-specials-mode: t
%%% TeX-PDF-mode: nil
%%% End: 

