Annotation of ttbar/p20_taujets_note/edtable.sty, revision 1.1

1.1     ! uid12904    1: %% `edtable.sty'---Uwe L"uck, direction Christian Tapp. 
        !             2: %% LaTeX package for tables with line numbers and 
        !             3: %% editorial notes. 
        !             4: %% 
        !             5: %% Copyright (C) 2003-2005 Uwe L"uck--author-maintained. 
        !             6: %% 
        !             7: \def\fileversion{1.3c} \def\filedate{2005/10/03} 
        !             8: %% 
        !             9: %% This file can be redistributed and/or modified under 
        !            10: %% the terms of the LaTeX Project Public License; either 
        !            11: %% version 1.3 of the License, or any later version.
        !            12: %% The latest version of this license is in
        !            13: %%   http://www.latex-project.org/lppl.txt
        !            14: %% We did our best to help you, but there is NO WARRANTY. 
        !            15: %% 
        !            16: %% Please send your comments via 
        !            17: %% 
        !            18: %%   http://www.contact-ednotes.sty.de.vu 
        !            19: %% 
        !            20: %% * USAGE: * 
        !            21: % 
        !            22: % *Requirements/overview:* 
        !            23: % 
        !            24: % The package is made for the background of the LaTeX2e macro 
        !            25: % package and enhances functionality of the following packages: 
        !            26: % 1.) Stephan I. B"ottcher's `lineno.sty' for printing line 
        !            27: %     numbers in the margin and a \label version \linelabel 
        !            28: %     relating labels to line numbers; 
        !            29: % 2.) our `ednotes.sty' for indicating variant readings and 
        !            30: %     other editorial remarks in separate footnote apparatuses; 
        !            31: % 3.) David Carlisle's `longtable.sty' for multi-page tables. 
        !            32: %                                                 %% TODO: supertabular etc.!? 
        !            33: % 4.) our `ltabptch.sty' for a patch of `longtable.sty' 
        !            34: %     (i.e., optionally, see below). 
        !            35: % 
        !            36: % Actually, only the first package is necessary for using the 
        !            37: % present one. The present one needs your line numbering commands 
        !            38: % according to the first one and its documentation to which we 
        !            39: % refer here. We likewise refer to the remaining packages for the 
        !            40: % details of their functionality. 
        !            41: % 
        !            42: % `lineno.sty' version 4.1 and (in case it is used) `ednotes.sty' 
        !            43: % version 0.8 (onwards) are needed. For obtaining recent versions 
        !            44: % of required packages, see the CTAN folder 
        !            45: %     /macros/latex/contrib/ednotes. 
        !            46: % 
        !            47: % *Install/load:* 
        !            48: % 1.) To be used, the present file must be put into a folder 
        !            49: %     that (La)TeX searches. You should have obtained a file 
        !            50: %     containing more detailed hints about this. 
        !            51: % 2.) We recommend loading this file *not* by 
        !            52: %     \usepackage[<options>]{edtable} but by loading `lineno.sty' 
        !            53: %     or `ednotes.sty' with package option `edtable'. 
        !            54: % 3.) To use the package options `longtable' and 
        !            55: %     `nolongtablepatch' that are described below, enter them 
        !            56: %     as options for `lineno.sty' or `ednotes.sty'. 
        !            57: % 
        !            58: % *User Commands:* 
        !            59: % 
        !            60: % 1. The package defines an environment `edtable' -- for its 
        !            61: % syntax we consider two cases: 
        !            62: % (a) Let <stdtable> be a tabular environment "like `tabular'". 
        !            63: % "Like" here means: (i) we have tested it with `tabular', but 
        !            64: % it should work with many more (e.g., from the `array' and 
        !            65: % `tabularx' packages) -- which share certain properties of 
        !            66: % implementation and requirements. Sorry, you must try, or we 
        !            67: % hope you will (and tell us). (For wizards: <stdtable> may 
        !            68: % probably be anything using a single \halign and \tabskip=0pt.) 
        !            69: % Definitively: 
        !            70: % (ii) LaTeX's standard `array' and other environments are *not* 
        !            71: % "like" `tabular'. Namely, environments that work only in math 
        !            72: % mode are not meant here. They are considered below in `b.'. 
        !            73: % (iii) `longtable' from the `longtable' package of the `tools' 
        !            74: % bundle neither is meant. An option of the present package 
        !            75: % deals with it as described below. Neither `supertabular' is 
        !            76: % meant. 
        !            77: % (iv) In general, usage with tabular environments that can 
        !            78: % break across pages as in (iii) is not recommended, at least 
        !            79: % when working with `ednotes.sty'. Even if some worked here, a 
        !            80: % shortcoming with `ednotes.sty' would be that the footnotes can 
        !            81: % appear on bad pages. 
        !            82: % -- Now the syntax is: 
        !            83: %    \begin{edtable}{<stdtable>}<args><entries>\end{edtable}
        !            84: % -- where <args> and <entries> are usual arguments and entries 
        !            85: % for <stdtable>. So an example is: 
        !            86: %    \begin{edtable}{tabular}{cc} 
        !            87: %      left upper & right upper \\ left lower & right lower 
        !            88: %    \end{edtable} 
        !            89: % This produces just what <stdtable> does in an extra line, 
        !            90: % only adding line numbers in the margin and processing `ednotes' 
        !            91: % commands in the entries appropriately. 
        !            92: % (b) Let <stdarray> be an "array environment" like -- standard 
        !            93: % LaTeX's `array'! "Like" here means (i) ... analogously to 
        !            94: % <stdtable> above. (ii) "Text" ... oh, sorry, this is not clear 
        !            95: % to me at present, and I am in a hurry.                 %% TODO 
        !            96: % (iii) Nothing from the `amsmath' package seems to work here, 
        !            97: % sorry, I have tried a lot ... (iv) For standard LaTeX's 
        !            98: % `eqnarray', it is better to try the `linenomath' environment 
        !            99: % of `lineno.sty' [with package option `mathlines']. Its 
        !           100: % modifications in `amsmath' produce (at best) a spurious line 
        !           101: % number with the `linenomath' environment (up to now). 
        !           102: % -- Now the syntax is: 
        !           103: %    \begin{edtable}[<$$$>]{<stdarray>}
        !           104: %      <args><entries>\end{edtable}
        !           105: % -- where <args> and <entries> are usual arguments and entries 
        !           106: % for <stdarray>. <$$$> can be one of `$' or `$$'. Indeed, the 
        !           107: % <stdtable> syntax above (without [<$$$>]) *does not work* 
        !           108: % inside $...$ or $$...$$. -- An example: 
        !           109: %    \begin{edtable}[$$]{array}{cc}
        !           110: %      a_{11} & a_{12} \\ a_{21} & a_{22}
        !           111: %    \end{edtable}
        !           112: % Now, this produces just what <stdarray> does in an extra line 
        !           113: % etc. as with <stdtable>. However, \linelabel and `ednotes.sty' 
        !           114: % footnotes may need the `mathrefs' option of `lineno.sty'. For 
        !           115: % the difference between `[$]' and `[$$]', see below. 
        !           116: % 
        !           117: % 2. When working with `ednotes.sty', in 
        !           118: %   \Anote{L1\<L2\>L3}{NOTE}
        !           119: % L2 may contain &'s and \\'s, but L1, L3 must not! Analogously 
        !           120: % for \Bnote, etc., \Anotelabel...\donote..., etc. -- Well this 
        !           121: % holds for <stdtable>, hardly for <stdarray> ...        %% TODO 
        !           122: % 
        !           123: % 3. On positioning: You may have wondered about `extra line' 
        !           124: % above. This means that `edtable' starts a new line at 
        !           125: % \begin{edtable} and at \end{edtable}.          %% TODO: sure!? 
        !           126: % (a) It should be placed within a `center', `flushleft', or 
        !           127: % `flushright' environment for proper (vertical) spacing, but 
        !           128: % also works without. However, with <stdarray> and optional 
        !           129: % parameter `$$' of `edtable' (i.e., \begin{edtable}[$$]...), 
        !           130: % you can obtain the usual math display spacing *within a 
        !           131: % paragraph*; especially, the vertical space is less when the 
        !           132: % previous line is short ... and so on. 
        !           133: % (b) Horizontal positioning of line numbers (usually) needs a 
        !           134: % second run (after changing a table)! %% TODO: automatic warning. 
        !           135: % (For wizards: It may fail if some of \leftskip, \rightskip, 
        !           136: % \linewidth, and \@totalleftmargin are used in an unusual way.) 
        !           137: % A <dimen> register \ETextraoffset is provided whose value is 
        !           138: % 0pt by default and which additionally moves line numbers 
        !           139: % to the left (right) if given a positive (negative) value. 
        !           140: %                                               %% TODO: any use? 
        !           141: % 
        !           142: % *Package options:* 
        !           143: % 
        !           144: % 1. Option `longtable' adjusts the `longtable' environment 
        !           145: % defined by David Carlisle's longtable.sty for use with 
        !           146: % `lineno.sty' and `ednotes.sty'. The option makes `longtable' 
        !           147: % environments appear with line numbers in the margin, according 
        !           148: % to `lineno.sty', and process `ednotes.sty' commands if line 
        !           149: % numbering is active according to `lineno.sty'. 
        !           150: % [We maintain an alternative package with just this function 
        !           151: % in a slightly different implementation.] %% -> ulnltab.sty. 
        !           152: % Lemmas may go across table entries as with `edtable' (see above). 
        !           153: % ---There might be options like `supertabular' for adjusting 
        !           154: % other tabular environments that cannot be handled by the 
        !           155: % `edtable' environment provided here---they have not been 
        !           156: % implemented yet!                                             %% TODO 
        !           157: % 
        !           158: % 2. Option `nolongtablepatch' avoids loading/asking for 
        !           159: % `ltabptch.sty'. I.e.: according to LaTeX bugs database, 
        !           160: % tools/3180 and tools/3485, there have been problems with 
        !           161: % vertical spacing around `longtable' environments. By default 
        !           162: % the present package loads our `ltabptch.sty' or asks for it. 
        !           163: % Option `nolongtablepatch' overrides this. This is useful when 
        !           164: % you don't want to have the patch, especially when you use an 
        !           165: % "emergency stop" installation of TeX. 
        !           166: % 
        !           167: % *Wizard interface:* 
        !           168: % Macros \@ET@makeLineNumber, \@ET@use@outerhook, 
        !           169: % \@ET@execute@outerhook, \@ET@ampnotes \@ET@startlinewith, 
        !           170: % \@ET@trivialize@linelabel are provided as tools for adjusting 
        !           171: % tabular environments for use with `lineno.sty' and 
        !           172: % `ednotes.sty'. \@ET@step@linenumber is \let \stepLineNumber 
        !           173: % (from `lineno.sty'), but could be used as a hook for 
        !           174: % something different. See Environment `edtable' and Option 
        !           175: % `longtable' below for examples of application. 
        !           176: %                                        %% TODO: specification here. 
        !           177: % 
        !           178: %
        !           179: %% * Acknowledgements: * 
        !           180: % 
        !           181: % Stephan I. B"ottcher told us how to do it in extensive discussion 
        !           182: % and by providing some first code lines. We changed these essentially 
        !           183: % in some respects, but kept his general ideas and some parts of his 
        !           184: % macros, the latter even without knowing what we are doing. 
        !           185: % 
        !           186: % v1.3 is due to a request by Martin Brandenburg. 
        !           187: % 
        !           188: %  * Now for internals: * 
        !           189: % 
        !           190: \NeedsTeXFormat{LaTeX2e}[1994/12/01] 
        !           191: % 1994/12/01: \newenvironment* etc. %% TODO: more recent needed? 
        !           192: \ProvidesPackage{edtable}[\filedate\space v\fileversion\space 
        !           193:   arrays with lineno + ednotes (ul)] 
        !           194: % 
        !           195: % Alternative ideas for implementation: 
        !           196: % 1. There is a German package `TABMAC' enhancing `EDMAC' (cf. 
        !           197: % documentation of `ednotes.sty'). We could have rewritten its 
        !           198: % macros so it would work with `lineno.sty' and `ednotes.sty' 
        !           199: % in place of `EDMAC'. [TODO: "tabmac.sty"] 
        !           200: % 2. We redefine `longtable' by Option `longtable' because 
        !           201: % there seems to be only one reasonable use of the `longtable' 
        !           202: % environment in the course of a critical edition. This may be 
        !           203: % different for environments like `array' and `tabular' which 
        !           204: % can be used within text lines. Therefore, these environments 
        !           205: % are not redefined. 
        !           206: % 3. One might use \everycr, however: (a) it is executed 
        !           207: % before the first row, (b) it is executed in fake lines that 
        !           208: % `longtable' uses. 
        !           209: % 4. As an alternative to \everycr, there is the approach of 
        !           210: % redefining \cr and \crcr for setting \noalign. This needs 
        !           211: % redefining \@tabularcr etc.---not nice. We use this approach 
        !           212: % here for `longtable' which uses a stretching \tabskip. 
        !           213: % For \tabskip=0pt, we attach line numbers by a template. 
        !           214: % 
        !           215: % \RequirePackage{lineno}[2004/10/06] 
        !           216: % Wanted to check lineno version--causes unknown option error. 
        !           217: % See LaTeX bug latex/3730. 
        !           218: 
        !           219: % Options: 
        !           220: 
        !           221: %% TODO: underful page with `longtable.sty'!? 
        !           222: \let\if@ET@longtable\iffalse % \newif\if@ET@longtable@ 
        !           223: \DeclareOption{longtable}{\let\if@ET@longtable\iftrue} 
        !           224: \let\if@ET@ltabptch\iftrue 
        !           225: \DeclareOption{nolongtablepatch}{\let\if@ET@ltabptch\iffalse}
        !           226: \ProcessOptions
        !           227: 
        !           228: % Redefine \longtable if option: 
        !           229: \if@ET@longtable
        !           230:   % Stephan's direction for attaching a line number to each row 
        !           231:   % is using \noalign in the course of \\. 
        !           232:   % However, (1) the user should not worry about closing the table 
        !           233:   % with \\ or without, and (2) the line number thing should not 
        !           234:   % happen twice if \\ is the last token before \end{longtable}. 
        !           235:   % Our solution: attach something to the beginning of \endlongtable 
        !           236:   % which attaches line number unless an unsucceeded \\ has done it. 
        !           237:   % This thing is activated by each row start and turned off by \\. 
        !           238:   % Since the switch at row start may happen to be in a pbox, 
        !           239:   % let it act globally on \endlongtable. (The \crcr at the beginning 
        !           240:   % of \endlongtable must not be changed directly, since original 
        !           241:   % \crcr may be required in table entries using \oalign etc.) 
        !           242:   % 
        !           243:   \RequirePackage{longtable}%
        !           244: %   \IfFileExists{longtable.sty}{\RequirePackage{longtable}}%
        !           245: %                               {\RequirePackage{longtabl}}%
        !           246: % For Atari problem, it suffices to rename `longtable.sty' 
        !           247: % into `longtabl.sty'. 
        !           248: % 
        !           249: % Patch for tools/3180 and tools/3485 of LaTeX bug database:
        !           250:  \if@ET@ltabptch
        !           251:   \IfFileExists{ltabptch.sty}{\RequirePackage{ltabptch}}{% 
        !           252:     \PackageError{edtable}{% 
        !           253:       ltabptch.sty (for improving spacing around\MessageBreak
        !           254:       longtable) missing! Be sure to use it always\MessageBreak 
        !           255:       or never!%
        !           256:     }{% 
        !           257:       To omit ltabptch.sty *and* escape this error,\MessageBreak 
        !           258:       use package option `nolongtablepatch'.%
        !           259:     }%
        !           260:  }
        !           261:  \fi 
        !           262:   \let\@ET@@longtable\longtable 
        !           263:   \def\longtable{% 
        !           264:     \ifLineNumbers 
        !           265:       \expandafter\@ET@longtable 
        !           266:     \else 
        !           267:       \let\@ET@sw@cr\@ET@crcr % ... in \endlongtable. 
        !           268:       \expandafter\@ET@@longtable 
        !           269:     \fi 
        !           270:   } 
        !           271:   \def\@ET@longtable{% 
        !           272:   % Since we have made it anyway, we use the method of redefining 
        !           273:   % \halign for inserting the activating row start as well. 
        !           274:   % However, redefinition must be repeated before every \LT@bchunk. 
        !           275:   % \longtable and \LT@get@withs are good places for this. 
        !           276:     \@ET@startlinewith\@ET@sw@cr@on 
        !           277:     \@ET@trivialize@linelabel 
        !           278:     \@ET@use@outerhook 
        !           279:     \@ET@ampnotes 
        !           280:     \let\LT@tabularcr\@ET@LT@tabularcr 
        !           281:     \expandafter\def\expandafter\LT@get@widths\expandafter 
        !           282:       {\LT@get@widths\@ET@startlinewith\@ET@sw@cr@on}
        !           283:     % Admittedly, we could make it less of a hack by using @{...} 
        !           284:     % ---we could then leave \LT@get@widths untouched. 
        !           285:     \@ET@@longtable 
        !           286:   } 
        !           287:   \def\@ET@sw@cr@on{\global\let\@ET@sw@cr\@ET@cr@attach} 
        !           288:   % We are hacking a longtable version offering 
        !           289:   %   \def\LT@tabularcr{%
        !           290:   %     \relax\iffalse{\fi\ifnum0=`}\fi
        !           291:   %     \@ifstar
        !           292:   %       {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr
        !           293:   %        \LT@t@bularcr}%
        !           294:   %       {\LT@t@bularcr}}
        !           295:   % We need a redefinition of \cr which is not overridden by \@ifstar: 
        !           296:   \def\@ET@LT@tabularcr{%
        !           297:     \relax\iffalse{\fi\ifnum0=`}\fi
        !           298:     \def\cr{\@ET@sw@cr}% 
        !           299:     % So \crcr is affected by change of \@ET@sw@cr, cf. below. 
        !           300:     \let\crcr\cr 
        !           301:     \@ifstar
        !           302:       {\gdef\@ET@sw@nobreak{\nobreak 
        !           303:        \global\let\@ET@sw@nobreak\relax}% 
        !           304:   %     {\def\cr{\@ET@sw@cr\noalign{\nobreak}}\let\cr\crcr
        !           305:   % Why didn't this work? %% TODO: try shorter again. 
        !           306:        \LT@t@bularcr}%
        !           307:       \LT@t@bularcr 
        !           308:   %     {\let\cr\@ET@sw@cr \let\crcr\cr
        !           309:   %      \LT@t@bularcr}% This accompanied \def\cr... above. 
        !           310:   }
        !           311:   % Attach \@ET@sw@cr to beginning of \endlongtable: 
        !           312:   \expandafter\def\expandafter\endlongtable\expandafter 
        !           313:     {\expandafter\@ET@sw@cr\endlongtable}
        !           314:   \def\@ET@cr@attach{% Actually attaching line numbers. 
        !           315:     \@ET@crcr\noalign{% Basically Stephan's approach. 
        !           316:   % If we were not careful, following box containing line number 
        !           317:   % could fool interline glue after longtable, even if tools/3485 
        !           318:   % is repaired in some way. This box should have same depth as 
        !           319:   % the line composed previously. 
        !           320:       \nobreak %% \@ET@ex... might cause page break. 2003/10/30. 
        !           321:       \setbox\z@\@ET@makeLineNumber 
        !           322:       \ht\z@-\prevdepth \dp\z@\prevdepth \box\z@ 
        !           323:       \@ET@step@linenumber 
        !           324:       \global\let\@ET@sw@cr\@ET@crcr % ... if called by \\. 
        !           325:   % This also resets the \crcr starting \LT@echunk following 
        !           326:   % \@xargarraycr or \@yargarraycr in \LT@argtabularcr. 
        !           327:   % \let...\relax seems to suffice at well, but in case ... 
        !           328:       \@ET@execute@outerhook %% 2003/10/30. 
        !           329:       \@ET@sw@nobreak 
        !           330: %       \@ET@execute@outerhook 
        !           331:     }% 
        !           332:   } 
        !           333:   \let\@ET@crcr\crcr 
        !           334:   \global\let\@ET@sw@nobreak\relax % Just to remind ... 
        !           335: \fi 
        !           336:  
        !           337: \let\@ET@step@linenumber\stepLineNumber 
        !           338: % \def\@ET@step@linenumber{\global\advance\c@linenumber\@ne}
        !           339: \def\@ET@makeLineNumber{\hb@xt@\z@{\makeLineNumber}} 
        !           340: %% TODO: export to lineno.sty!? 
        !           341: % Special \halign: 
        !           342: % For `array' etc., we insert line numbers by a leftmost template. 
        !           343: % @{...} in the last argument of `array' etc. is difficult for this 
        !           344: % since `tabular*' has an additional argument. So we redefine 
        !           345: % \halign to put something to the right of the next \bgroup. 
        !           346: % Now, as a macro, \halign would break in an \edef or \xdef. 
        !           347: % Horribly, this danger has become quite real in longtable.sty's 
        !           348: % definition of \LT@bchunk. Only its latest version 4.10 has 
        !           349: % preceded \halign by a \noexpand (for mathtext.sty which 
        !           350: % redefines \halign as well). We need not rely on such a 
        !           351: % provision if we let \halign expand to \the<token register> 
        !           352: % for some token register. However, using \toks@ or \@temptokena 
        !           353: % is neither very safe---might be filled by macro ahead with 
        !           354: % something new. So reserve an own token register. 
        !           355: \newtoks\@ET@toks 
        !           356: \@ET@toks{\@ET@specialhalign} 
        !           357: % v1.3: In 'AMSmath', there are \halign's followed by explicit 
        !           358: % left braces. Thus '\def\@ET@specialhalign#1\bgroup{%' broke. 
        !           359: %% TODO ... 
        !           360: \def\@ET@specialhalign{%
        !           361:   \ifmeasuring@ \expandafter\@firstoftwo 
        !           362: % v1.3 2005/03/04, for `amsmath'. 
        !           363:   \else \expandafter\@secondoftwo 
        !           364:   \fi
        !           365:   {\let\halign\@ET@@halign \halign}% 
        !           366:   {\@ifnextchar\bgroup\@ET@replace@arg\@ET@sphalign@to}}
        !           367: %% TODO: change back, commenting out code above, report 
        !           368: %%       error with `alignat'. 
        !           369: %   \@ifnextchar\bgroup\@ET@replace@arg\@ET@sphalign@to}
        !           370: % If `amsmath' not loaded (v1.3): 
        !           371: \AtBeginDocument{\@ifundefined{measuring@true}{% 
        !           372:   \let\ifmeasuring@\iffalse}\relax}
        !           373: \def\@ET@replace@arg#1{%
        !           374:   \def\@EN@tempa{#1}\def\@EN@tempb{\bgroup}% Corr. after v1.3b. 
        !           375:   \ifx\@EN@tempa\@EN@tempb 
        !           376:     \def\@EN@tempa{\@ET@sphalign@to\bgroup}%
        !           377:   \else 
        !           378:     \def\@EN@tempa{\@ET@sphalign@to{#1}}%
        !           379: % This may be wrong, #1 might be `t' from `to' ... 
        !           380:   \fi 
        !           381:   \@EN@tempa}
        !           382: \def\@ET@sphalign@to#1\bgroup{% 
        !           383:   \let\halign\@ET@@halign % Reset for nested arrays. 
        !           384:   \halign#1\bgroup 
        !           385: %  \ifmeasuring@\else % For `amsmath', moved backwards. 
        !           386:     \@ET@startline % [Wizard interface, via \@ET@starlinewith.] 
        !           387: %  \fi 
        !           388: }
        !           389: % Wizard interface: 
        !           390: \def\@ET@startlinewith{% Next token precedes preamble. 
        !           391: %   \let\@ET@@halign\halign % Or \AtBeginDocument? 
        !           392: % ... indeed: bad loop with long longtable (\LT@get@widths!?) 
        !           393:   \def\halign{\the\@ET@toks}% 
        !           394:   \let\@ET@startline 
        !           395: } 
        !           396: \AtBeginDocument{\let\@ET@@halign\halign} 
        !           397: % Or save it at start of environment only 
        !           398: % (don't repeat inside longtable). 
        !           399: % 
        !           400: % Outer hook for inserts: (wizard interface) 
        !           401: \def\@ET@execute@outerhook{% To be placed outside inner mode. 
        !           402:   \@ET@outerhook \global\let\@ET@outerhook\@empty 
        !           403: } 
        !           404: \global\let\@ET@outerhook\@empty % Just to remind: global! 
        !           405: % \@EN@hookfn (ednotes) sends to outer hook: 
        !           406: \def\@ET@use@outerhook{% Wizard interface. 
        !           407:   \def\@EN@hookfn{\g@addto@macro\@ET@outerhook}% 
        !           408: }%% TODO: move last line to `ednotes', \let\@ET@use...\@empty. 
        !           409: %%        But this requires re-installing both packages 
        !           410: %%        at the same time. See the `ampnotes' thing as well. 
        !           411: % 
        !           412: % Trivialize \linelabel: (wizard interface) 
        !           413: \def\@ET@trivialize@linelabel{\let\linelabel\@ET@linelabel}
        !           414: \def\@ET@linelabel{% 
        !           415:   \protected@edef\@currentlabel{\theLineNumber}% 
        !           416:   \label
        !           417: }
        !           418: % Change ampersand at \Anote etc.: (wizard interface) 
        !           419: %% 2003/10/31. 
        !           420: % & is changed by \Anote etc. No \begin...\endgroup, 
        !           421: % next \\ or & after % note/donote command switches back. 
        !           422: % ---Global change seems to break table setup. 
        !           423: \begingroup 
        !           424: \gdef\@ET@hideamps{\catcode`\&\active}
        !           425: \@ET@hideamps 
        !           426: \gdef\@ET@ampnotes{% 
        !           427:   \let&\@ET@hideamp 
        !           428:   %% & would be undefined after \\ in lemma. 
        !           429:   \let\@ET@EN@rnote\@EN@note 
        !           430:   \def\@EN@note{\@ET@hideamps\@ET@EN@rnote}%
        !           431:   \let\@ET@EN@rnotelb\@EN@notelabel 
        !           432:   \def\@EN@notelabel{\@ET@hideamps\@ET@EN@rnotelb}%
        !           433: } 
        !           434: %% TODO: & and \\ in \@EN@lemmaexpands!? 
        !           435: \endgroup 
        !           436: \def\@ET@hideamp{&}
        !           437: 
        !           438: \newenvironment*{edtable}[2][]{% 
        !           439: % #1 $ or $$, #2 standard environment name. 
        !           440: %% TODO: star version!? cf. lineno.sty's `numquote'. 
        !           441:   \def\@ET@mode{#1}% 
        !           442:   \def\@ET@currenvir{#2}% 
        !           443:   \ifhmode \ifnum\the\lastpenalty=-\@M\else 
        !           444: % \par must be executed for printing/stopping line numbers: 
        !           445:     \@centercr\relax \noindent 
        !           446:   \fi \fi 
        !           447:   \ifvmode \noindent \fi % Otherwise linenumbers are indented 
        !           448: % -- however, not recommended. 
        !           449:   \@ET@use@outerhook 
        !           450:   \@ET@trivialize@linelabel 
        !           451:   \@ET@ampnotes 
        !           452:   \@ET@startlinewith\@ET@normal@startline 
        !           453:   \global\advance\c@linenumber\m@ne % Stepping correction. 
        !           454: % (Must come after closing previous paragraph.)
        !           455: % Calculate offset: 
        !           456:   \global\advance\c@ET@array\@ne 
        !           457: % Saving/calling width of table (`longtable's algorithm). 
        !           458: % Test if there is \@flushglue on the left (center or flushleft): 
        !           459:   \edef\@EN@tempa{\the\@flushglue}% 
        !           460: % ... v1.3: fool this for "$$". 
        !           461:   \in@{$$}{#1\@nil}% \in@{#1}{#2} searches #1 in #2#1 ... 
        !           462:   \edef\@EN@tempb{\the\ifin@\@flushglue\else\leftskip\fi}% 
        !           463:   \ifx\@EN@tempa\@EN@tempb 
        !           464: % Assume \@ET@offset is 0pt else here. 
        !           465:     \@ET@offset\linewidth 
        !           466:     \advance\@ET@offset-% 
        !           467:       \@ifundefined\@ET@arraywidth@csn % Shortened for v1.3        !           468:         {\linewidth\G@refundefinedtrue 
        !           469:          \PackageWarningNoLine{edtab}{^^JLine numbers at 
        !           470:            \@ET@currenvir\space need \jobname.aux}}% 
        !           471:         {\csname\@ET@arraywidth@csn\endcsname}% 
        !           472: % Test if \@flushglue on the right (center): 
        !           473: % ... v1.3: fool it again. Repeat \in@ in case ... 
        !           474:     \in@{$$}{#1\@nil}%
        !           475:     \edef\@EN@tempb{\the\ifin@\@flushglue\else\rightskip\fi}% 
        !           476:     \ifx\@EN@tempa\@EN@tempb \divide\@ET@offset\tw@ \fi 
        !           477:   \fi 
        !           478:   \advance\@ET@offset\@totalleftmargin 
        !           479:   \advance\@ET@offset\ETextraoffset % Offset ready. 
        !           480:   \setbox\@tempboxa\hbox\bgroup 
        !           481: % v1.3: `alignat' complains later when this is \vbox instead. 
        !           482: %    \vbox\bgroup % Tried in vain. 
        !           483:     \ifx\@ET@mode\@empty\else $\fi 
        !           484:     \csname#2\endcsname 
        !           485: }{% 
        !           486:     \csname end\@ET@currenvir \endcsname 
        !           487:     \ifx\@ET@mode\@empty\else $\fi 
        !           488:   \egroup 
        !           489:   \@ET@step@linenumber % Stepping correction. 
        !           490:   \if@filesw
        !           491:     \immediate\write\@auxout{%
        !           492:       \gdef\expandafter\noexpand
        !           493:         \csname\@ET@arraywidth@csn\endcsname
        !           494:           {\the\wd\@tempboxa}}%
        !           495: %% TODO: warning if changed!? 
        !           496:   \fi
        !           497: % No automatic line number at array line: 
        !           498:   \nolinenumbers 
        !           499:   \@ET@mode\ensuremath{\vcenter{\box\@tempboxa}}\@ET@mode % v1.3        !           500:   \@ET@execute@outerhook
        !           501:   \ifhmode \@centercr\relax \fi 
        !           502: % \par must be executed for proper restart of printing line numbers 
        !           503: % (think so). 
        !           504:   \@endpetrue % Outside \@flushglue environment, avoid indent ahead. 
        !           505: %% TODO: slightly change for math mode around? Or give an error 
        !           506: %%       in math mode. 
        !           507: } 
        !           508: %% TODO: make \edtable \outer!? 
        !           509: \def\@ET@normal@startline{%
        !           510:   \@ET@step@linenumber 
        !           511:   \llap{\@ET@makeLineNumber \hskip\@ET@offset}% 
        !           512: } 
        !           513: \newdimen\@ET@offset 
        !           514: \newdimen\ETextraoffset 
        !           515: %% TODO: export to lineno.sty!? 
        !           516: \newcount\c@ET@array 
        !           517: \def\@ET@arraywidth@csn{ET@a@\romannumeral\c@ET@array}
        !           518: % 
        !           519: %% TODO: .dtx 
        !           520: \endinput 
        !           521: 
        !           522: %% VERSION HISTORY: 
        !           523: v0.22 2003/01/13  First version, named `edtab02.sty', sent around, 
        !           524:                   together with ednotes.sty. 
        !           525: v0.23 2003/01/22  Added version history. 
        !           526: v0.24 2003/01/27  Copyright notice. 
        !           527: %%% v0.3  2003/03/03  Requires linenox0.sty. %% RETREATED 
        !           528: %% TODO: reconsider,  see `lineno[x].sty'. 
        !           529: v0.25 2003/03/05  Added <ednotes.sty@web.de>. 
        !           530: v0.26 2003/03/23  Added \@ET@startlinewith to wizard command list; 
        !           531:                   moved redefinition \LT@get@widths from option code 
        !           532:                   into \@ET@longtable so this really happens in 
        !           533:                   line number mode only; moved \let\@ET@@halign\halign 
        !           534:                   from \@ET@startlinewith to \AtBeginDocument. 
        !           535: v0.27 2003/06/02  Added \ifvmode \noindent \fi to `edtable' definition; 
        !           536:       2003/06/10  added `lemma cannot run' to instructions. 
        !           537: v0.28 2003/10/31  \@ET@cr@attach: moved \@ET@execu..., added \nobreak. 
        !           538:                   Added \@ET@ampnotes and documentation: now working 
        !           539:                   across entries. 
        !           540: v1.0  2004/05/13  `ednotes.sty' etc., updated copyright. Renamed as 
        !           541:                   `edtable.sty' for TUGboat article. 
        !           542:                   \RequirePackage{lineno}, changed doc. accordingly. 
        !           543:                   Removed `may be released under different name'. 
        !           544: v1.10 2004/07/27  Looking for `longtabl.sty' for my Atari! 
        !           545:       2004/08/22  Added warning (screen/documentation) concerning 
        !           546:                   ltabptch.sty. 
        !           547:       2004/08/23  Added suggestion of option `nolongtablepatch'; 
        !           548:                   LPPL v1.3        !           549: v1.2  2004/08/31  Rearranged preamble concerning maintenance, 
        !           550:                   removed `preliminary release'. 
        !           551:       2004/10/06  \newif -> \let...; option `nolongtablepatch'; 
        !           552:                   changed documentation accordingly and for 
        !           553:                   loading edtable.sty by lineno/ednotes option; 
        !           554:                   \let\@ET@step@linenumber\stepLineNumber; use 
        !           555:                   \ifLineNumbers. 
        !           556:       2004/10/07  Needed version numbers. 
        !           557:       2004/10/08  ltabptch warning -> error! 
        !           558:       2004/10/11  Disabled \RequirePackage{lineno}[...]; undid 
        !           559:                   the `longtabl.sty' thing from 2004/07/27. 
        !           560:       2004/10/12  latex/3730. 
        !           561: v1.2a 2004/11/07  LPPL v1.3a. 
        !           562: v1.2b 2005/01/10  Contact via http. 
        !           563: v1.3b 2005/03/04  Support for environments like `array' 
        !           564:                   environment. The description of `edtable' was 
        !           565:                   wrong in this respect! 
        !           566: v1.3  2005/03/07  Adaptations in documentation, and extended usage 
        !           567:                   instructions very much, correcting some 
        !           568:                   errors as well. Acknowledgement to M. B. 
        !           569: v1.3a 2005/03/09  Corrected numbering in `usage'. 
        !           570: v1.3c 2005/03/15  \@centercr\relax, TODO on math mode. 
        !           571:       2005/04/09  `editory' -> `editorial'. 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>