diff options
author | Karl Berry <karl@freefriends.org> | 2007-05-19 16:06:11 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-05-19 16:06:11 +0000 |
commit | c11a0850e29ea8d9ffdb5696efc582fad8e57793 (patch) | |
tree | 300bd861c8a6e10ac06031fd70f8abd1ba073efd /Master/texmf-dist/doc/latex/dlfltxb/dlfltxbcodetips.tex | |
parent | 71199f0d5b9772184cc792bfe50790505a6180cb (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/doc/latex/dlfltxb/dlfltxbcodetips.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/dlfltxb/dlfltxbcodetips.tex | 478 |
1 files changed, 478 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/dlfltxb/dlfltxbcodetips.tex b/Master/texmf-dist/doc/latex/dlfltxb/dlfltxbcodetips.tex new file mode 100644 index 00000000000..78527b70039 --- /dev/null +++ b/Master/texmf-dist/doc/latex/dlfltxb/dlfltxbcodetips.tex @@ -0,0 +1,478 @@ +\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: + |