texlive[69337] Master/texmf-dist: texshade (6jan24)

commits+karl at tug.org commits+karl at tug.org
Sun Jan 7 22:27:30 CET 2024


Revision: 69337
          https://tug.org/svn/texlive?view=revision&revision=69337
Author:   karl
Date:     2024-01-07 22:27:30 +0100 (Sun, 07 Jan 2024)
Log Message:
-----------
texshade (6jan24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/texshade/README
    trunk/Master/texmf-dist/doc/latex/texshade/texshade.pdf
    trunk/Master/texmf-dist/source/latex/texshade/texshade.dtx
    trunk/Master/texmf-dist/source/latex/texshade/texshade.ins
    trunk/Master/texmf-dist/tex/latex/texshade/texshade.sty

Modified: trunk/Master/texmf-dist/doc/latex/texshade/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/texshade/README	2024-01-07 21:27:13 UTC (rev 69336)
+++ trunk/Master/texmf-dist/doc/latex/texshade/README	2024-01-07 21:27:30 UTC (rev 69337)
@@ -1,4 +1,4 @@
-    TeXshade v1.26c
+    TeXshade v1.27
     >>
     >> A LaTeX package for setting nucleotide and peptide alignments.
     >>
@@ -26,7 +26,7 @@
     >> ding modes.  TeXshade  combines  highest  flexibility  and the
     >> habitual TeX output quality--with reasonable time expenditure.
     >>
-    Copyright (C)  1999 - 2023  Eric Beitz
+    Copyright (C)  1999 - 2024  Eric Beitz
 
 
 

Modified: trunk/Master/texmf-dist/doc/latex/texshade/texshade.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/texshade/texshade.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/texshade/texshade.dtx	2024-01-07 21:27:13 UTC (rev 69336)
+++ trunk/Master/texmf-dist/source/latex/texshade/texshade.dtx	2024-01-07 21:27:30 UTC (rev 69337)
@@ -10,7 +10,7 @@
 % `README.txt' for further information!
 % 
 %
-% Copyright (C) 1999-2023 Eric Beitz
+% Copyright (C) 1999-2024 Eric Beitz
 % 
 %    \fi
 %
@@ -422,8 +422,12 @@
 %      Corrections:  shading, tinting, emphasizing, lower casing, 
 %                     and framing of motifs now works with set domains.}
 %
+%    \changes{1.27}{2024-01-06}{%
+%      Introduction: a second full ruler with independent [top] and [bottom] 
+%      options, and the possibility to show ruler names.}
 %
 %
+%
 % \CharacterTable
 %  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
 %   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -461,7 +465,7 @@
 %            for further information, updates and on-line documentation 
 %            see my homepage at
 %            \texttt{www.pharmazie.uni-kiel.de/chem/Prof\_Beitz/biotex.html} }}
-%    \date{\small v1.26c; 2023/06/04\\[2pt]}
+%    \date{\small v1.27; 2024/01/06\\[2pt]}
 %    \maketitle
 %    \begin{abstract}
 %      Setting alignments of nucleotides and peptides for publication 
@@ -545,12 +549,23 @@
 %    
 %    \subsection{Version History}
 %    
-%    \textbf{v1.26(a-c)  2021/04/01 (2022/08/29-2023/06/04)}
+%    \textbf{v1.7  2024/01/06}
 %    \medskip
 %
+%    \emph{Introduction:}
+%     The possibility to show a second full ruler at the [top] or [bottom]
+%    was introduced plus the option to show ruler names by
+%     |\nameruler|. The |rulername| style can be adjusted using the
+%     common |setfamily| and |setsize| commands.
+%    \medskip
+%    \newpage
+%
+%    \textbf{v1.26(a/b/c)  2021/04/01 (2022/08/29, 2023/05/28, 2023/06/04)}
+%    \medskip
+%
 %    \emph{Corrections}:  Frames at line ends remain open to indicate
 %    continuity of the marked region, and |\par| line endings are now treated
-%    correctly.
+%    correctly. Motif labels were corrected.
 %
 %    \emph{Introductions:}
 %     Chimera command file export option for 'structure memes'
@@ -607,8 +622,8 @@
 %    sets of colors can be selected for different sequence blocks by 
 %    |\changeshadingcolors| (\ref{Lchangeshadingcolors}).
 %    \medskip
+%    \newpage
 %
-%
 %    \textbf{v1.21 2010/03/01}
 %    \medskip
 %
@@ -726,8 +741,8 @@
 %    |\setsize{featurenames}{large}| or
 %    |\featurestylenamesrm|.
 %    \bigskip
+%    \newpage
 %
-%
 %    \textbf{v1.16 2007/02/18}
 %    \medskip
 %    
@@ -896,7 +911,7 @@
 %    mode were switched (`|-|' in gaps; `|.|' at matching
 %    positions) in order to follow convention.
 %
-%    \emph{Introduction:} \TeXshade{} speaks spanish (|\spanishlanguage|).
+%    \emph{Introduction:} \TeXshade{} speaks Spanish (|\spanishlanguage|).
 %    Necessary translations were contributed by Mikel Ega\~na Aranguren.
 %    A new feature label style |helix| has been introduced.
 %    \bigskip
@@ -1015,7 +1030,7 @@
 %    can be activated by `|\numcount|', `|\alphacount|' and
 %    `|\Alphacount|'. All commands are described in \ref{structure}.
 %    \bigskip
-%        
+%    \newpage
 %
 %    \textbf{v1.1 1999/5/26}
 %    \medskip
@@ -1300,7 +1315,7 @@
 %    threshold is set to 50\%. Neither residue exceeds this percentage 
 %    but as a group of similars they do. 
 %    
-%    In grayscale printouts some colors of the following alignment may appear 
+%    In grayscale printouts, some colors of the following alignment may appear 
 %    undistinguishable. Don't worry if you usually use grayscale---all 
 %    colors/grays can be selected freely (see \ref{colors}).
 %    \medskip 
@@ -2619,12 +2634,12 @@
 %       \label{Lhideallmatchpositions}
 %       Since alignment positions where all residues match do not contain
 %       much information, those sites can be blanked out using
-%      Ê|\hideallmatchpositions|. The resulting break in the alignment is
+%      |\hideallmatchpositions|. The resulting break in the alignment is
 %       indicated by a gap and a vertical line. See the |\setdomain| 
 %       command (\ref{Lsetdomain}) 
 %       for further information on how to change the gap and ruler colors.  
 %       A single-stepped ruler is also recommended (\ref{Lshowruler}).
-%      Ê|\hideallmatchpositions| can be combined with |\setends| 
+%      |\hideallmatchpositions| can be combined with |\setends| 
 %       (\ref{Lsetends}).
 %   
 %    
@@ -3269,24 +3284,30 @@
 %     Another possibility to label sequence positions is to switch
 %    on a ruler on the top or at the bottom of the sequence block
 %    using \label{ruler}
-%    |\showruler[|\meta{color}|]{|\meta{position}|}{|\meta{seqref}|}|. 
+%    |\showruler[|\meta{color}|]{|\meta{top/bottom}|}{|\meta{seqref}|}|. 
 %    The residue ruler of one sequence \meta{seqref} or the consensus 
 %    (declare `|consensus|' as \meta{seqref}) can be 
-%    displayed at \meta{position} |top| or |bottom|.
-%    The ruler is hidden with  |\hideruler|. The steps between two
-%    numbers are set by |\rulersteps{|\meta{number}|}|. If the steps
+%    displayed at |top| or |bottom|.
+%    A ruler is hidden with  |\hideruler[|\meta{top/bottom}|]|. When
+%    |[|\meta{top/bottom}|]| is omitted, both rulers are addressed. The steps 
+%    between two numbers are set by
+%     |\rulersteps[|\meta{top/bottom}|]{|\meta{number}|}|. If the steps
 %    are set to be very close ($< 4$) or when every position is numbered, the
 %    numbering is automatically rotated by 90$^\circ$. Using |\rotateruler|
-%    and |\unrotateruler| this can be done and undone manually. 
-%    In order to change the
+%    and |\unrotateruler| this can be done and undone manually, again 
+%    with the |[|\meta{top/bottom}|]| option. In order to change the
 %    ruler color use the optional parameter or the command 
-%    |\rulercolor{|\meta{color}|}|. Also, the label and its color at individual 
-%    ruler positions can be changed by the user to a string using 
-%    |\namerulerpos{|\meta{number}|}{|\meta{text}|[|\meta{color}|]}| 
-%    (see example on p.\ \pageref{ras}). Finally, to adjust the distance
+%    |\rulercolor[|\meta{top/bottom}|]{|\meta{color}|}|. Also, the label and its color 
+%    at individual ruler numbers can be changed by the user to a string using 
+%    |\namerulerpos[|\meta{top/bottom}|]{|\meta{number}|}{|\meta{text}|[|\meta{color}|]}| 
+%    (see example on p.\ \pageref{ras}). To adjust the distance
 %    between the ruler and the top or bottom sequence row use
-%    |\rulerspace{|\meta{length}|}|, e.\,g. |\rulerspace{1mm}|.
-%    
+%    |\rulerspace[|\meta{top/bottom}|]{|\meta{length}|}|, e.\,g. |\rulerspace{1mm}|.
+%    Finally, ruler names can be displayed using
+%    |\nameruler[|\meta{top/bottom}|]{|\meta{name}|}| with |\setfamily|, 
+%    |\setsize|, and |\rulernamecolor[|\meta{top/bottom}|]{|\meta{color}|}|
+%    for further adjustments. 
+%
 %    \label{Lgapchar}\label{Lgaprule}
 %    \label{Lgapcolors}\label{gapchar}
 %    Further, the symbol which is displayed in sequence gaps is freely 
@@ -4752,6 +4773,7 @@
 %    residues (|\residuesrm| etc.),
 %    hideblock labels (|hideblockrm| etc.),
 %    rulers (|\rulerrm| etc.), and
+%    rulernames (|\rulernamerm| etc.), and
 %    legend texts (|legendrm| etc.).
 %     
 %    
@@ -6031,25 +6053,31 @@
 %    \quad|\showruler[|\meta{color}|]{|\meta{top/bottom}|}{|\meta{seqref}|}|
 %       \hfill[\pageref{Lshowruler}]
 %    
-%    \quad|\rulersteps{|\meta{number}|}|
+%    \quad|\rulersteps[|\meta{top/bottom}|]{|\meta{number}|}|
 %       \hfill[\pageref{Lrulersteps}]
 %    
-%    \quad|\rulercolor{|\meta{color}|}|
+%    \quad|\rulercolor[|\meta{top/bottom}|]{|\meta{color}|}|
 %       \hfill[\pageref{Lrulercolor}]
 %    
-%    \quad|\hideruler|
+%    \quad|\hideruler[|\meta{top/bottom}|]|
 %       \hfill[\pageref{Lhideruler}]
 %    
-%    \quad|\rotateruler|
+%    \quad|\rotateruler[|\meta{top/bottom}|]|
 %       \hfill[\pageref{Lrotateruler}]
 %    
-%    \quad|\unrotateruler|
+%    \quad|\unrotateruler[|\meta{top/bottom}|]|
 %       \hfill[\pageref{Lunrotateruler}]
 %
-%    \quad|\namerulerpos{|\meta{number}|}{|\meta{text}|[|\meta{color}|]}|
+%    \quad|\namerulerpos[|\meta{top/bottom}|]{|\meta{number}|}{|\meta{text}|[|\meta{color}|]}|
 %       \hfill[\pageref{Lnamerulerpos}]
 %    
-%    \quad|\rulerspace{|\meta{length}|}|
+%    \quad|\nameruler[|\meta{top/bottom}|]{|\meta{name}|]}|
+%       \hfill[\pageref{Lnamerulerpos}]
+%    
+%    \quad|\rulernamecolor[|\meta{top/bottom}|]{|\meta{color}|]}|
+%       \hfill[\pageref{Lnamerulerpos}]
+%    
+%    \quad|\rulerspace[|\meta{top/bottom}|]{|\meta{length}|}|
 %       \hfill[\pageref{Lrulerspace}]
 %    
 %    \quad|\gapchar{|\meta{symbol}|}| 
@@ -6614,8 +6642,8 @@
 %    \begin{macrocode}
 %<*texshade>
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{texshade}[2023/06/04 LaTeX TeXshade (v1.26c)]
-\message{Package `texshade', Version 1.26c of 2023/06/04.}
+\ProvidesPackage{texshade}[2023/06/04 LaTeX TeXshade (v1.27)]
+\message{Package `texshade', Version 1.27 of 2024/01/06.}
 
 \PassOptionsToPackage{dvips}{color}
 \PassOptionsToPackage{dvips}{graphicx}
@@ -6755,6 +6783,10 @@
 \def\resm at tch{upper}   \def\res at llm@tch{upper}
 \def\tr at ns{translate}  \def\gr at ydef@ult{GrayDefault}
 \xdef\par@{\string\par}
+\xdef\rule at bottom{-1}\xdef\rule at top{-1}
+\xdef\rulername at top{} \xdef\rulername at bottom{}
+\xdef\rulernamecolor at top{n} \xdef\rulernamecolor at bottom{n}
+\xdef\rulername at family{n} \xdef\rulername at size{n}
 \expandafter\def\csname fg at textcolor/\endcsname{White}
 \expandafter\def\csname fg at color/\endcsname{White}
 \expandafter\def\csname func at style/\endcsname{\csname textup\endcsname}
@@ -9011,8 +9043,9 @@
       \expandafter\order at set\second@
    \ifnum\loopcount<\killseq at count \repeat
    \ifnum\cons at num>0 \xdef\cons at num{\csname @rd\cons at num\endcsname} \fi
-   \ifnum\rule at num>0 \xdef\rule at num{\csname @rd\rule at num\endcsname} \fi
-   \ifnum\divref@>0  \xdef\divref@{\csname @rd\divref@\endcsname} \fi
+   \ifnum\rule at num@top>0 \xdef\rule at num@top{\csname @rd\rule at num@top\endcsname} \fi
+   \ifnum\rule at num@bottom>0 \xdef\rule at num@bottom{\csname @rd\rule at num@bottom\endcsname} \fi
+    \ifnum\divref@>0  \xdef\divref@{\csname @rd\divref@\endcsname} \fi
    \loopcount=0
    \loop
       \advance\loopcount by 1
@@ -9288,12 +9321,14 @@
       \expandafter\xdef\csname res at count\the\loopcount\endcsname{%
             \csname res at count\the\innerloopcount\endcsname}
       \expandafter\xdef\csname hide at seq\the\innerloopcount\endcsname{kill}
-      \ifnum\loopcount=\rule at num \hideruler \fi
+      \ifnum\loopcount=\rule at num@top \hideruler[top] \fi
+      \ifnum\loopcount=\rule at num@bottom \hideruler[bottom] \fi
    \fi
    \expandafter\xdef\csname @rd\the\innerloopcount\endcsname{\the\loopcount}
    \advance\loopcount by 1
    \ifnum\loopcount>\killseq at count 
-      \ifnum\rule at num>0\xdef\rule at num{\csname @rd\rule at num\endcsname}\fi
+      \ifnum\rule at num@top>0\xdef\rule at num@top{\csname @rd\rule at num@top\endcsname}\fi
+      \ifnum\rule at num@bottom>0\xdef\rule at num@bottom{\csname @rd\rule at num@bottom\endcsname}\fi
       \ifnum\cons at num>0\xdef\cons at num{\csname @rd\cons at num\endcsname}\fi
    \else 
       \kill at seqnow
@@ -12667,7 +12702,11 @@
 \def\bbottomspace#1{\def\bb at sp@ce{#1}}
 \def\bbbottomspace#1{\def\bbb at sp@ce{#1}}
 \def\bbbbottomspace#1{\def\bbbb at sp@ce{#1}}
-\def\rulerspace#1{\def\ruler at sp@ce{#1}}
+\newcommand\rulerspace[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \def\ruler at sp@ce at top{#2}\def\ruler at sp@ce at bottom{#2}\fi
+   \xdef\second@{top} \ifx\first@\second@ \def\ruler at sp@ce at top{#2}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \def\ruler at sp@ce at bottom{#2}\fi
+}
 \def\fixblockspace{\fix at true}
 \def\flexblockspace{\fix at false}
 \def\nosepline{\def\seq at skip{\relax}}
@@ -13176,35 +13215,97 @@
 \def\hideleadinggaps{\sh at wg@psfalse}
 \def\showleadinggaps{\sh at wg@pstrue}
 \newcommand\showruler[3][n]{%
-   \xdef\first@{#1}
-   \ifx\first@\n@\else\xdef\ruler at fg{#1}\fi
+   \xdef\first@@{#1}
    \xdef\first@{consensus} \xdef\second@{#3}
    \xdef\third@{bottom}    \xdef\fourth@{#2}
-   \ifx\third@\fourth@ \xdef\rule at top{1}\else\xdef\rule at top{0}\fi
-   \ifx\first@\second@ \xdef\rule at num{0}
+   \ifx\third@\fourth@
+      \xdef\rule at bottom{1}
+      \ifx\first@@\n@\else\xdef\ruler at fg@bottom{#1}\fi
+      \ifx\first@\second@ \xdef\rule at num@bottom{0}
+      \else
+        \xdef\first@{#3 @} \expandafter\check at letter\first@
+        \xdef\first@{#3}   \ifletter \get at name@number \fi
+        \ifnum\first@>\seq at count
+        \else
+           \ifnum\first@>0
+              \xdef\rule at num@bottom{\first@}
+           \fi
+         \fi
+      \fi
    \else
-     \xdef\first@{#3 @} \expandafter\check at letter\first@
-     \xdef\first@{#3}   \ifletter \get at name@number \fi
-     \ifnum\first@>\seq at count
-     \else
-        \ifnum\first@>0
-           \xdef\rule at num{\first@}
-        \fi
+      \xdef\rule at top{1}
+      \ifx\first@@\n@\else\xdef\ruler at fg@top{#1}\fi
+      \ifx\first@\second@ \xdef\rule at num@top{0}
+      \else
+        \xdef\first@{#3 @} \expandafter\check at letter\first@
+        \xdef\first@{#3}   \ifletter \get at name@number \fi
+        \ifnum\first@>\seq at count
+        \else
+           \ifnum\first@>0
+              \xdef\rule at num@top{\first@}
+           \fi
+         \fi
       \fi
    \fi
-   \xdef\ruler@{}}
-\def\hideruler{\xdef\rule at num{-1}}
+   \xdef\topruler@{}\xdef\bottomruler@{}
+}
+\newcommand\hideruler[1][n]{
+   \xdef\first@{#1} \ifx\first@\n@
+      \xdef\rule at num@top{-1} \xdef\rule at top{0}
+      \xdef\rule at num@bottom{-1} \xdef\rule at bottom{0}
+   \fi
+   \xdef\second@{top} \ifx\first@\second@ 
+      \xdef\rule at num@top{-1}  \xdef\rule at top{0}
+   \fi
+   \xdef\second@{bottom} \ifx\first@\second@
+      \xdef\rule at num@bottom{-1} \xdef\rule at bottom{0}
+   \fi
+}
 \def\allowzero{\xdef\allow at zero{y}}
 \def\disallowzero{\xdef\allow at zero{n}}
-\def\rulersteps#1{%
-   \xdef\ruler at step{#1}
-   \ifnum#1<4 \xdef\ruler at rot{90}\fi
+\newcommand\rulersteps[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@
+      \xdef\ruler at step@top{#2} \ifnum#2<4 \xdef\ruler at rot@top{90}\fi
+      \xdef\ruler at step@bottom{#2} \ifnum#2<4 \xdef\ruler at rot@bottom{90}\fi
+   \fi
+   \xdef\second@{top} \ifx\first@\second@
+      \xdef\ruler at step@top{#2} \ifnum#2<4 \xdef\ruler at rot@top{90}\fi
+   \fi
+   \xdef\second@{bottom} \ifx\first@\second@
+      \xdef\ruler at step@bottom{#2} \ifnum#2<4 \xdef\ruler at rot@bottom{90}\fi
+   \fi
 }
-\def\rotateruler{\xdef\ruler at rot{90}}
-\def\unrotateruler{\xdef\ruler at rot{0}}
-\def\namerulerpos#1#2{%
-   \expandafter\xdef\csname alt at ruler#1\endcsname{#2}
+\newcommand\rotateruler[1][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\ruler at rot@top{90} \xdef\ruler at rot@bottom{90} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\ruler at rot@top{90}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\ruler at rot@bottom{90}\fi
 }
+\newcommand\unrotateruler[1][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\ruler at rot@top{0} \xdef\ruler at rot@bottom{0} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\ruler at rot@top{0}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\ruler at rot@bottom{0}\fi
+}
+\newcommand\namerulerpos[3][n]{%
+   \xdef\first@{#1}
+   \ifx\first@\n@
+      \expandafter\xdef\csname alt at ruler@top#2\endcsname{#3}
+      \expandafter\xdef\csname alt at ruler@bottom#2\endcsname{#3}
+   \fi
+   \xdef\second@{top}
+   \ifx\first@\second@ \expandafter\xdef\csname alt at ruler@top#2\endcsname{#3} \fi
+   \xdef\second@{bottom}
+   \ifx\first@\second@ \expandafter\xdef\csname alt at ruler@bottom#2\endcsname{#3} \fi
+}
+\newcommand\nameruler[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\rulername at top{#2} \xdef\rulername at bottom{#2} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\rulername at top{#2}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\rulername at bottom{#2}\fi
+}
+\newcommand\rulernamecolor[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\rulernamecolor at top{#2} \xdef\rulernamecolor at bottom{#2} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\rulernamecolor at top{#2}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\rulernamecolor at bottom{#2}\fi
+}
 \def\featurerule#1{\setlength\rule at thick{#1}}
 \def\orderseqs#1{%
    \def\order at loop{%
@@ -13281,6 +13382,9 @@
    \xdef\temp@{ruler}
    \ifx\first@\temp@ \xdef\ruler at family{\second@} 
    \else
+   \xdef\temp@{rulername}
+   \ifx\first@\temp@ \xdef\rulername at family{\second@}
+   \else
    \xdef\temp@{all}
    \ifx\first@\temp@
       \xdef\ftext at family{\third@}
@@ -13293,7 +13397,8 @@
       \xdef\legend at family{\third@}
       \xdef\label at family{\third@}
       \xdef\ruler at family{\second@}
-   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+      \xdef\rulername at family{\second@}
+   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
    \fi
 }
 \def\setseries#1#2{%
@@ -13504,6 +13609,10 @@
    \ifx\first@\temp@
       \def\bottomruler at size{\csname #2\endcsname}
    \fi
+   \xdef\temp@{rulername}
+   \ifx\first@\temp@
+      \def\rulername at size{\csname #2\endcsname}
+   \fi
 }
 \def\setfont#1#2#3#4#5{%
    \setfamily{#1}{#2}\setseries{#1}{#3}
@@ -13673,6 +13782,19 @@
 \def\rulerLARGE       {\setsize{ruler}{LARGE}}
 \def\rulerhuge        {\setsize{ruler}{huge}}
 \def\rulerHuge        {\setsize{ruler}{Huge}}
+\def\rulernamerm{\setfamily{rulername}{rm}}
+\def\rulernamesf{\setfamily{rulername}{sf}}
+\def\rulernamett{\setfamily{rulername}{tt}}
+\def\rulernametiny        {\setsize{rulername}{tiny}}
+\def\rulernamescriptsize  {\setsize{rulername}{scriptsize}}
+\def\rulernamefootnotesize{\setsize{rulername}{footnotesize}}
+\def\rulernamesmall       {\setsize{rulername}{small}}
+\def\rulernamenormalsize  {\setsize{rulername}{normalsize}}
+\def\rulernamelarge       {\setsize{rulername}{large}}
+\def\rulernameLarge       {\setsize{rulername}{Large}}
+\def\rulernameLARGE       {\setsize{rulername}{LARGE}}
+\def\rulernamehuge        {\setsize{rulername}{huge}}
+\def\rulernameHuge        {\setsize{rulername}{Huge}}
 \def\funcshadingstyle#1#2#3#4#5{%
   \xdef\temp@{nomatch} \xdef\first@{#1}
   \ifx\temp@\first@
@@ -13877,7 +13999,11 @@
    \fi
 }
 \def\legendcolor#1{\xdef\legend at fg{#1}}
-\def\rulercolor#1{\xdef\ruler at fg{#1}}
+\newcommand\rulercolor[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\ruler at fg@top{#2} \xdef\ruler at fg@bottom{#2} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\ruler at fg@top{#2}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\ruler at fg@bottom{#2}\fi
+}
 \def\molweight#1#2{%
    \xdef\temp@{Da}%
    \xdef\second@{#2}%
@@ -17053,17 +17179,27 @@
 %      \advance\pos at count by 1
 }
 
-\def\add at to@rule at tens{%
-    \advance\innerloopcount by \ruler at step\relax
-    \ifnum\innerloopcount=0 
-          \ifx\allow at zero\n@ \innerloopcount=\ruler at step \fi
+\def\add at to@rule at tens@top{%
+    \advance\innerloopcount by \ruler at step@top\relax
+    \ifnum\innerloopcount=0
+          \ifx\allow at zero\n@ \innerloopcount=\ruler at step@top \fi
     \fi
-    \expandafter\ifnum\csname res at count\rule at num\endcsname>\innerloopcount \add at to@rule at tens
+    \expandafter\ifnum\csname res at count\rule at num@top\endcsname>\innerloopcount \add at to@rule at tens@top
     \else
-       \xdef\rule at tens{\the\innerloopcount}
+       \xdef\rule at tens@top{\the\innerloopcount}
     \fi
 }
 
+\def\add at to@rule at tens@bottom{%
+    \advance\innerloopcount by \ruler at step@bottom\relax
+    \ifnum\innerloopcount=0
+          \ifx\allow at zero\n@ \innerloopcount=\ruler at step@bottom \fi
+    \fi
+    \expandafter\ifnum\csname res at count\rule at num@bottom\endcsname>\innerloopcount \add at to@rule at tens@bottom
+    \else
+       \xdef\rule at tens@bottom{\the\innerloopcount}
+    \fi
+}
 
 \def\c at nsensus{%
  \ifnum\pos at count>\res at perline
@@ -17111,26 +17247,46 @@
              \expandafter\xdef\csname res at count\the\loopcount\endcsname{\the\res at count}
              \ifnum\loopcount=\chimera at seqnum \xdef\chimera at stack{\chimera at stack \the\res at count,} \fi
              \ifnum\loopcount=\exp at rt@num \xdef\sixth@{\the\res at count}\xdef\seventh@{y}\fi
-             \ifnum\loopcount=\rule at num\relax 
-              \expandafter\ifnum\csname res at count\rule at num\endcsname>\rule at tens 
-                 \innerloopcount=\rule at tens \add at to@rule at tens
-              \fi  
-              \expandafter\ifnum\csname res at count\rule at num\endcsname=\rule at tens
-                \expandafter\ifx\csname alt at ruler\rule at tens\endcsname\relax
-                   \xdef\temp@{\rule at tens}
+             \ifnum\loopcount=\rule at num@top\relax
+              \expandafter\ifnum\csname res at count\rule at num@top\endcsname>\rule at tens@top
+                 \innerloopcount=\rule at tens@top \add at to@rule at tens@top
+              \fi
+               \expandafter\ifnum\csname res at count\rule at num@top\endcsname=\rule at tens@top
+                \expandafter\ifx\csname alt at ruler@top\rule at tens@top\endcsname\relax
+                   \xdef\temp@{\rule at tens@top}
                 \else
-                   \xdef\temp@{\csname alt at ruler\rule at tens\endcsname}
+                   \xdef\temp@{\csname alt at ruler@top\rule at tens@top\endcsname}
                 \fi
-                \xdef\ruler@{\ruler@ !<\temp@>}
+                \xdef\topruler@{\topruler@ !<\temp@>}
               \else
-                \xdef\ruler@{\ruler@ -}
+                \xdef\topruler@{\topruler@ -}
               \fi
-              \xdef\temp@{\csname res at count\rule at num\endcsname}
-              \expandafter\ifx\csname alt at ruler\temp@\endcsname\relax
+              \xdef\temp@{\csname res at count\rule at num@top\endcsname}
+              \expandafter\ifx\csname alt at ruler@top\temp@\endcsname\relax
               \else
-                \expandafter\xdef\csname alt at ruler\temp@\endcsname{\temp@}
+                \expandafter\xdef\csname alt at ruler@top\temp@\endcsname{\temp@}
               \fi
              \fi
+             \ifnum\loopcount=\rule at num@bottom\relax
+              \expandafter\ifnum\csname res at count\rule at num@bottom\endcsname>\rule at tens@bottom
+                 \innerloopcount=\rule at tens@bottom \add at to@rule at tens@bottom
+              \fi
+               \expandafter\ifnum\csname res at count\rule at num@bottom\endcsname=\rule at tens@bottom
+                \expandafter\ifx\csname alt at ruler@bottom\rule at tens@bottom\endcsname\relax
+                   \xdef\temp@{\rule at tens@bottom}
+                \else
+                   \xdef\temp@{\csname alt at ruler@bottom\rule at tens@bottom\endcsname}
+                \fi
+                \xdef\bottomruler@{\bottomruler@ !<\temp@>}
+              \else
+                \xdef\bottomruler@{\bottomruler@ -}
+              \fi
+              \xdef\temp@{\csname res at count\rule at num@bottom\endcsname}
+              \expandafter\ifx\csname alt at ruler@bottom\temp@\endcsname\relax
+              \else
+                \expandafter\xdef\csname alt at ruler@bottom\temp@\endcsname{\temp@}
+              \fi
+             \fi
              \ifx\collect at valtop\yes
              \ifnum\v at lseqtop=\loopcount
                 \xdef\v at ltop{\v at ltop,\csname \ffourth at top\first@\endcsname}
@@ -17252,7 +17408,8 @@
           \expandafter\xdef\csname ch at rge\the\loopcount\endcsname{%
                            \the\innerloopcount}
          \else
-          \ifnum\loopcount=\rule at num \xdef\ruler@{\ruler@ -} \fi
+          \ifnum\loopcount=\rule at num@top \xdef\topruler@{\topruler@ -} \fi
+          \ifnum\loopcount=\rule at num@bottom \xdef\bottomruler@{\bottomruler@ -} \fi
           \ifnum\loopcount=\chimera at seqnum \xdef\chimera at stack{\chimera at stack &,} \fi
           \ifx\collect at valtop\yes
           \ifnum\v at lseqtop=\loopcount
@@ -17425,31 +17582,56 @@
        \ifcase\match at case \unc at nserved \or \c at nserved \or \allm at tch \else \functi at nal \fi
       \fi
      \fi
-     \ifnum\rule at num=0 
-         \ifx\g at p\y@  
-           \xdef\ruler@{\ruler@ -}
+     \ifnum\rule at num@top=0
+         \ifx\g at p\y@
+           \xdef\topruler@{\topruler@ -}
          \else
-           \ifnum\cons at count=\rule at tens
-              \expandafter\ifx\csname alt at ruler\rule at tens\endcsname\relax
-                 \xdef\temp@{\rule at tens}
+           \ifnum\cons at count=\rule at tens@top
+              \expandafter\ifx\csname alt at ruler@top\rule at tens@top\endcsname\relax
+                 \xdef\temp@{\rule at tens@top}
               \else
-                 \xdef\temp@{\csname alt at ruler\rule at tens\endcsname}
+                 \xdef\temp@{\csname alt at ruler@top\rule at tens@top\endcsname}
               \fi
-              \xdef\ruler@{\ruler@ !<\temp@>}
-              \innerloopcount=\rule at tens \advance\innerloopcount by \ruler at step\relax
-              \ifnum\innerloopcount=0 
-                 \ifx\allow at zero\n@ \innerloopcount=\ruler at step \fi
+              \xdef\topruler@{\topruler@ !<\temp@>}
+              \innerloopcount=\rule at tens@top \advance\innerloopcount by \ruler at step@top\relax
+              \ifnum\innerloopcount=0
+                 \ifx\allow at zero\n@ \innerloopcount=\ruler at step@top \fi
               \fi
-              \xdef\rule at tens{\the\innerloopcount}
+              \xdef\rule at tens@top{\the\innerloopcount}
            \else
-              \xdef\ruler@{\ruler@ -}
-           \fi 
-           \expandafter\ifx\csname alt at ruler\the\cons at count\endcsname\relax
+              \xdef\topruler@{\topruler@ -}
+           \fi
+           \expandafter\ifx\csname alt at ruler@top\the\cons at count\endcsname\relax
            \else
-             \expandafter\xdef\csname alt at ruler\the\cons at count\endcsname{\the\cons at count}
+             \expandafter\xdef\csname alt at ruler@top\the\cons at count\endcsname{\the\cons at count}
            \fi
          \fi
-     \fi 
+     \fi
+     \ifnum\rule at num@bottom=0
+         \ifx\g at p\y@
+           \xdef\bottomruler@{\bottomruler@ -}
+         \else
+           \ifnum\cons at count=\rule at tens@bottom
+              \expandafter\ifx\csname alt at ruler@bottom\rule at tens@bottom\endcsname\relax
+                 \xdef\temp@{\rule at tens@bottom}
+              \else
+                 \xdef\temp@{\csname alt at ruler@bottom\rule at tens@bottom\endcsname}
+              \fi
+              \xdef\bottomruler@{\bottomruler@ !<\temp@>}
+              \innerloopcount=\rule at tens@bottom \advance\innerloopcount by \ruler at step@bottom\relax
+              \ifnum\innerloopcount=0
+                 \ifx\allow at zero\n@ \innerloopcount=\ruler at step@bottom \fi
+              \fi
+              \xdef\rule at tens@bottom{\the\innerloopcount}
+           \else
+              \xdef\bottomruler@{\bottomruler@ -}
+           \fi
+           \expandafter\ifx\csname alt at ruler@bottom\the\cons at count\endcsname\relax
+           \else
+             \expandafter\xdef\csname alt at ruler@bottom\the\cons at count\endcsname{\the\cons at count}
+           \fi
+         \fi
+     \fi
     \expandafter\ifnum\csname res at count\start at seq\endcsname<\end at num\relax 
       \c at nsensus 
     \else 
@@ -17498,13 +17680,20 @@
               \expandafter\xdef\csname dom at num\the\loopcount\endcsname{\temp@}
            \fi %%%%%%%%%%%*****
            \expandafter\xdef\csname res at count\the\loopcount\endcsname{\the\res at count}
-           \ifnum\rule at num=\loopcount
+           \ifnum\rule at num@top=\loopcount
               \temp at count=\csname res at count\the\loopcount\endcsname
-              \advance\temp at count by \ruler at step  
-              \divide\temp at count by \ruler at step
-              \multiply\temp at count by \ruler at step
-              \xdef\rule at tens{\the\temp at count}  
+              \advance\temp at count by \ruler at step@top
+              \divide\temp at count by \ruler at step@top
+              \multiply\temp at count by \ruler at step@top
+              \xdef\rule at tens@top{\the\temp at count}
            \fi
+           \ifnum\rule at num@bottom=\loopcount
+              \temp at count=\csname res at count\the\loopcount\endcsname
+              \advance\temp at count by \ruler at step@bottom
+              \divide\temp at count by \ruler at step@bottom
+              \multiply\temp at count by \ruler at step@bottom
+              \xdef\rule at tens@bottom{\the\temp at count}
+           \fi
        \fi
        \ifnum\loopcount<\seq at count \c at unt\fi}
 \def\count at first{%
@@ -18414,67 +18603,69 @@
    \xdef\first@{#2@}%
    \xdef\fill at char{#1[,]&}%
    \expandafter\opt at color\fill at char%
-   \ifx\f at color\comm@\xdef\f at color{\ruler at fg}\fi%
-   \ifcase\rule at top
-     \ifnum\ruler at rot=0 %
+   \ifnum\top at bot=0
+     \ifx\f at color\comm@\xdef\f at color{\ruler at fg@top}\fi
+     \ifnum\ruler at rot@top=0%
       \xdef\temp@{tt}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\mathtt{\fourth@}}{\textcolor{\ruler at fg}{.}}}}%
+         \def\third@{\tt\bottomruler at size\vbox{\hbox to \ruler at width{\hss\fourth@\hss}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\textcolor{\ruler at fg@top}{\hss.\hss}}}}%
       \else
       \xdef\temp@{sf}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\mathsf{\fourth@}}{\textcolor{\ruler at fg}{.}}}}%
+         \def\third@{\sf\bottomruler at size\vbox{\hbox to \ruler at width{\hss\fourth@\hss}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\textcolor{\ruler at fg@top}{\hss.\hss}}}}%
       \else
       \xdef\temp@{rm}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\mathrm{\fourth@}}{\textcolor{\ruler at fg}{.}}}}%
+         \def\third@{\rm\bottomruler at size\vbox{\hbox to \ruler at width{\hss\fourth@\hss}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\textcolor{\ruler at fg@top}{\hss.\hss}}}}%
       \fi\fi\fi
      \else
       \xdef\temp@{tt}%
       \ifx\ruler at family\temp@%
          \def\third@{\tt\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg@top}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
       \else
       \xdef\temp@{sf}%
       \ifx\ruler at family\temp@%
          \def\third@{\sf\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg@top}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
       \else
       \xdef\temp@{rm}%
       \ifx\ruler at family\temp@%
          \def\third@{\rm\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg@top}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
       \fi\fi\fi
      \fi
-   \else
-     \ifnum\ruler at rot=0 %
+   \fi
+   \ifnum\top at bot=1
+     \ifx\f at color\comm@\xdef\f at color{\ruler at fg@bottom}\fi
+     \ifnum\ruler at rot@bottom=0%
       \xdef\temp@{tt}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg}{.}}{\mathtt{\fourth@}}}}%
+         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg@bottom}{.}}{\mathtt{\fourth@}}}}%
       \else
       \xdef\temp@{sf}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg}{.}}{\mathsf{\fourth@}}}}%
+         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg@bottom}{.}}{\mathsf{\fourth@}}}}%
       \else
       \xdef\temp@{rm}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg}{.}}{\mathrm{\fourth@}}}}%
+         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg@bottom}{.}}{\mathrm{\fourth@}}}}%
       \fi\fi\fi
      \else
       \xdef\temp@{tt}%
       \ifx\ruler at family\temp@%
          \def\third@{\tt\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg@bottom}{\ensuremath{\cdot}}}\end{rotopo}}%
       \else
       \xdef\temp@{sf}%
       \ifx\ruler at family\temp@%
          \def\third@{\sf\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg@bottom}{\ensuremath{\cdot}}}\end{rotopo}}%
       \else
       \xdef\temp@{rm}%
       \ifx\ruler at family\temp@%
          \def\third@{\rm\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg@bottom}{\ensuremath{\cdot}}}\end{rotopo}}%
       \fi\fi\fi
      \fi
    \fi}
@@ -18497,44 +18688,118 @@
    \fi}
 
 \def\put at ruler{%
-   \ifnames at right%
-        \ifnumbers at left%
-          \ifnumbers at right%
-            \xdef\ruler@{)\ruler@)<>}%
-          \else%
-            \xdef\ruler@{)\ruler@<>}%
-          \fi%
-        \else%
-            \xdef\ruler@{\ruler@)<>}%
-        \fi%
-   \else%
-        \ifnumbers at left%
-          \ifnumbers at right%
-            \xdef\ruler@{<>)\ruler@)}%
-          \else%
-            \xdef\ruler@{<>)\ruler@}%
-          \fi%
-        \else%
-            \xdef\ruler@{<>\ruler@)}%
-        \fi%
-   \fi%
+   \ifx\rulernamecolor at top\n@\xdef\rulernamecolor at top{\ruler at fg@top}\fi%
+   \ifx\rulernamecolor at bottom\n@\xdef\rulernamecolor at bottom{\ruler at fg@bottom}\fi%
+   \ifx\rulername at family\n@\xdef\rulername at family{\ruler at family}\fi%
+   \ifx\rulername at size\n@\def\rulername at size{\bottomruler at size}\fi%
    \xdef\first@{\ruler@ @}%
-   \ifnum\rule at top=1%
-      \vspace{\ruler at sp@ce}%
+   \ifnum\top at bot=1%
+      \vspace{\ruler at sp@ce at bottom}%
       \vspace{-\baselineskip}%
       \newline\hbox{}%
+      \ifnames at right%
+      \else
+       \ifnum\ruler at rot@bottom=0%
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\tt\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\sf\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\rm\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \fi\fi\fi%
+      \else%
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\tt\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\sf\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\rm\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \fi\fi\fi%
+       \fi%
+      \fi%
+      \ifnumbers at left\hbox to \number at width{\hss\kern1em}\fi%
    \fi%
-   \ifnames at right\else\def\@kern{\kern0em}\expandafter\put at name\first@\fi%
-   \ifnumbers at left\def\@kern{\kern1em}\expandafter\put at number\first@\fi%
-   \vspace{-0.25\baselineskip}%
-   \ifnum\rule at top=0%
-      \vspace{\ruler at sp@ce}%
+   \vspace{-0.4\baselineskip}%
+   \ifnum\top at bot=0%
+      \ifnum\ruler at rot@top=90 \vspace{1.4\baselineskip}\fi%
+      \vspace{-0.58\baselineskip}%
+      \newline\hbox{}%
+      \ifnames at right%
+      \else
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \vbox{\tt\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \vbox{\sf\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \vbox{\rm\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \fi\fi\fi%
+      \fi%
+      \ifnumbers at left\hbox to \number at width{\hss\kern1em}\fi%
+      \vspace{-0.2\baselineskip}%
+      \vspace{\ruler at sp@ce at top}%
    \fi%
-   \fontfamily{\ruler at family}%
-   \fontseries{m}%
-   \fontshape{n}%
-   \selectfont%
    \innerloopcount=1\relax\put at rulechar%
+   \ifnames at right%
+   \kern1em%
+   \ifnumbers at left\else\hbox to \number at width{\hss}\fi%
+      \ifnum\top at bot=1%
+       \ifnum\ruler at rot@bottom=0%
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\tt\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\sf\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\rm\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \fi\fi\fi%
+      \else%
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\tt\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\sf\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\rm\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \fi\fi\fi%
+       \fi%
+      \else
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \vbox{\tt\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \vbox{\sf\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \vbox{\rm\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \fi\fi\fi%
+      \fi%
+   \fi%
    \newline\hbox{}%
 }
 \def\get at firstfill#1#2&{\xdef\second@@{#1}\xdef\fill at char{#2&}}
@@ -20689,7 +20954,7 @@
    \else
       \iffix@\iftopfeature \vspace{\t at sp@ce}\newline\hbox{}\newline\hbox{}\fi\fi
    \fi
-   \ifnum\rule at num<0 \else \ifnum\rule at top=0 \loopcount=0 \put at ruler \fi\fi
+   \ifnum\rule at num@top<0 \else \ifnum\rule at top=1 \loopcount=0 \xdef\top at bot{0}\xdef\ruler@{\topruler@}\put at ruler\fi\fi
    \ifshow at logo\ifnum\logo at top=0
       \xdef\last@{\stack at sequencelogo @}%
       \ifx\logo at name@user\ampers at nd\xdef\logo at name{logo}\else\xdef\logo at name{\logo at name@user}\fi
@@ -20777,15 +21042,15 @@
       \ifx\sublogo at name@user\ampers at nd\xdef\logo at name{subfamily}\else\xdef\logo at name{\sublogo at name@user}\fi
       \put at logo%
    \fi\fi%
-   \ifnum\rule at num<0 %
+   \ifnum\rule at num@bottom<0 %
    \else%
-      \ifnum\rule at top=1 %
+      \ifnum\rule at bottom=1 %
          \loopcount=0\relax%
-         \ifnum\ruler at rot=0 %
+         \ifnum\ruler at rot@bottom=0 %
          \else \vspace{\ruler at width}\vspace{-1.75\baselineskip}\newline\hbox{}%
          \fi
-         \put at ruler%
-         \ifnum\ruler at rot=0 \vspace{0.25\baselineskip}\fi%
+         \xdef\top at bot{1}\xdef\ruler@{\bottomruler@}\put at ruler%
+         \ifnum\ruler at rot@bottom=0 \vspace{0.25\baselineskip}\fi%
       \fi%
    \fi%
    \xdef\fe at turep@s{bottom}%
@@ -20895,7 +21160,7 @@
       \fi
       \fi
    \fi
-   \xdef\consensus{} \xdef\ruler@{}
+   \xdef\consensus{} \xdef\topruler@{} \xdef\bottomruler@{} 
    \xdef\styleframe{}         
    \xdef\textfeaturetop{}     \xdef\textfeaturebottom{}
    \xdef\textfeaturettop{}    \xdef\textfeaturebbottom{}
@@ -21969,31 +22234,56 @@
          \xdef\start at num{\the\loopcount}
        \fi
       \fi
-      \ifnum\rule at num>0  
-         \loopcount=\csname res at count\rule at num\endcsname
-         \divide\loopcount by \ruler at step
-         \multiply\loopcount by \ruler at step
-         \ifnum\loopcount<0 
-            \ifnum\ruler at step<3
-               \advance\loopcount by \ruler at step 
+      \ifnum\rule at num@top>0
+         \loopcount=\csname res at count\rule at num@top\endcsname
+         \divide\loopcount by \ruler at step@top
+         \multiply\loopcount by \ruler at step@top
+         \ifnum\loopcount<0
+            \ifnum\ruler at step@top<3
+               \advance\loopcount by \ruler at step@top
             \fi
-         \else 
-            \advance\loopcount by \ruler at step 
+         \else
+            \advance\loopcount by \ruler at step@top
          \fi
-         \xdef\rule at tens{\the\loopcount} 
+         \xdef\rule at tens@top{\the\loopcount}
       \else
-         \loopcount=\cons at count  
-         \divide\loopcount by \ruler at step
-         \multiply\loopcount by \ruler at step
-         \ifnum\loopcount<0 
-            \ifnum\ruler at step<3
-               \advance\loopcount by \ruler at step 
+         \loopcount=\cons at count
+         \divide\loopcount by \ruler at step@top
+         \multiply\loopcount by \ruler at step@top
+         \ifnum\loopcount<0
+            \ifnum\ruler at step@top<3
+               \advance\loopcount by \ruler at step@top
             \fi
-         \else 
-            \advance\loopcount by \ruler at step 
+         \else
+            \advance\loopcount by \ruler at step@top
          \fi
-         \xdef\rule at tens{\the\loopcount}  
+         \xdef\rule at tens@top{\the\loopcount}
       \fi
+      \ifnum\rule at num@bottom>0
+         \loopcount=\csname res at count\rule at num@bottom\endcsname
+         \divide\loopcount by \ruler at step@bottom
+         \multiply\loopcount by \ruler at step@bottom
+         \ifnum\loopcount<0
+           \ifnum\ruler at step@bottom<3
+               \advance\loopcount by \ruler at step@bottom
+            \fi
+         \else
+            \advance\loopcount by \ruler at step@bottom
+         \fi
+         \xdef\rule at tens@bottom{\the\loopcount}
+      \else
+         \loopcount=\cons at count
+         \divide\loopcount by \ruler at step@bottom
+         \multiply\loopcount by \ruler at step@bottom
+         \ifnum\loopcount<0
+            \ifnum\ruler at step@bottom<3
+               \advance\loopcount by \ruler at step@bottom
+            \fi
+         \else
+            \advance\loopcount by \ruler at step@bottom
+         \fi
+         \xdef\rule at tens@bottom{\the\loopcount}
+      \fi
       \xdef\first@{top}
       \ifx\cap at pos\first@
          \xdef\@captype{figure}
@@ -22068,7 +22358,7 @@
 \xdef\allow at zero{n} \xdef\c at ns@shift{0}
 \regionalshadefalse\regionalemphfalse\regionallowerfalse\regionaltintfalse
 \frame at false\shading at false
-\xdef\ruler at rot{0}
+\xdef\ruler at rot@top{0} \xdef\ruler at rot@bottom{0}
 \topfeaturefalse    \bottomfeaturefalse
 \ttopfeaturefalse   \bbottomfeaturefalse
 \tttopfeaturefalse  \bbbottomfeaturefalse
@@ -22119,7 +22409,7 @@
 \xdef\ttt at sp@ce{0mm}         \xdef\tttt at sp@ce{0mm}
 \xdef\b at sp@ce{0mm}           \xdef\bb at sp@ce{0mm}
 \xdef\bbb at sp@ce{0mm}         \xdef\bbbb at sp@ce{0mm}
-\xdef\ruler at sp@ce{0mm}
+\xdef\ruler at sp@ce at top{0mm} \xdef\ruler at sp@ce at bottom{0mm}
 \xdef\seq at gap@num{0}        
 \xdef\h at ndalign{no}         \xdef\sep at space{0pt}
 \xdef\c at pshort{n}

Modified: trunk/Master/texmf-dist/source/latex/texshade/texshade.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/texshade/texshade.ins	2024-01-07 21:27:13 UTC (rev 69336)
+++ trunk/Master/texmf-dist/source/latex/texshade/texshade.ins	2024-01-07 21:27:30 UTC (rev 69337)
@@ -1,7 +1,7 @@
 %%
 %% docstrip install file for texshade.sty
 %%
-%% Copyright 1999-2023 Eric Beitz
+%% Copyright 1999-2024 Eric Beitz
 %%
 \def\batchfile{texshade.ins}
 
@@ -14,7 +14,7 @@
 
 LaTeX package for typesetting nucleotide and peptide alignments
 
-Copyright (C) 1999-2023 Eric Beitz
+Copyright (C) 1999-2024 Eric Beitz
 See the file README
 
 \endpreamble

Modified: trunk/Master/texmf-dist/tex/latex/texshade/texshade.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/texshade/texshade.sty	2024-01-07 21:27:13 UTC (rev 69336)
+++ trunk/Master/texmf-dist/tex/latex/texshade/texshade.sty	2024-01-07 21:27:30 UTC (rev 69337)
@@ -8,13 +8,13 @@
 %% 
 %% LaTeX package for typesetting nucleotide and peptide alignments
 %% 
-%% Copyright (C) 1999-2023 Eric Beitz
+%% Copyright (C) 1999-2024 Eric Beitz
 %% See the file README
 %% 
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{texshade}[2023/06/04 LaTeX TeXshade (v1.26c)]
-\message{Package `texshade', Version 1.26c of 2023/06/04.}
+\ProvidesPackage{texshade}[2023/06/04 LaTeX TeXshade (v1.27)]
+\message{Package `texshade', Version 1.27 of 2024/01/06.}
 
 \PassOptionsToPackage{dvips}{color}
 \PassOptionsToPackage{dvips}{graphicx}
@@ -154,6 +154,10 @@
 \def\resm at tch{upper}   \def\res at llm@tch{upper}
 \def\tr at ns{translate}  \def\gr at ydef@ult{GrayDefault}
 \xdef\par@{\string\par}
+\xdef\rule at bottom{-1}\xdef\rule at top{-1}
+\xdef\rulername at top{} \xdef\rulername at bottom{}
+\xdef\rulernamecolor at top{n} \xdef\rulernamecolor at bottom{n}
+\xdef\rulername at family{n} \xdef\rulername at size{n}
 \expandafter\def\csname fg at textcolor/\endcsname{White}
 \expandafter\def\csname fg at color/\endcsname{White}
 \expandafter\def\csname func at style/\endcsname{\csname textup\endcsname}
@@ -2401,8 +2405,9 @@
       \expandafter\order at set\second@
    \ifnum\loopcount<\killseq at count \repeat
    \ifnum\cons at num>0 \xdef\cons at num{\csname @rd\cons at num\endcsname} \fi
-   \ifnum\rule at num>0 \xdef\rule at num{\csname @rd\rule at num\endcsname} \fi
-   \ifnum\divref@>0  \xdef\divref@{\csname @rd\divref@\endcsname} \fi
+   \ifnum\rule at num@top>0 \xdef\rule at num@top{\csname @rd\rule at num@top\endcsname} \fi
+   \ifnum\rule at num@bottom>0 \xdef\rule at num@bottom{\csname @rd\rule at num@bottom\endcsname} \fi
+    \ifnum\divref@>0  \xdef\divref@{\csname @rd\divref@\endcsname} \fi
    \loopcount=0
    \loop
       \advance\loopcount by 1
@@ -2676,12 +2681,14 @@
       \expandafter\xdef\csname res at count\the\loopcount\endcsname{%
             \csname res at count\the\innerloopcount\endcsname}
       \expandafter\xdef\csname hide at seq\the\innerloopcount\endcsname{kill}
-      \ifnum\loopcount=\rule at num \hideruler \fi
+      \ifnum\loopcount=\rule at num@top \hideruler[top] \fi
+      \ifnum\loopcount=\rule at num@bottom \hideruler[bottom] \fi
    \fi
    \expandafter\xdef\csname @rd\the\innerloopcount\endcsname{\the\loopcount}
    \advance\loopcount by 1
    \ifnum\loopcount>\killseq at count
-      \ifnum\rule at num>0\xdef\rule at num{\csname @rd\rule at num\endcsname}\fi
+      \ifnum\rule at num@top>0\xdef\rule at num@top{\csname @rd\rule at num@top\endcsname}\fi
+      \ifnum\rule at num@bottom>0\xdef\rule at num@bottom{\csname @rd\rule at num@bottom\endcsname}\fi
       \ifnum\cons at num>0\xdef\cons at num{\csname @rd\cons at num\endcsname}\fi
    \else
       \kill at seqnow
@@ -6050,7 +6057,11 @@
 \def\bbottomspace#1{\def\bb at sp@ce{#1}}
 \def\bbbottomspace#1{\def\bbb at sp@ce{#1}}
 \def\bbbbottomspace#1{\def\bbbb at sp@ce{#1}}
-\def\rulerspace#1{\def\ruler at sp@ce{#1}}
+\newcommand\rulerspace[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \def\ruler at sp@ce at top{#2}\def\ruler at sp@ce at bottom{#2}\fi
+   \xdef\second@{top} \ifx\first@\second@ \def\ruler at sp@ce at top{#2}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \def\ruler at sp@ce at bottom{#2}\fi
+}
 \def\fixblockspace{\fix at true}
 \def\flexblockspace{\fix at false}
 \def\nosepline{\def\seq at skip{\relax}}
@@ -6559,35 +6570,97 @@
 \def\hideleadinggaps{\sh at wg@psfalse}
 \def\showleadinggaps{\sh at wg@pstrue}
 \newcommand\showruler[3][n]{%
-   \xdef\first@{#1}
-   \ifx\first@\n@\else\xdef\ruler at fg{#1}\fi
+   \xdef\first@@{#1}
    \xdef\first@{consensus} \xdef\second@{#3}
    \xdef\third@{bottom}    \xdef\fourth@{#2}
-   \ifx\third@\fourth@ \xdef\rule at top{1}\else\xdef\rule at top{0}\fi
-   \ifx\first@\second@ \xdef\rule at num{0}
+   \ifx\third@\fourth@
+      \xdef\rule at bottom{1}
+      \ifx\first@@\n@\else\xdef\ruler at fg@bottom{#1}\fi
+      \ifx\first@\second@ \xdef\rule at num@bottom{0}
+      \else
+        \xdef\first@{#3 @} \expandafter\check at letter\first@
+        \xdef\first@{#3}   \ifletter \get at name@number \fi
+        \ifnum\first@>\seq at count
+        \else
+           \ifnum\first@>0
+              \xdef\rule at num@bottom{\first@}
+           \fi
+         \fi
+      \fi
    \else
-     \xdef\first@{#3 @} \expandafter\check at letter\first@
-     \xdef\first@{#3}   \ifletter \get at name@number \fi
-     \ifnum\first@>\seq at count
-     \else
-        \ifnum\first@>0
-           \xdef\rule at num{\first@}
-        \fi
+      \xdef\rule at top{1}
+      \ifx\first@@\n@\else\xdef\ruler at fg@top{#1}\fi
+      \ifx\first@\second@ \xdef\rule at num@top{0}
+      \else
+        \xdef\first@{#3 @} \expandafter\check at letter\first@
+        \xdef\first@{#3}   \ifletter \get at name@number \fi
+        \ifnum\first@>\seq at count
+        \else
+           \ifnum\first@>0
+              \xdef\rule at num@top{\first@}
+           \fi
+         \fi
       \fi
    \fi
-   \xdef\ruler@{}}
-\def\hideruler{\xdef\rule at num{-1}}
+   \xdef\topruler@{}\xdef\bottomruler@{}
+}
+\newcommand\hideruler[1][n]{
+   \xdef\first@{#1} \ifx\first@\n@
+      \xdef\rule at num@top{-1} \xdef\rule at top{0}
+      \xdef\rule at num@bottom{-1} \xdef\rule at bottom{0}
+   \fi
+   \xdef\second@{top} \ifx\first@\second@
+      \xdef\rule at num@top{-1}  \xdef\rule at top{0}
+   \fi
+   \xdef\second@{bottom} \ifx\first@\second@
+      \xdef\rule at num@bottom{-1} \xdef\rule at bottom{0}
+   \fi
+}
 \def\allowzero{\xdef\allow at zero{y}}
 \def\disallowzero{\xdef\allow at zero{n}}
-\def\rulersteps#1{%
-   \xdef\ruler at step{#1}
-   \ifnum#1<4 \xdef\ruler at rot{90}\fi
+\newcommand\rulersteps[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@
+      \xdef\ruler at step@top{#2} \ifnum#2<4 \xdef\ruler at rot@top{90}\fi
+      \xdef\ruler at step@bottom{#2} \ifnum#2<4 \xdef\ruler at rot@bottom{90}\fi
+   \fi
+   \xdef\second@{top} \ifx\first@\second@
+      \xdef\ruler at step@top{#2} \ifnum#2<4 \xdef\ruler at rot@top{90}\fi
+   \fi
+   \xdef\second@{bottom} \ifx\first@\second@
+      \xdef\ruler at step@bottom{#2} \ifnum#2<4 \xdef\ruler at rot@bottom{90}\fi
+   \fi
 }
-\def\rotateruler{\xdef\ruler at rot{90}}
-\def\unrotateruler{\xdef\ruler at rot{0}}
-\def\namerulerpos#1#2{%
-   \expandafter\xdef\csname alt at ruler#1\endcsname{#2}
+\newcommand\rotateruler[1][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\ruler at rot@top{90} \xdef\ruler at rot@bottom{90} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\ruler at rot@top{90}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\ruler at rot@bottom{90}\fi
 }
+\newcommand\unrotateruler[1][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\ruler at rot@top{0} \xdef\ruler at rot@bottom{0} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\ruler at rot@top{0}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\ruler at rot@bottom{0}\fi
+}
+\newcommand\namerulerpos[3][n]{%
+   \xdef\first@{#1}
+   \ifx\first@\n@
+      \expandafter\xdef\csname alt at ruler@top#2\endcsname{#3}
+      \expandafter\xdef\csname alt at ruler@bottom#2\endcsname{#3}
+   \fi
+   \xdef\second@{top}
+   \ifx\first@\second@ \expandafter\xdef\csname alt at ruler@top#2\endcsname{#3} \fi
+   \xdef\second@{bottom}
+   \ifx\first@\second@ \expandafter\xdef\csname alt at ruler@bottom#2\endcsname{#3} \fi
+}
+\newcommand\nameruler[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\rulername at top{#2} \xdef\rulername at bottom{#2} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\rulername at top{#2}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\rulername at bottom{#2}\fi
+}
+\newcommand\rulernamecolor[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\rulernamecolor at top{#2} \xdef\rulernamecolor at bottom{#2} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\rulernamecolor at top{#2}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\rulernamecolor at bottom{#2}\fi
+}
 \def\featurerule#1{\setlength\rule at thick{#1}}
 \def\orderseqs#1{%
    \def\order at loop{%
@@ -6664,6 +6737,9 @@
    \xdef\temp@{ruler}
    \ifx\first@\temp@ \xdef\ruler at family{\second@}
    \else
+   \xdef\temp@{rulername}
+   \ifx\first@\temp@ \xdef\rulername at family{\second@}
+   \else
    \xdef\temp@{all}
    \ifx\first@\temp@
       \xdef\ftext at family{\third@}
@@ -6676,7 +6752,8 @@
       \xdef\legend at family{\third@}
       \xdef\label at family{\third@}
       \xdef\ruler at family{\second@}
-   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+      \xdef\rulername at family{\second@}
+   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
    \fi
 }
 \def\setseries#1#2{%
@@ -6887,6 +6964,10 @@
    \ifx\first@\temp@
       \def\bottomruler at size{\csname #2\endcsname}
    \fi
+   \xdef\temp@{rulername}
+   \ifx\first@\temp@
+      \def\rulername at size{\csname #2\endcsname}
+   \fi
 }
 \def\setfont#1#2#3#4#5{%
    \setfamily{#1}{#2}\setseries{#1}{#3}
@@ -7056,6 +7137,19 @@
 \def\rulerLARGE       {\setsize{ruler}{LARGE}}
 \def\rulerhuge        {\setsize{ruler}{huge}}
 \def\rulerHuge        {\setsize{ruler}{Huge}}
+\def\rulernamerm{\setfamily{rulername}{rm}}
+\def\rulernamesf{\setfamily{rulername}{sf}}
+\def\rulernamett{\setfamily{rulername}{tt}}
+\def\rulernametiny        {\setsize{rulername}{tiny}}
+\def\rulernamescriptsize  {\setsize{rulername}{scriptsize}}
+\def\rulernamefootnotesize{\setsize{rulername}{footnotesize}}
+\def\rulernamesmall       {\setsize{rulername}{small}}
+\def\rulernamenormalsize  {\setsize{rulername}{normalsize}}
+\def\rulernamelarge       {\setsize{rulername}{large}}
+\def\rulernameLarge       {\setsize{rulername}{Large}}
+\def\rulernameLARGE       {\setsize{rulername}{LARGE}}
+\def\rulernamehuge        {\setsize{rulername}{huge}}
+\def\rulernameHuge        {\setsize{rulername}{Huge}}
 \def\funcshadingstyle#1#2#3#4#5{%
   \xdef\temp@{nomatch} \xdef\first@{#1}
   \ifx\temp@\first@
@@ -7260,7 +7354,11 @@
    \fi
 }
 \def\legendcolor#1{\xdef\legend at fg{#1}}
-\def\rulercolor#1{\xdef\ruler at fg{#1}}
+\newcommand\rulercolor[2][n]{
+   \xdef\first@{#1} \ifx\first@\n@ \xdef\ruler at fg@top{#2} \xdef\ruler at fg@bottom{#2} \fi
+   \xdef\second@{top} \ifx\first@\second@ \xdef\ruler at fg@top{#2}\fi
+   \xdef\second@{bottom} \ifx\first@\second@ \xdef\ruler at fg@bottom{#2}\fi
+}
 \def\molweight#1#2{%
    \xdef\temp@{Da}%
    \xdef\second@{#2}%
@@ -10423,17 +10521,28 @@
       \ifnum\loopcount<\seq at count \repeat
 }
 
-\def\add at to@rule at tens{%
-    \advance\innerloopcount by \ruler at step\relax
+\def\add at to@rule at tens@top{%
+    \advance\innerloopcount by \ruler at step@top\relax
     \ifnum\innerloopcount=0
-          \ifx\allow at zero\n@ \innerloopcount=\ruler at step \fi
+          \ifx\allow at zero\n@ \innerloopcount=\ruler at step@top \fi
     \fi
-    \expandafter\ifnum\csname res at count\rule at num\endcsname>\innerloopcount \add at to@rule at tens
+    \expandafter\ifnum\csname res at count\rule at num@top\endcsname>\innerloopcount \add at to@rule at tens@top
     \else
-       \xdef\rule at tens{\the\innerloopcount}
+       \xdef\rule at tens@top{\the\innerloopcount}
     \fi
 }
 
+\def\add at to@rule at tens@bottom{%
+    \advance\innerloopcount by \ruler at step@bottom\relax
+    \ifnum\innerloopcount=0
+          \ifx\allow at zero\n@ \innerloopcount=\ruler at step@bottom \fi
+    \fi
+    \expandafter\ifnum\csname res at count\rule at num@bottom\endcsname>\innerloopcount \add at to@rule at tens@bottom
+    \else
+       \xdef\rule at tens@bottom{\the\innerloopcount}
+    \fi
+}
+
 \def\c at nsensus{%
  \ifnum\pos at count>\res at perline
     \else
@@ -10480,26 +10589,46 @@
              \expandafter\xdef\csname res at count\the\loopcount\endcsname{\the\res at count}
              \ifnum\loopcount=\chimera at seqnum \xdef\chimera at stack{\chimera at stack \the\res at count,} \fi
              \ifnum\loopcount=\exp at rt@num \xdef\sixth@{\the\res at count}\xdef\seventh@{y}\fi
-             \ifnum\loopcount=\rule at num\relax
-              \expandafter\ifnum\csname res at count\rule at num\endcsname>\rule at tens
-                 \innerloopcount=\rule at tens \add at to@rule at tens
+             \ifnum\loopcount=\rule at num@top\relax
+              \expandafter\ifnum\csname res at count\rule at num@top\endcsname>\rule at tens@top
+                 \innerloopcount=\rule at tens@top \add at to@rule at tens@top
               \fi
-              \expandafter\ifnum\csname res at count\rule at num\endcsname=\rule at tens
-                \expandafter\ifx\csname alt at ruler\rule at tens\endcsname\relax
-                   \xdef\temp@{\rule at tens}
+               \expandafter\ifnum\csname res at count\rule at num@top\endcsname=\rule at tens@top
+                \expandafter\ifx\csname alt at ruler@top\rule at tens@top\endcsname\relax
+                   \xdef\temp@{\rule at tens@top}
                 \else
-                   \xdef\temp@{\csname alt at ruler\rule at tens\endcsname}
+                   \xdef\temp@{\csname alt at ruler@top\rule at tens@top\endcsname}
                 \fi
-                \xdef\ruler@{\ruler@ !<\temp@>}
+                \xdef\topruler@{\topruler@ !<\temp@>}
               \else
-                \xdef\ruler@{\ruler@ -}
+                \xdef\topruler@{\topruler@ -}
               \fi
-              \xdef\temp@{\csname res at count\rule at num\endcsname}
-              \expandafter\ifx\csname alt at ruler\temp@\endcsname\relax
+              \xdef\temp@{\csname res at count\rule at num@top\endcsname}
+              \expandafter\ifx\csname alt at ruler@top\temp@\endcsname\relax
               \else
-                \expandafter\xdef\csname alt at ruler\temp@\endcsname{\temp@}
+                \expandafter\xdef\csname alt at ruler@top\temp@\endcsname{\temp@}
               \fi
              \fi
+             \ifnum\loopcount=\rule at num@bottom\relax
+              \expandafter\ifnum\csname res at count\rule at num@bottom\endcsname>\rule at tens@bottom
+                 \innerloopcount=\rule at tens@bottom \add at to@rule at tens@bottom
+              \fi
+               \expandafter\ifnum\csname res at count\rule at num@bottom\endcsname=\rule at tens@bottom
+                \expandafter\ifx\csname alt at ruler@bottom\rule at tens@bottom\endcsname\relax
+                   \xdef\temp@{\rule at tens@bottom}
+                \else
+                   \xdef\temp@{\csname alt at ruler@bottom\rule at tens@bottom\endcsname}
+                \fi
+                \xdef\bottomruler@{\bottomruler@ !<\temp@>}
+              \else
+                \xdef\bottomruler@{\bottomruler@ -}
+              \fi
+              \xdef\temp@{\csname res at count\rule at num@bottom\endcsname}
+              \expandafter\ifx\csname alt at ruler@bottom\temp@\endcsname\relax
+              \else
+                \expandafter\xdef\csname alt at ruler@bottom\temp@\endcsname{\temp@}
+              \fi
+             \fi
              \ifx\collect at valtop\yes
              \ifnum\v at lseqtop=\loopcount
                 \xdef\v at ltop{\v at ltop,\csname \ffourth at top\first@\endcsname}
@@ -10621,7 +10750,8 @@
           \expandafter\xdef\csname ch at rge\the\loopcount\endcsname{%
                            \the\innerloopcount}
          \else
-          \ifnum\loopcount=\rule at num \xdef\ruler@{\ruler@ -} \fi
+          \ifnum\loopcount=\rule at num@top \xdef\topruler@{\topruler@ -} \fi
+          \ifnum\loopcount=\rule at num@bottom \xdef\bottomruler@{\bottomruler@ -} \fi
           \ifnum\loopcount=\chimera at seqnum \xdef\chimera at stack{\chimera at stack &,} \fi
           \ifx\collect at valtop\yes
           \ifnum\v at lseqtop=\loopcount
@@ -10794,31 +10924,56 @@
        \ifcase\match at case \unc at nserved \or \c at nserved \or \allm at tch \else \functi at nal \fi
       \fi
      \fi
-     \ifnum\rule at num=0
+     \ifnum\rule at num@top=0
          \ifx\g at p\y@
-           \xdef\ruler@{\ruler@ -}
+           \xdef\topruler@{\topruler@ -}
          \else
-           \ifnum\cons at count=\rule at tens
-              \expandafter\ifx\csname alt at ruler\rule at tens\endcsname\relax
-                 \xdef\temp@{\rule at tens}
+           \ifnum\cons at count=\rule at tens@top
+              \expandafter\ifx\csname alt at ruler@top\rule at tens@top\endcsname\relax
+                 \xdef\temp@{\rule at tens@top}
               \else
-                 \xdef\temp@{\csname alt at ruler\rule at tens\endcsname}
+                 \xdef\temp@{\csname alt at ruler@top\rule at tens@top\endcsname}
               \fi
-              \xdef\ruler@{\ruler@ !<\temp@>}
-              \innerloopcount=\rule at tens \advance\innerloopcount by \ruler at step\relax
+              \xdef\topruler@{\topruler@ !<\temp@>}
+              \innerloopcount=\rule at tens@top \advance\innerloopcount by \ruler at step@top\relax
               \ifnum\innerloopcount=0
-                 \ifx\allow at zero\n@ \innerloopcount=\ruler at step \fi
+                 \ifx\allow at zero\n@ \innerloopcount=\ruler at step@top \fi
               \fi
-              \xdef\rule at tens{\the\innerloopcount}
+              \xdef\rule at tens@top{\the\innerloopcount}
            \else
-              \xdef\ruler@{\ruler@ -}
+              \xdef\topruler@{\topruler@ -}
            \fi
-           \expandafter\ifx\csname alt at ruler\the\cons at count\endcsname\relax
+           \expandafter\ifx\csname alt at ruler@top\the\cons at count\endcsname\relax
            \else
-             \expandafter\xdef\csname alt at ruler\the\cons at count\endcsname{\the\cons at count}
+             \expandafter\xdef\csname alt at ruler@top\the\cons at count\endcsname{\the\cons at count}
            \fi
          \fi
      \fi
+     \ifnum\rule at num@bottom=0
+         \ifx\g at p\y@
+           \xdef\bottomruler@{\bottomruler@ -}
+         \else
+           \ifnum\cons at count=\rule at tens@bottom
+              \expandafter\ifx\csname alt at ruler@bottom\rule at tens@bottom\endcsname\relax
+                 \xdef\temp@{\rule at tens@bottom}
+              \else
+                 \xdef\temp@{\csname alt at ruler@bottom\rule at tens@bottom\endcsname}
+              \fi
+              \xdef\bottomruler@{\bottomruler@ !<\temp@>}
+              \innerloopcount=\rule at tens@bottom \advance\innerloopcount by \ruler at step@bottom\relax
+              \ifnum\innerloopcount=0
+                 \ifx\allow at zero\n@ \innerloopcount=\ruler at step@bottom \fi
+              \fi
+              \xdef\rule at tens@bottom{\the\innerloopcount}
+           \else
+              \xdef\bottomruler@{\bottomruler@ -}
+           \fi
+           \expandafter\ifx\csname alt at ruler@bottom\the\cons at count\endcsname\relax
+           \else
+             \expandafter\xdef\csname alt at ruler@bottom\the\cons at count\endcsname{\the\cons at count}
+           \fi
+         \fi
+     \fi
     \expandafter\ifnum\csname res at count\start at seq\endcsname<\end at num\relax
       \c at nsensus
     \else
@@ -10867,13 +11022,20 @@
               \expandafter\xdef\csname dom at num\the\loopcount\endcsname{\temp@}
            \fi %%%%%%%%%%%*****
            \expandafter\xdef\csname res at count\the\loopcount\endcsname{\the\res at count}
-           \ifnum\rule at num=\loopcount
+           \ifnum\rule at num@top=\loopcount
               \temp at count=\csname res at count\the\loopcount\endcsname
-              \advance\temp at count by \ruler at step
-              \divide\temp at count by \ruler at step
-              \multiply\temp at count by \ruler at step
-              \xdef\rule at tens{\the\temp at count}
+              \advance\temp at count by \ruler at step@top
+              \divide\temp at count by \ruler at step@top
+              \multiply\temp at count by \ruler at step@top
+              \xdef\rule at tens@top{\the\temp at count}
            \fi
+           \ifnum\rule at num@bottom=\loopcount
+              \temp at count=\csname res at count\the\loopcount\endcsname
+              \advance\temp at count by \ruler at step@bottom
+              \divide\temp at count by \ruler at step@bottom
+              \multiply\temp at count by \ruler at step@bottom
+              \xdef\rule at tens@bottom{\the\temp at count}
+           \fi
        \fi
        \ifnum\loopcount<\seq at count \c at unt\fi}
 \def\count at first{%
@@ -11783,67 +11945,69 @@
    \xdef\first@{#2@}%
    \xdef\fill at char{#1[,]&}%
    \expandafter\opt at color\fill at char%
-   \ifx\f at color\comm@\xdef\f at color{\ruler at fg}\fi%
-   \ifcase\rule at top
-     \ifnum\ruler at rot=0 %
+   \ifnum\top at bot=0
+     \ifx\f at color\comm@\xdef\f at color{\ruler at fg@top}\fi
+     \ifnum\ruler at rot@top=0%
       \xdef\temp@{tt}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\mathtt{\fourth@}}{\textcolor{\ruler at fg}{.}}}}%
+         \def\third@{\tt\bottomruler at size\vbox{\hbox to \ruler at width{\hss\fourth@\hss}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\textcolor{\ruler at fg@top}{\hss.\hss}}}}%
       \else
       \xdef\temp@{sf}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\mathsf{\fourth@}}{\textcolor{\ruler at fg}{.}}}}%
+         \def\third@{\sf\bottomruler at size\vbox{\hbox to \ruler at width{\hss\fourth@\hss}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\textcolor{\ruler at fg@top}{\hss.\hss}}}}%
       \else
       \xdef\temp@{rm}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\mathrm{\fourth@}}{\textcolor{\ruler at fg}{.}}}}%
+         \def\third@{\rm\bottomruler at size\vbox{\hbox to \ruler at width{\hss\fourth@\hss}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\textcolor{\ruler at fg@top}{\hss.\hss}}}}%
       \fi\fi\fi
      \else
       \xdef\temp@{tt}%
       \ifx\ruler at family\temp@%
          \def\third@{\tt\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg@top}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
       \else
       \xdef\temp@{sf}%
       \ifx\ruler at family\temp@%
          \def\third@{\sf\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg@top}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
       \else
       \xdef\temp@{rm}%
       \ifx\ruler at family\temp@%
          \def\third@{\rm\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\,\textcolor{\ruler at fg@top}{\ensuremath{\cdot}}\,\fourth@\hss}\end{rotopo}}%
       \fi\fi\fi
      \fi
-   \else
-     \ifnum\ruler at rot=0 %
+   \fi
+   \ifnum\top at bot=1
+     \ifx\f at color\comm@\xdef\f at color{\ruler at fg@bottom}\fi
+     \ifnum\ruler at rot@bottom=0%
       \xdef\temp@{tt}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg}{.}}{\mathtt{\fourth@}}}}%
+         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg@bottom}{.}}{\mathtt{\fourth@}}}}%
       \else
       \xdef\temp@{sf}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg}{.}}{\mathsf{\fourth@}}}}%
+         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg@bottom}{.}}{\mathsf{\fourth@}}}}%
       \else
       \xdef\temp@{rm}%
       \ifx\ruler at family\temp@%
-         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg}{.}}{\mathrm{\fourth@}}}}%
+         \def\third@{\bottomruler at size\ensuremath{\,\stackrel{\textcolor{\ruler at fg@bottom}{.}}{\mathrm{\fourth@}}}}%
       \fi\fi\fi
      \else
       \xdef\temp@{tt}%
       \ifx\ruler at family\temp@%
          \def\third@{\tt\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg@bottom}{\ensuremath{\cdot}}}\end{rotopo}}%
       \else
       \xdef\temp@{sf}%
       \ifx\ruler at family\temp@%
          \def\third@{\sf\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg@bottom}{\ensuremath{\cdot}}}\end{rotopo}}%
       \else
       \xdef\temp@{rm}%
       \ifx\ruler at family\temp@%
          \def\third@{\rm\bottomruler at size\,\,\,\,%
-           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg}{\ensuremath{\cdot}}}\end{rotopo}}%
+           \begin{rotopo}{90}\hbox to \ruler at width{\hss\fourth@\,\textcolor{\ruler at fg@bottom}{\ensuremath{\cdot}}}\end{rotopo}}%
       \fi\fi\fi
      \fi
    \fi}
@@ -11866,44 +12030,118 @@
    \fi}
 
 \def\put at ruler{%
-   \ifnames at right%
-        \ifnumbers at left%
-          \ifnumbers at right%
-            \xdef\ruler@{)\ruler@)<>}%
-          \else%
-            \xdef\ruler@{)\ruler@<>}%
-          \fi%
-        \else%
-            \xdef\ruler@{\ruler@)<>}%
-        \fi%
-   \else%
-        \ifnumbers at left%
-          \ifnumbers at right%
-            \xdef\ruler@{<>)\ruler@)}%
-          \else%
-            \xdef\ruler@{<>)\ruler@}%
-          \fi%
-        \else%
-            \xdef\ruler@{<>\ruler@)}%
-        \fi%
-   \fi%
+   \ifx\rulernamecolor at top\n@\xdef\rulernamecolor at top{\ruler at fg@top}\fi%
+   \ifx\rulernamecolor at bottom\n@\xdef\rulernamecolor at bottom{\ruler at fg@bottom}\fi%
+   \ifx\rulername at family\n@\xdef\rulername at family{\ruler at family}\fi%
+   \ifx\rulername at size\n@\def\rulername at size{\bottomruler at size}\fi%
    \xdef\first@{\ruler@ @}%
-   \ifnum\rule at top=1%
-      \vspace{\ruler at sp@ce}%
+   \ifnum\top at bot=1%
+      \vspace{\ruler at sp@ce at bottom}%
       \vspace{-\baselineskip}%
       \newline\hbox{}%
+      \ifnames at right%
+      \else
+       \ifnum\ruler at rot@bottom=0%
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\tt\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\sf\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\rm\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \fi\fi\fi%
+      \else%
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\tt\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\sf\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\rm\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \fi\fi\fi%
+       \fi%
+      \fi%
+      \ifnumbers at left\hbox to \number at width{\hss\kern1em}\fi%
    \fi%
-   \ifnames at right\else\def\@kern{\kern0em}\expandafter\put at name\first@\fi%
-   \ifnumbers at left\def\@kern{\kern1em}\expandafter\put at number\first@\fi%
-   \vspace{-0.25\baselineskip}%
-   \ifnum\rule at top=0%
-      \vspace{\ruler at sp@ce}%
+   \vspace{-0.4\baselineskip}%
+   \ifnum\top at bot=0%
+      \ifnum\ruler at rot@top=90 \vspace{1.4\baselineskip}\fi%
+      \vspace{-0.58\baselineskip}%
+      \newline\hbox{}%
+      \ifnames at right%
+      \else
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \vbox{\tt\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \vbox{\sf\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \vbox{\rm\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \fi\fi\fi%
+      \fi%
+      \ifnumbers at left\hbox to \number at width{\hss\kern1em}\fi%
+      \vspace{-0.2\baselineskip}%
+      \vspace{\ruler at sp@ce at top}%
    \fi%
-   \fontfamily{\ruler at family}%
-   \fontseries{m}%
-   \fontshape{n}%
-   \selectfont%
    \innerloopcount=1\relax\put at rulechar%
+   \ifnames at right%
+   \kern1em%
+   \ifnumbers at left\else\hbox to \number at width{\hss}\fi%
+      \ifnum\top at bot=1%
+       \ifnum\ruler at rot@bottom=0%
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\tt\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\sf\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\rm\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}%
+         \fi\fi\fi%
+      \else%
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\tt\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\sf\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \hbox to \name at width{\raisebox{0.6\baselineskip}{\rm\rulername at size\textcolor{\rulernamecolor at bottom}{\rulername at bottom\hss}}}%
+         \fi\fi\fi%
+       \fi%
+      \else
+         \xdef\temp@{tt}%
+         \ifx\rulername at family\temp@%
+            \vbox{\tt\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \else
+         \xdef\temp@{sf}%
+         \ifx\rulername at family\temp@%
+            \vbox{\sf\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \else
+         \xdef\temp@{rm}%
+         \ifx\rulername at family\temp@%
+            \vbox{\rm\rulername at size\hbox to \name at width{\textcolor{\rulernamecolor at top}{\rulername at top\hss}}\vspace{-0.75\baselineskip}\hbox to \ruler at width{\hss}}%
+         \fi\fi\fi%
+      \fi%
+   \fi%
    \newline\hbox{}%
 }
 \def\get at firstfill#1#2&{\xdef\second@@{#1}\xdef\fill at char{#2&}}
@@ -13979,7 +14217,7 @@
    \else
       \iffix@\iftopfeature \vspace{\t at sp@ce}\newline\hbox{}\newline\hbox{}\fi\fi
    \fi
-   \ifnum\rule at num<0 \else \ifnum\rule at top=0 \loopcount=0 \put at ruler \fi\fi
+   \ifnum\rule at num@top<0 \else \ifnum\rule at top=1 \loopcount=0 \xdef\top at bot{0}\xdef\ruler@{\topruler@}\put at ruler\fi\fi
    \ifshow at logo\ifnum\logo at top=0
       \xdef\last@{\stack at sequencelogo @}%
       \ifx\logo at name@user\ampers at nd\xdef\logo at name{logo}\else\xdef\logo at name{\logo at name@user}\fi
@@ -14067,15 +14305,15 @@
       \ifx\sublogo at name@user\ampers at nd\xdef\logo at name{subfamily}\else\xdef\logo at name{\sublogo at name@user}\fi
       \put at logo%
    \fi\fi%
-   \ifnum\rule at num<0 %
+   \ifnum\rule at num@bottom<0 %
    \else%
-      \ifnum\rule at top=1 %
+      \ifnum\rule at bottom=1 %
          \loopcount=0\relax%
-         \ifnum\ruler at rot=0 %
+         \ifnum\ruler at rot@bottom=0 %
          \else \vspace{\ruler at width}\vspace{-1.75\baselineskip}\newline\hbox{}%
          \fi
-         \put at ruler%
-         \ifnum\ruler at rot=0 \vspace{0.25\baselineskip}\fi%
+         \xdef\top at bot{1}\xdef\ruler@{\bottomruler@}\put at ruler%
+         \ifnum\ruler at rot@bottom=0 \vspace{0.25\baselineskip}\fi%
       \fi%
    \fi%
    \xdef\fe at turep@s{bottom}%
@@ -14185,7 +14423,7 @@
       \fi
       \fi
    \fi
-   \xdef\consensus{} \xdef\ruler@{}
+   \xdef\consensus{} \xdef\topruler@{} \xdef\bottomruler@{}
    \xdef\styleframe{}
    \xdef\textfeaturetop{}     \xdef\textfeaturebottom{}
    \xdef\textfeaturettop{}    \xdef\textfeaturebbottom{}
@@ -15258,31 +15496,56 @@
          \xdef\start at num{\the\loopcount}
        \fi
       \fi
-      \ifnum\rule at num>0
-         \loopcount=\csname res at count\rule at num\endcsname
-         \divide\loopcount by \ruler at step
-         \multiply\loopcount by \ruler at step
+      \ifnum\rule at num@top>0
+         \loopcount=\csname res at count\rule at num@top\endcsname
+         \divide\loopcount by \ruler at step@top
+         \multiply\loopcount by \ruler at step@top
          \ifnum\loopcount<0
-            \ifnum\ruler at step<3
-               \advance\loopcount by \ruler at step
+            \ifnum\ruler at step@top<3
+               \advance\loopcount by \ruler at step@top
             \fi
          \else
-            \advance\loopcount by \ruler at step
+            \advance\loopcount by \ruler at step@top
          \fi
-         \xdef\rule at tens{\the\loopcount}
+         \xdef\rule at tens@top{\the\loopcount}
       \else
          \loopcount=\cons at count
-         \divide\loopcount by \ruler at step
-         \multiply\loopcount by \ruler at step
+         \divide\loopcount by \ruler at step@top
+         \multiply\loopcount by \ruler at step@top
          \ifnum\loopcount<0
-            \ifnum\ruler at step<3
-               \advance\loopcount by \ruler at step
+            \ifnum\ruler at step@top<3
+               \advance\loopcount by \ruler at step@top
             \fi
          \else
-            \advance\loopcount by \ruler at step
+            \advance\loopcount by \ruler at step@top
          \fi
-         \xdef\rule at tens{\the\loopcount}
+         \xdef\rule at tens@top{\the\loopcount}
       \fi
+      \ifnum\rule at num@bottom>0
+         \loopcount=\csname res at count\rule at num@bottom\endcsname
+         \divide\loopcount by \ruler at step@bottom
+         \multiply\loopcount by \ruler at step@bottom
+         \ifnum\loopcount<0
+           \ifnum\ruler at step@bottom<3
+               \advance\loopcount by \ruler at step@bottom
+            \fi
+         \else
+            \advance\loopcount by \ruler at step@bottom
+         \fi
+         \xdef\rule at tens@bottom{\the\loopcount}
+      \else
+         \loopcount=\cons at count
+         \divide\loopcount by \ruler at step@bottom
+         \multiply\loopcount by \ruler at step@bottom
+         \ifnum\loopcount<0
+            \ifnum\ruler at step@bottom<3
+               \advance\loopcount by \ruler at step@bottom
+            \fi
+         \else
+            \advance\loopcount by \ruler at step@bottom
+         \fi
+         \xdef\rule at tens@bottom{\the\loopcount}
+      \fi
       \xdef\first@{top}
       \ifx\cap at pos\first@
          \xdef\@captype{figure}
@@ -15357,7 +15620,7 @@
 \xdef\allow at zero{n} \xdef\c at ns@shift{0}
 \regionalshadefalse\regionalemphfalse\regionallowerfalse\regionaltintfalse
 \frame at false\shading at false
-\xdef\ruler at rot{0}
+\xdef\ruler at rot@top{0} \xdef\ruler at rot@bottom{0}
 \topfeaturefalse    \bottomfeaturefalse
 \ttopfeaturefalse   \bbottomfeaturefalse
 \tttopfeaturefalse  \bbbottomfeaturefalse
@@ -15408,7 +15671,7 @@
 \xdef\ttt at sp@ce{0mm}         \xdef\tttt at sp@ce{0mm}
 \xdef\b at sp@ce{0mm}           \xdef\bb at sp@ce{0mm}
 \xdef\bbb at sp@ce{0mm}         \xdef\bbbb at sp@ce{0mm}
-\xdef\ruler at sp@ce{0mm}
+\xdef\ruler at sp@ce at top{0mm} \xdef\ruler at sp@ce at bottom{0mm}
 \xdef\seq at gap@num{0}
 \xdef\h at ndalign{no}         \xdef\sep at space{0pt}
 \xdef\c at pshort{n}



More information about the tex-live-commits mailing list.