diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:55:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:55:10 +0000 |
commit | d870543a9c715eda0961ee5bd648431276886d33 (patch) | |
tree | f0df317b9247d9e5f5be03e855f369089fee89c8 /Master/texmf-dist/source/latex/miller/miller.dtx | |
parent | a8a3c9df9e509bf99f4224ae9ed08b448e7a38c6 (diff) |
trunk/Master/texmf-dist/source/latex/miller
git-svn-id: svn://tug.org/texlive/trunk@389 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/miller/miller.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/miller/miller.dtx | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/miller/miller.dtx b/Master/texmf-dist/source/latex/miller/miller.dtx new file mode 100644 index 00000000000..c2ce678c5e0 --- /dev/null +++ b/Master/texmf-dist/source/latex/miller/miller.dtx @@ -0,0 +1,267 @@ +% \iffalse meta comment +% File: miller.dtx Copyright (C) 2003, 2004 Harald Harders, Bj"orn Pedersen +% \fi +% +% \iffalse +%<*driver> +\documentclass{ltxdoc} +\usepackage[T1]{fontenc} +\title{The \texttt{miller} package} +\author{Harald Harders (\texttt{h.harders@tu-bs.de})\\ + Bj\"orn Pedersen (\texttt{bjoern.pedersen@frm2.tum.de})} +\date{Version \fileversion, \filedate} +\EnableCrossrefs +\CodelineIndex +\DoNotIndex{\def,\edef,\let,\newcommand,\newenvironment,\newcounter} +\DoNotIndex{\setcounter,\space} +\CodelineNumbered +\RecordChanges +\CheckSum{159} +\IfFileExists{miller-v.tex}{% + \input{miller-v.tex} + \GetFileInfo{miller-v.tex} +}{% + \PackageError{miller}{File miller-v.tex not found, + please\MessageBreak + run `latex miller.ins' first}{No additional help}% + \def\fileversion{\textbf{??}}% + \def\filedate{\textbf{??}}% +} +\usepackage{miller} +\begin{document} + \DocInput{miller.dtx} +\end{document} +%</driver> +% \fi +% +% \changes{1.0}{2003/04/11}{Changed \cs{millerminus} from \cs{bar} to +% \cs{overline} due to numbers with more than one digit (HH, BP).}% +% \changes{1.0}{2003/04/11}{Added support to arguments with space and +% numbers with more than one digit (HH, BP).}% +% \changes{1.1}{2004/04/07}{Bugfix: In some cases, arguments without +% space have been parsed incorrectly (HH).}% +% \changes{1.1}{2004/04/07}{Bugfix: Detect isolated minus sign in +% argument with spaces (HH).}% +% \changes{1.1}{2004/04/07}{Add a documentation (HH).}% +% +% \maketitle +% \begin{abstract} +% \noindent +% Typeset miller indices, e.g., $\langle 1\bar20\rangle$, used in +% material sicence with an easy syntax. +% Minus signs are printed as bar above the corresponding number. +% \end{abstract} +% +% \tableofcontents +% +% \section*{Copyright} +% Copyright 2003, 2004 Harald Harders, Bj\"orn Pedersen. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1.3 of the License, or any later version. +% +% \section{The user interface} +% +% To use this package place +%\begin{verbatim} +%\usepackage{miller} +%\end{verbatim} +% in the preamble of your document. +% +% \DescribeMacro{\hkl}% +% The \cs{hkl} macro can be used in different ways. +% Its argument is surrounded by the parantheses that you want to +% appear in the document. +% If the argument contains spaces, they are taken as delimiters +% between the different components of the hkl vector. +% If no spaces are given, each component has exactly one digit (plus +% eventually a preceeding minus sign). +% The usage is shown with some examples. +% +% \medskip\noindent +% Specify one direction in space: +%\begin{verbatim} +%\hkl[1 12 3], \hkl[-1 0 -12], \hkl[1 11 -2 0]\\ +%\hkl[123], \hkl[-10-2], \hkl[11-20] +%\end{verbatim} +%\begin{quote} +%\hkl[1 12 3], \hkl[-1 0 -12], \hkl[1 11 -2 0]\\ +%\hkl[123], \hkl[-10-2], \hkl[11-20] +%\end{quote} +% Specify all equal directions in space: +%\begin{verbatim} +%\hkl<1 12 3>, \hkl<-1 0 -12>, \hkl<1 11 -2 0>\\ +%\hkl<123>, \hkl<-10-2>, \hkl<11-20> +%\end{verbatim} +%\begin{quote} +%\hkl<1 12 3>, \hkl<-1 0 -12>, \hkl<1 11 -2 0>\\ +%\hkl<123>, \hkl<-10-2>, \hkl<11-20> +%\end{quote} +% Specify one plane in space: +%\begin{verbatim} +%\hkl(1 12 3), \hkl(-1 0 -12), \hkl(1 11 -2 0)\\ +%\hkl(123), \hkl(-10-2), \hkl(11-20) +%\end{verbatim} +%\begin{quote} +%\hkl(1 12 3), \hkl(-1 0 -12), \hkl(1 11 -2 0)\\ +%\hkl(123), \hkl(-10-2), \hkl(11-20) +%\end{quote} +% Specify all equal planes in space: +%\begin{verbatim} +%\hkl{1 12 3}, \hkl{-1 0 -12}, \hkl{1 11 -2 0}\\ +%\hkl{123}, \hkl{-10-2}, \hkl{11-20} +%\end{verbatim} +%\begin{quote} +%\hkl{1 12 3}, \hkl{-1 0 -12}, \hkl{1 11 -2 0}\\ +%\hkl{123}, \hkl{-10-2}, \hkl{11-20} +%\end{quote} +% +% The first version (with spaces) allows indices with more than one +% digit, while the second one is shorter in the source code. +% +% The symbol used for the bar is changeable by redefining the +% \cs{millerminus} command, e.g., +%\begin{verbatim} +%\usepackage{ushort} +%\ushortCreate:\overline{oshort} +%\renewcommand\millerminus{\oshort} +%\end{verbatim} +% +% The space between numbers can be changed, e.g., +%\begin{verbatim} +%\hkl<123>\\ +%\renewcommand\millerskip{\;}\hkl<123>\\ +%\renewcommand\millerskip{,\,}\hkl<123>\\ +%\renewcommand\millerskip{}\hkl<123> +%\end{verbatim} +%\begin{quote} +%\hkl<123>\\ +%\renewcommand\millerskip{\;}\hkl<123>\\ +%\renewcommand\millerskip{,\,}\hkl<123>\\ +%\renewcommand\millerskip{}\hkl<123> +%\end{quote} +% +% \StopEventually{\PrintChanges \PrintIndex} +% +% \section{The implementation} +% +% Heading of the package: +% \begin{macrocode} +%<package>\ProvidesPackage{miller} +%<version>\ProvidesFile{miller-v.tex} +%<package|version> [2004/09/20 v1.2 print miller indices] +%<*package> +% \end{macrocode} +% Define command for space between numbers. +% \begin{macrocode} +\newcommand*\millerskip{\,} +% \end{macrocode} +% Define the command for the minus. +% \begin{macrocode} +\newcommand*\millerminus{\overline} +% \end{macrocode} +% Check for space in argument. +% \begin{macrocode} +\def\@millerno#1 #2\@empty{% + \xdef\miller@secondarg{#2}% + \ifx\@empty\miller@secondarg + \@@@millerno#1#2\@empty\@empty\@empty + \else + \@@millerno#1 #2\@empty + \fi +}% +% \end{macrocode} +% Parse for minus sign. +% \begin{macrocode} +\def\@checkminus#1#2\@empty{% + \ifx-#1% + \begingroup + \edef\@tempa{#2}% + \edef\@tempb{}% + \ifx\@tempa\@tempb + \PackageError{miller}{% + \string\hkl\space command contains a single minus}{No entry of + the \string\hkl\space command may consist only of a minus.}% + #1% + \else + \millerminus{\vphantom{b}#2}% + \fi + \endgroup + \else + #1#2% + \fi +} +% \end{macrocode} +% Parse the argument (with spaces). +% \begin{macrocode} +\def\@@millerno#1 #2{% + \ifx\@empty#2% + \let\next\relax + \else% + \let\next\@@millerno + \fi% + \@checkminus#1\@empty + \ifx\@empty#2\else\millerskip\fi + \next #2% +} +% \end{macrocode} +% Parse the argument (without spaces). +% \begin{macrocode} +\def\@@@millerno#1#2#3{% + \ifx-#1 + \millerminus{\vphantom{b}#2}% + \def\miller@nextarg{#3}% + \ifx\@empty#3% + \let\next\relax + \@tempswafalse + \ifx-#2 \@tempswatrue\fi + \ifx\@empty#2 \@tempswatrue\fi + \if@tempswa + \PackageError{miller}{% + Last character of \string\hkl\space command is a minus}{The + last character may not be a minus.}% + \fi + \else% + \let\next\@@@millerno + \millerskip + \fi% + \else + #1% + \def\miller@nextarg{#2#3}% + \ifx\@empty#2% + \let\next\relax + \ifx-#1 + \PackageError{miller}{% + Last character of \string\hkl\space command is a minus}{The + last character may not be a minus.}% + \fi + \else% + \let\next\@@@millerno + \millerskip + \fi% + \fi + \expandafter\next\miller@nextarg +} +% \end{macrocode} +% Commands for the different types. +% \begin{macrocode} +\def\hkleckig[#1]{\ensuremath{[\@millerno#1 \@empty]}} +\def\hklrund(#1){\ensuremath{(\@millerno#1 \@empty)}} +\def\hklspitz<#1>{\ensuremath{\langle\@millerno#1 \@empty\rangle}} +\def\hklgeschweift#1{\ensuremath{\{\@millerno#1 \@empty\}}} +% \end{macrocode} +% \begin{macro}{\hkl} +% \changes{1.2}{2004/09/20}{Make \cs{hkl} robust}% +% The command itself. +% \begin{macrocode} +\DeclareRobustCommand*\hkl{% + \@ifnextchar[{\hkleckig}{% + \@ifnextchar({\hklrund}{% + \@ifnextchar<{\hklspitz}{\hklgeschweift}}}} +%</package> +% \end{macrocode} +% \end{macro} +% +% \Finale |