%% %% This is file `dnaseq.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% dnaseq.dtx (with options: `dnaseq') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from dnaseq.sty. %% %% For distribution of the original source see the terms %% for copying and modification in the file dnaseq.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% File: dnaseq.dtx Copyright (C) 2002 Bjoern Pedersen %% mailto:Bjoern.Pedersen@ch.tum.de %% This file may be distributed and used freely under %% the Latex Project Public License %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{dnaseq}[2002/05/20 v0.01 dna sequence setter] \RequirePackage{color} \def\DNAblock{10} \def\DNAreserve{0000}% für 4-stellige Zahlen %% %% registers /counters %% \newlength\bl@cklen \newlength\l@neln \newlength\t@mpln \newlength\ch@rwd \newcount{\blocks} %% %% calculate blocks per line %% \def\DNAc@lcline{% \settowidth{\ch@rwd}{A} \setlength{\bl@cklen}{\DNAblock\ch@rwd}% \settowidth{\t@mpln}{\DNAreserve} \setlength{\l@neln}{\textwidth} \addtolength{\l@neln}{-\t@mpln} \loop% \setlength{\t@mpln}{\blocks\bl@cklen} \addtolength{\t@mpln}{\blocks\ch@rwd} \ifdim\l@neln>\t@mpln\advance\blocks by 1 \repeat \advance\blocks by -1 \ifnum\blocks<1\errmessage{line too short for 1 block^^J}% \else\expandafter\message\expandafter{Blocks per line: \the\blocks^^J}\fi% } %% main user macro \def\DNA#1{% \def\@DNA@end{#1}\bgroup\ttfamily\DNAc@lcline \settoheight\dimen@{I}\advance\dimen@ by 1pt \edef\htst{\the\dimen@}% \def\struty{\rule[-.5pt]{\z@}{\htst}}% %% dnabase per line counter \count@=0 %% block counter \@tempcnta=0 %% total dnabase counter \@tempcntb=0 \fboxrule=0pt \fboxsep=0pt \noindent\phantom{\DNAreserve}\llap 1\ \@DNA } \def\@DNA@color{'} \def\@DNA@thecolor{white} \def\@DNA@setcolor#1{\def\@DNA@thecolor{#1}\@DNA} %% do the blocking/line breaking \def\@DNA#1{% %% insert a space after \DNAblock bases \ifnum\count@=\DNAblock\count@=0\ % \advance\@tempcnta by 1\fi \def\@DNA@cmp{#1}% %% check for end of sequence or color shift \ifx\@DNA@cmp\@DNA@end \let\next\egroup \else \ifx\@DNA@cmp\@DNA@color \let\next\@DNA@setcolor \else \advance\count@ by 1 \advance\@tempcntb by 1 %% line break after calculated number of blocks \ifnum\@tempcnta=\blocks \\ \hskip\z@\phantom{\DNAreserve}\llap {\the\@tempcntb}\ % \@tempcnta=0 \fi \colorbox{\@DNA@thecolor}{\struty#1}% \penalty0\let\next\@DNA \fi \fi \next } \endinput %% %% End of file `dnaseq.sty'.