diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/ednotes |
Initial commit
Diffstat (limited to 'macros/latex/contrib/ednotes')
30 files changed, 3888 insertions, 0 deletions
diff --git a/macros/latex/contrib/ednotes/CHANGES.txt b/macros/latex/contrib/ednotes/CHANGES.txt new file mode 100644 index 0000000000..d61018d3fb --- /dev/null +++ b/macros/latex/contrib/ednotes/CHANGES.txt @@ -0,0 +1,261 @@ +CHANGES 2006/10/05 [without CTAN-ann]: + +README -> READMORE.txt, new README, CHANGING.txt, +copy of recent perpage.sty, changes of documentation +concerning perpage.sty/longtable.sty in the text files +and in ednotes.sty. + + +CHANGES for UNDERLYING lineno.sty v4.41 2005/11/02: + +1. Loadable after amsmath. + +2. Removed some nonsense from documentation. + + +CHANGES for UNDERLYING lineno.sty v4.4 2005/10/27: +[failed to be uploaded to CTAN]: + +1. Proper effective line depth at end of paragraphs. + The spacing bug was quite obvious in two-column mode + when a paragraph end was at a column bottom. + +2. Another bug concerning two-column mode that had been + introduced in v4.22 has been removed again. + +3. Support for \addvspace introduced more and more bugs + in versions of v4.32 and v4.33. The reasons seem to + be clear now, v4.4 should be stable, and the series + of bug reports seems to have stopped. + + +CHANGES for UNDERLYING lineno.sty v4.32 2005/10/17: + (see lineno.pdf ...) + +1. Support for \addvspace + (a math display or a list meets a heading -- or the like). + +2. Clearly explained former option `displaymath' and its change + to a default. + + +CHANGES for ednotes.sty v1.2 and UNDERLYing lineno.sty v4.31 +2005/10/01: + +1. ednotes.sty offers \PrecedeLevelWith for visually identifying + apparatuses (think of pages where only one of them appears) + or for controlling the shape of one or another + apparatus paragraph (maybe depending on apparatus). + (Requires manyfoot.sty v1.9!) + +2. lineno.sty offers \modulolinenumbers* and a package option + `modulo*' for printing first line number after interrupting + editor's text, regardless of the modulo. + +3. To prevent lemma code from working in the apparatus + (`fol...', e.g.), ednotes.sty now offers \notinnote + (replacing \notthislemma, now without `undefined c...'). + +4. Improved lineno.sty's explanation of \firstlinenumber and + package options. + +5. Supplied some hash mark doublings in advice for customizing + ednotes.sty . + + +CHANGES for UNDERLYing lineno.sty v4.3 2005/04/28--05/16: + +1. Re-implemented modulo mode -- disabling certain users' tricks + see lineno.pdf sec. 5.5, also for a still supported + substituting trick. + +2. Option `displaymath' (proper numbering at paragraphs + containing math displays) becomes default. + +3. Compatibility with hyperref now indeed (at least much more). + +4. Documentation tidied up. + +5. Restored "global" version of numbering lines of a \parbox or + minipage or ..., explained in documentation (lineno.pdf/dvi + subsec. 7.2). + +6. Additional internal improvements that perhaps hardly are + observable (no more spurious linenumbers in math displays + from vertical mode; \flushbuttom with `twocolomnuns' and + `switch' etc.; some compatibity with packages that use + \holdinginserts; \linelabel in headings etc.). + + +CHANGES for UNDERLYing lineno.sty v4.2 2005/04/26: + +1. Re-enabled package option `displaymath' (needed rearrangement + after lineno.pdf sec. 5). + +2. New package option `addpageno' for adding page numbers to + line number references -- see sec. 6.1 of lineno.pdf. + +3. Improved support for \includeonly (and improved lineno.pdf + sec. 5.3, p. 27). + +4. Please note problems with \marginpar, figures, and tables + which tameflts.sty deals with -- see ...: + +5. Improved compatibility with other packages that change \output + (tameflts.sty, e.g., for saving footnotes against \marginpar + and floats), added advice on this matter -- see lineno.pdf + sec. 2.3, pp. 7, 14f. + + +CHANGE OF EDNOTES BUNDLE 2005/04/09 + +Due to my (ul) misconception of `nccfoots', unwanted footnote +marks could occur. This is corrected with v1.12 . (Earlier +today a package ennccptc.sty appeared, please remove it in case +you have used it.) + + +CHANGES OF EDNOTES BUNDLE 2005/03/08 + +This update is mainly concerned with +1. the number of possible notes, +2. page break oscillations, +3. `array' and similar mathematical environments, and with +4. a hopefully helpful error message; also with +5. amendments of documentation. + +Namely: + +1. Reimplementation of `ednotes.sty' with version v1.1, vital + for huge editions ("commercial"/"professional" applications): + "compression" of note placement data, a single control string + instead of three per note stores them. So you can now make + three times as many notes as before, regarding the memory + compartment for multiletter control strings. -- One user + exhausted this by 10.000 notes on 450 pages (recent MiKTeX + installation). Now he can go on ... (These note placement + data are needed for references in the apparatus.) + + WARNINGs: + + (a) If you have customized or used \repeatref and/or + \linewithpage, please read what the section on `customizing' + of `ednotes.sty' tells concerning v1.1 (changes were + required). + + (b) In case you really use option `countoccurrences' of + `ednotes.sty', edcntwd0.sty needs to be updated to v0.31. + +2. A checking function has been added for finding startings + of page break oscillations. These typically must be fixed + for getting correct references to lemmas in the apparatus. + + WARNING: You may recently have noticed `lblchng1.sty' and + what it tells about page break oscillations. With ednotes.sty + v1.1, `lblchng1.sty' v0.2 is no longer quite correct, please + notice v0.32 (if the problem interests or tortures you). + +3. The `edtable' option of `ednotes.sty' now supports math + environments like `array'. This requires updating edtable.sty + to v1.3. (The claim in previous versions of `edtable.sty' on + this support simply was wrong, sorry.) For how to make use of + this support, we urge you to read the usage instructions in + `edtable.sty' (v1.3). These have been extended very much, + structured more clearly, and supplied with examples. + +4. \linelabel now complains when appearing outside line + numbering mode. This may be useful when you have forgotten to + switch into line numbering mode and wonder why all notes + refer to line 1. If you don't know about \linelabel: Each + note uses it internally, therefore you may profit. + +5. The subsection on `edtable' in `lineno.sty/tex/pdf' and its + final list of user commands in lineno.sty/tex/pdf were not + quite correct or complete -- corrected or somewhat improved. + `ednotugb.pdf', which derives from a TUGboat article on the + subject, now briefly refers to the memory problem of 1. above + and amends the description of `edtable'. + + +CHANGES OF EDNOTES BUNDLE 2005/01/20 + +1. Thanks to Alexander Rozhenko, you now can download most +recent "unpacked" versions of manyfoot.sty and nccfoots.sty +-- no more generating procedure. + +2. The README.txt addresses indexing with line numbers. + +3. The original TUGboat article `tb77lueck.pdf' has been +corrected and updated -- resulting in `ednotugb.pdf'. + +4. `ednotes.sty' and `ednotugb.pdf' refer to the `ellipsis' +package concerning spacing with the ellipsis dots. + + +CHANGES OF EDNOTES BUNDLE 2004/10/26 + +You may find a file README4U.txt that is more detailed than the +present one and that just addresses changes from 2004/08/23 to +2004/10/19, especially for earlier users.] + + +CHANGES OF EDNOTES BUNDLE 2004/10/19 + +1. Module files are now handled by new ednotes.sty options +`edtable', `longtable', `nolongtablepatch', `edmacpara', +`countoccurrences', and `mathnotes' (+ `perpage', new module) +--so they are no longer loaded by explicit \usepackage. + +-> UPDATE RECOMMENDATION: + + To support these package options, the following packages + were changed, at least concerning instructions. + + edcntwd0.sty + ednotes.sty + ednmath0.sty + edtable.sty + lineno.sty + mfparptc.sty + mfparxsp.sty + + So we recommend that you download these from + + [CTAN]/macros/latex/contrib/ednotes + + and overwrite the earlier versions with them! + -- And be sure to have manyfoot.sty v1.7! + (See README.txt for how to obtain it.) + + (mfparxsp.sty may even be deleted, see inside or + previous change described below. Using new option `perpage', + moreover, may require downloading and installing perpage.sty) + +lineno.sty climbs to version 4.1, ednotes.sty to 1.0. + +2. lineno.tex/pdf has been updated accordingly. A new interim +version of a TUGboat article (tb77lueck.pdf, same ednotes +directory) describes the bundle as it appears now. The final +version of the article will be exhibited at the TUGboat web site. + + +CHANGES OF EDNOTES BUNDLE 2004/09/21 + +1. With lineno.sty version 4.00 (CTAN folder +/macros/latex/contrib/lineno), linenox0.sty, linenox1.sty, and +lnopatch.sty are obsolete. Don't load them any more! lineno.sty +should produce a reminder for changing your related \usepackage +commands. For a slight change of \firstlinenumber, see +lineno.sty/tex/pdf. + +2. With manyfoot.sty version 1.7 (CTAN folder +/macros/latex/contrib/ncctools), mfparxsp.sty is obsolete. +Please replace \MFparaxbuffer by \ExtraParaSkip and don't load +mfparxsp.sty any more. For your earlier documents, we offer a +new version of mfparxsp.sty which just reminds you of the +change and ("for this time") redirects your \MFparaxbuffer to +Alex Rozhenko's \ExtraParaSkip. You may delete it right now--or +when you are sure that you won't anymore compile a .tex +containing \MFparaxbuffer and \usepackage{mfparaxbuffer}. + + diff --git a/macros/latex/contrib/ednotes/CHANGING.txt b/macros/latex/contrib/ednotes/CHANGING.txt new file mode 100644 index 0000000000..34baa7dbd8 --- /dev/null +++ b/macros/latex/contrib/ednotes/CHANGING.txt @@ -0,0 +1,127 @@ + ======================================= + ednotes is CHANGING on and on ... + + October 2006, Uwe Lueck + http://www.contact-ednotes.sty.de.vu + ======================================= + + + ABSTRACT: + + This file is to draw your attention to the *possibility* that + the version of the ednotes bundle that you have received lacks + *recent improvements* -- and to how to profit from such + improvements. Some improvements under present work or consideration + are *listed*. + + +POSSIBLE REASONS: + +Maybe you have got the bundle files from a TeX Live CD or DVD +-- which usually is not updated as often as ednotes is updated. +Or you have received the files from somewhere else than from CTAN +or TeX Live. Or you just are not in the mood sufficiently often to +check whether ednotes has been updated recently. Or the maintainers +of ednotes have made the improvement privately, yet are not ready to +send it around at the moment. + +Sorry, due to the complexity of ednotes and to our limited resources, +we really cannot promise that each release or upload of ednotes is +error-free. (I always do some basic tests of changes, but it is quite +impossible to test all "possible situations". Sometimes a foolish typo +shows up only in a very special situation.) A "recent improvement" +(as I called it) thus may just be a correction of recently introduced +errors, having been uploaded to CTAN shortly after the (bad) files +that you have received were collected. + +Or better: in working with ednotes, you may discover possibilities +to increase its functionality. Indeed, we sometimes get such ideas in +using the bundle ourselves. Please report problems you encounter with +ednotes via the above URL, as well as suggestions for new ednotes +features. (Again however, we may be unable to follow such a suggestion +immediately/soon.) -- We receive such problem reports and suggestions +every few weeks or months and usually try to account for them; +so you might profit from recognizing such developments -- more often +than (say) once a year. + + +RECEIVE UPDATE-ALERTS BY E-MAIL: + +After subscribing to the mailing list for CTAN announcements + + https://lists.dante.de/mailman/listinfo/ctan-ann + +you will be automatically informed when an update of the ednotes +bundle has been uploaded to CTAN -- the Comprehensive TeX Archive +Network. Of course you will be informed about uploads and updates +of many other packages than ednotes -- and this is a nice, little +time-consuming way of being informed what macro and font packages +etc. there are. + +Moreover, I maintain a newsletter about ednotes to which you can +subscribe via the URL above below the title of the present file. +I usually inform the subscribers when new ednotes files have been +installed on CTAN. Sometimes I write a little more in the newsletter +than what is announced on the CTAN announcements mailing list. + + +TO UPDATE: + +For the most basic way, you can download the most recent public +version of the ednotes bundle by downloading the + + http://tug.ctan.org/tex-archive/macros/latex/contrib/ednotes + +subdirectory of CTAN. You may know or learn about substituting +"tug.ctan.org/tex-archive" appropriately to address a nearby CTAN +mirror -- indeed when you try the previous, you may be offered URLs +of several CTAN mirrors out of which you can choose your favourite +mirror for the future. The downloading procedures that the mirrors +offer may slightly differ, but it's easy nowadays anyway. You may +better leave "ednotes" away in the previous URL and just look for +"ednotes" in the "contrib" subdirectory. -- The README that should +have come along with your copy of the ednotes bundle should direct +you how to properly install the new packages on your machine. + +For Windows, there is the + + http://ctan.tug.org/tex-archive/systems/win32/miktex/ + +distribution; cf. + + http://texcatalogue.sarovar.org/entries/miktex.html + http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=miktex + +-- which includes an updating manager that makes updating very easy. + +Note that a recent version of ednotes may need updating other +packages, cf. `READMORE.txt'. + + +PLANNED IMPROVEMENTS: + +* \multicolumn in tables/arrays presents a problem to ednotes, a + first solution to which just has been prepared; I am pondering how + to implement a more comfortable way to deal with the problem. + Another improvement with tables/arrays is near. + +* More substantially: The bigfoot package by David Kastrup has + appeared on CTAN: + + http://tug.ctan.org/tex-archive/macros/latex/contrib/bigfoot + + -- it very much improves the performance of the manyfoot package + that underlies ednotes. Something (perhaps?) must be added to + ednotes in order to use bigfoot. + +* Recently I discovered that Peter Wilson's memoir class + + http://tug.ctan.org/tex-archive/macros/latex/contrib/memoir + + -- that many people use to have more flexibility than with the + Standard LaTeX classes -- offers footnote facilities that are + similar to those of manyfoot and bigfoot. It should be easy + to offer an option to use ednotes with memoir without using + manyfoot or bigfoot. + + diff --git a/macros/latex/contrib/ednotes/README b/macros/latex/contrib/ednotes/README new file mode 100644 index 0000000000..57326615da --- /dev/null +++ b/macros/latex/contrib/ednotes/README @@ -0,0 +1,47 @@ +EDNOTES.STY -- typesetting scholarly critical editions with LaTeX + -- (C) Uwe Lueck, dir. Christian Tapp 2003--2006 + +Scholarly critical editions: + -- line numbers are printed in the margin; + -- you refer to them in one or two footnote layers or more. + +Visit http://ednotes.sty.de.vu for learning more about the matter. + +The present file `README' refers to the content of the CTAN +subdirectory /macros/latex/contrib/ednotes/. + +The files contained in the same subdirectory are subject to the +LaTeX Project Public License -- see + + http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html + + For COPYRIGHTs as well as conditions of use (NO WARRANTY), + MODIFYING, and (RE)DISTRIBUTION, please see inside the files + mentioned in the present `READMORE.txt' file, as well as + `README-lineno.txt' and `README-ncctools.txt'. Usually, the LaTeX + Project Public License applies, a recent version of which can be + found on + + http://www.latex-project.org/lppl.txt + + Any REDISTRIBUTION of `ednotes.sty' must contain the present + `README' file. + + If you DISTRIBUTE `manyfoot.sty' and `nccfoots.sty', they must be + accompanied by `manyfoot.dtx', `nccfoots.dtx', and + `README-ncctools.txt'. + +For additional informations (installing; other kinds of usage ...), +please see READMORE.txt next. + +-- Most notably: Packages lineno.sty, manyfoot.sty, nccfoots.sty +are required, to be found in CTAN subdirectories + + /macros/latex/contrib/lineno/ + /macros/latex/contrib/ncctools/ + +or maybe in another subdirectory of /macros/latex/contrib/ +(enter `manyfoot' to http://tug.ctan.org/search.html). +With TeXLive, /ncctools/ is in collection-latexextra. + +-- UL, 2006/10/05 diff --git a/macros/latex/contrib/ednotes/README-lineno.txt b/macros/latex/contrib/ednotes/README-lineno.txt new file mode 120000 index 0000000000..221ce513c3 --- /dev/null +++ b/macros/latex/contrib/ednotes/README-lineno.txt @@ -0,0 +1 @@ +../lineno/README.txt
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/README-ncctools.txt b/macros/latex/contrib/ednotes/README-ncctools.txt new file mode 120000 index 0000000000..72801284d4 --- /dev/null +++ b/macros/latex/contrib/ednotes/README-ncctools.txt @@ -0,0 +1 @@ +../ncctools/README
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/README4U.txt b/macros/latex/contrib/ednotes/README4U.txt new file mode 100644 index 0000000000..93d3552a42 --- /dev/null +++ b/macros/latex/contrib/ednotes/README4U.txt @@ -0,0 +1,209 @@ +README4U: + +****************************************************************** +*** *** +*** Changes from ednotes.sty v0.64 to v1.0 *** +*** *** +*** (Uwe Lueck, 2004/10/21) *** +*** *** +****************************************************************** + + + +* SUMMARY: * + + Since August 2004, the number of bundle files has been reduced. + Many of the remaining files have changed, some essentially, + others with respect to usage instructions. We explain how to + update your Ednotes installation accordingly. Optional + "patches", enhancements etc. that earlier had to be called by + loading separate files explicitly (mandatory arguments of + \usepackage) are now called by ednotes.sty package options + (optional arguments in \usepackage[<opt>]{ednotes}). New PDF + documentations/instructions have appeared. + + +* Contents of this file: * + + LN/MF_edn.zip -- ednotes/lineno/manyfoot/further changes -- + updating procedure -- new documentations + + +* Some files you may have received: * + + You may have received (by e-mail from us, e.g.) a distribution + containing files + + LN_edn.zip + MF_edn.zip + + They serve two purposes: + + 1. They contain the files README and CHANGES that reside in the + CTAN directories `[...]/lineno' and `[...]/ncctools' (from + which manyfoot.sty stems). In order to avoid that README and + CHANGES files overwrite each other, unzip them into separate + directories, and into another one than the README file (for + ednotes.sty) that you should have received as a plain text + file. + + 2. LEGAL, IMPORTANT: + + The files README, manyfoot.dtx, and nccfoots.dtx contained in + MF_edn.zip are, by their copyright holder Alexander Rozhenko, + demanded to ACCOMPANY any (re)DISTRIBUTION of manyfoot.sty + and nccfoots.sty! + + +* ednotes.sty changes: * + + 1. ednotes.sty version 1.0 has new package options `edtable', + `longtable', `nolongtablepatch', `edmacpara', + `countoccurrences', and `mathnotes' for handling "patch" or + enhancement etc. files. None of these files should be loaded + through the mandatory argument of \usepackage any more. E.g., + instead of \usepackage{edtable}, you now type + + \usepackage[edtable,<further options>]{ednotes} . + + (So -- one advantage aimed at -- you must no longer worry + about the correct order of loading extension packages.) + + 2. The above-mentioned option `nolongtablepatch' changes earlier + behaviour with respect to our longtable.sty patch file + ltabptch.sty, in avoiding an error message that otherwise + appears when ltabptch.sty is not present. This is convenient + when you deliberately want to avoid the patch. The error + message ensures that vertical spacing around a "longtable" + does not depend on the local TeX installation -- e.g., when + you send your source to a journal. + + 3. ednotes.sty has a new option `perpage' for making use of the + manyfoot.sty option `perpage' -- just see the Manyfoot + documentation for what it does. It requires perpage.sty, + which is available from [CTAN]/macros/latex/contrib/misc. + + +* lineno.sty changes: * + + 1. The new version 4.1 of lineno.sty makes former extension + files linenox0.sty, linenox1.sty, and lnopatch.sty obsolete. + Don't load them any more! (We have installed a reminder for + the case that you don't obey this rule.) + + 2. \firstlinenumber has slightly changed from its earlier + behaviour given by lnopatch.sty. See lineno.sty/tex/pdf. + + +* manyfoot.sty changes: * + + The new version 1.7 of manyfoot.sty provides a command + \ExtraParaSkip to replace our earlier \MFparaxbuffer. + (See the new ednotes.sty documentation to recall + \MFparaxbuffer -- search for `\ExtraParaSkip', e.g.) + This makes former extension file mfparxsp.sty obsolete. + Please replace \MFparaxbuffer by \ExtraParaSkip and don't + load mfparxsp.sty any more! For your earlier documents that + contain \usepackage{mfparxsp}, we offer a new version of + mfparxsp.sty which just reminds you of the change and + ("for this time") redirects your \MFparaxbuffer to + \ExtraParaSkip. You may as well just delete your copy of + mfparxsp.sty, if you are sure, e.g., that you won't anymore + compile a .tex containing \MFparaxbuffer and + \usepackage{mfparaxbuffer}. + + +* Further corresponding changes: * + + Extension files that still are used -- now required by the new + ednotes.sty package options -- have been changed at least with + respect to explanations that they contain. + + +* UPDATING: * + + 1. (Mandatory:) overwrite your copies of + + edcntwd0.sty + ednmath0.sty + ednotes.sty + edtable.sty + lineno.sty + manyfoot.sty + mfparptc.sty + + with the new versions. + + 2. Overwrite + + mfparxsp.sty + + by our new "reminder" version, or just remove it from TeX's + searching scope -- as you like, recall `manyfoot.sty changes' + avove. + + 3. You may remove (from TeX's searching scope) linenox0.sty, + linenox1.sty, lnopatch.sty -- but they won't harm otherwise; + you will get an error message if you load one of them + inadvertently. + + +* New documentation/instructions: * + + 1. An article on ednotes.sty is appearing in TUGboat vol. 24. + It describes the main commands and functions of Ednotes. + Moreover, it compares Ednotes to EDMAC and LEDMAC, two other + TeX macro packages for critical edition typesetting. + We provide a version of the article very near to the final + one as + + tb77lueck.pdf . + + (it is definitively not the final version.) + + 2. The README for ednotes.sty has been rewritten very much and + may yield new insights. Detailed explanations addressing + non-TeXperts have been added. + + 3. lineno.tex has been updated according to the changes of + lineno.sty, of course. A pdflatex outcome + + lineno.pdf + + is available ([CTAN]/macros/latex/contrib/lineno/lineno.pdf). + + A pdflatex outcome + + ulineno.pdf + + of the user's guide ulineno.tex is available as well. + It only deals with lineno.sty version 3.1, but will though + be helpful (I think). + + Recall that lineno.sty offers many commands to control the + style of the marginal line numbers, so its documentation is + an essential contribution to ednotes.sty documentation. + + 4. Version 1.7 of manyfoot.sty is generated from the + corresponding version of + + manyfoot.dtx + + which is the TeX source for the documentation of + manyfoot.sty. Recently, the pdflatex output + + manyfoot.pdf + + has been added to CTAN directory ncctools. These two files + may be less essential for ednotes.sty users than + (u)lineno.tex/pdf. However, manyfoot.sty offers features + that you may find interesting: (i) customize rules between + footnote layers; (ii) \SplitNote (for paragraphed footnotes + at page breaks). (For nccfoots.sty, which manyfoot.sty + requires, there are nccfoots.dtx/pdf as well.) + + +Good Luck! + + +[End of README4U] diff --git a/macros/latex/contrib/ednotes/READMORE.txt b/macros/latex/contrib/ednotes/READMORE.txt new file mode 100644 index 0000000000..340c8b2168 --- /dev/null +++ b/macros/latex/contrib/ednotes/READMORE.txt @@ -0,0 +1,230 @@ +====================+=====+=======++=======+=====+==================== + + FIRST INSTRUCTIONS + for + EDNOTES + Distribution 2006 + (this file October 5, 2006) + + Uwe Lueck, dir. Christian Tapp + http://www.contact-ednotes.sty.de.vu + +====================+=====+=======++=======+=====+==================== + +CONTENTs of the present file: + + Purpose -- recent (future) changes -- RIGHTS -- installing `ednotes' + -- learning about `ednotes' -- standalone packages -- contact us -- + newsletter -- glossary + +PURPOSE of the macros: + + Here are macros for typesetting CRITICAL EDITIONS with LaTeX. + Packages `lineno' by Stephan I. B"ottcher, `manyfoot' by Alexander + I. Rozhenko, and `longtable' by David Carlisle are enhanced and + combined. -- For a few first informations, you may have a look at + http://ednotes.sty.de.vu. + +** RECENT (FUTURE) CHANGES: ** + + If you have used `ednotes' earlier than September 2004, we urge you + to read the `CHANGES' file in the `ednotes' directory, especially + concerning the changes of September/October 2004. `ednotes', + `lineno', and `manyfoot' have been changed at one time and interact + differently than before. Some files have been removed, and former + extension packages are now automatically loaded on `ednotes' package + options. -- Other changes have happened more recently, most notably + in `manyfoot' and `nccfoots'. In general, you should find a LaTeX + warning on screen or in your job.log like + + You have requested ... version ... of ... + but only version ... is available + + telling what other packages need to be updated. + + `CHANGING.txt' deals with the possibility that you haven't got the + most recent version of `ednotes' and friends. + +RIGHTs: + + For COPYRIGHTs as well as conditions of use (NO WARRANTY), + MODIFYING, and (RE)DISTRIBUTION, please see inside the files + mentioned in the present `README' file, as well as + `README-lineno.txt' and `README-ncctools.txt'. Usually, the LaTeX + Project Public License applies, a recent version of which can be + found on + + http://www.latex-project.org/lppl.txt + + Any REDISTRIBUTION of `ednotes.sty' must contain the file `README'. + + If you DISTRIBUTE `manyfoot.sty' and `nccfoots.sty', they must be + accompanied by `manyfoot.dtx', `nccfoots.dtx', and + `README-ncctools.txt'. + +INSTALLATION of `ednotes': + + For enabling yourself to make use of all the options that + `ednotes' provides, download + + edcntwd0.sty + ednmath0.sty + ednotes.sty + edtable.sty + lineno.sty + ltabptch.sty + manyfoot.sty + mfparptc.sty + perpage.sty + nccfoots.sty + vplref.sty + + from + + http://www.ctan.org/tex-archive/macros/latex/contrib/ednotes + + (e.g., cf. `CTAN' in the glossary). Note that clicking on + "entire directory" suffices. + + You then have to make the .sty files listed above "visible" + (see the glossary below) to (La)TeX when it runs your job. + + (You may find out through reading documentations that it partially + depends on your intentions which .sty files actually must be there. + E.g., `ednotes.sty' works already when it is accompanied by + `lineno.sty', `manyfoot.sty', and `nccfoots.sty'.) + +USAGE of `ednotes': + + We recommend not to load (by \usepackage) .sty files other than + `ednotes.sty' (except for "standalone uses" as explained below). + They are handled through `ednotes' package options as explained + in the documentation. + + Sorry, the "user guide" and documentation for `ednotes' is, at + present, scattered over the listed .sty files and over the listed + CTAN folders. Here is just a guide through files and folders to + increase your knowledge step by step: + + 0. Oh, recently some of these explanations have been collected + in ednotes.pdf -- .txt input with .pdf output. + + 1. An overview of `ednotes' has appeared in TUGboat vol. 24. + no. 2; the above `ednotes' directory of CTAN contains an + updated .pdf version `ednotugb.pdf' of it. It demonstrates + through some examples what output certain commands produce. + It also compares `ednotes' with two other (La)TeX packages + for critical edition typesetting. + + 2. Next (or even first) we recommend reading the explanations at + the beginning of `ednotes.sty'. + + 3. You may find references to .sty files from the `ednotes' and + the `lineno' folder for reading about additional details of + usage. + + 4. `lineno.sty' provides commands and options that are very useful + to know for creating critical editions by `ednotes'. You can + read about these commands and options in `lineno.sty'. + Moreover, the explanations from `lineno.sty' can be printed + through `lineno.tex' or `lineno.pdf' obtainable from the above + `ednotes' directory. You find there as well an attempt at a + user's guide for `lineno' -- `ulineno.tex' and `ulineno.pdf'. + The latter is not quite up to date, but it may be helpful + though. -- When you use `ednotes', don't believe what the + `lineno' documentation tells about, e.g., + + \usepackage[edtable]{lineno} + + (such statements address usage of `lineno' without `ednotes'). + Many package options of `ednotes.sty' are just passed to + `lineno.sty', so the `lineno' documentation is `ednotes' + documentation in this respect. + + 5. `manyfoot' is another essential module for making `ednotes' + work, though you may hardly need to know about it, `ednotes' + is a kind of user interface for `manyfoot'. However, you may + inform yourself about offers of `manyfoot' for certain fine + points of critical edition typesetting through `manyfoot.dtx' + or `manyfoot.pdf' -- which you find in + + http://www.ctan.org/tex-archive/macros/latex/contrib/ncctools + + (e.g., cf. `CTAN' in the glossary). There are `nccfoots.dtx' + and `nccfoots.pdf' as well. Indeed you may find functions of + `manyfoot' useful just for your commentary passages. + + 6. `perpage.sty' is mentioned here mainly to allow use of + `manyfoot's `perpage' option. It contains brief explanations. + + 7. `longtable', of course, is explained in `longtable.dtx' and + various guides for LaTeX. + + 8. We have prepared something for listing line numbers for index + terms. We don't take the time to integrate it here -- please + contact us (see below) if you are interested. + +Standalone files: + + Some of the listed .sty files which are our work may be useful + without using `ednotes': + + 1. Whenever you use `manyfoot', you can load `mfparptc.sty' after + `manyfoot.sty' just to modify the behaviour of `manyfoot' in + the way that is explained in `mfparptc.sty'. + + Moreover, there is a file `mfparxsp.sty', made for the + possibility that some `manyfoot' user has used an earlier + version of `mfparxsp.sty' which has become obsolete. + + 2. For extending lineno.sty by packages from here, see + + http://www.ctan.org/tex-archive/macros/latex/contrib/lineno + + (e.g., cf. `CTAN' in the glossary). + + 3. `ltabptch.sty', a patch for `longtable', can be used whenever + `longtable' is used. + + 4. An additional file `lblchng1.sty' deals with page break + oscillations, by code as well as by explanations and + discussion. It can be used entirely independently from + any of the packages mentioned before. + +Contact us: + + We would be happy about your suggestions and (in a way) about your + bug reports. Since documentation is so poor at present, please feel + free to ask us for help if needed. Please contact us via + + http://www.contact-ednotes.sty.de.vu + +Newsletter: + + E.g., you may ask us to take your e-mail address into a mailing + list for reporting `ednotes' changes. + +Lucky typesetting! + +______________________________________________________________________ + +GLOSSARY: + +* `CTAN' + abbreviates `Comprehensive TeX Archive Network', cf., e.g., + + http://www.ctan.org + http://tug.org/ctan.html + + and read about "mirrors" there. You will understand that you + may replace `www.ctan.org/tex-archive' by `www.dante.de/CTAN' + (e.g.) in the above-mentioned URL. (But dante doesn't offer + the "entire directory" function.) + + +* visible to (La)TeX + + -- see the file `visible.txt' in the above `ednotes' directory. + +[END of READMORE.txt]_________________________________________________ + diff --git a/macros/latex/contrib/ednotes/edcntwd0.sty b/macros/latex/contrib/ednotes/edcntwd0.sty new file mode 100644 index 0000000000..1d20e3a84f --- /dev/null +++ b/macros/latex/contrib/ednotes/edcntwd0.sty @@ -0,0 +1,368 @@ +%% EdCntWd0.sty--count word occurrences with ednotes.sty. +\def\fileversion{0.32d} \def\filedate{2006/07/06} %% TODO + +%% Copyright (C) 2004 Uwe L\"uck & Christian Tapp (direction) +%% 2005 2006 Uwe L\"uck. +%% Munich, http://www.contact-ednotes.sty.de.vu. +%% Current maintainer is Uwe L\"uck. + +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt; either +%% version 1.3c of the License, or any later version. +%% We did our best to help you, but there is NO WARRANTY. + +%% * USAGE: * +%% +% 1.) The present file is loaded by the `countoccurrences' package +% option of version v0.8 (onwards) of `ednotes.sty'. +%% +% 2.) If your source code somewhere contains +% <WORD><TEXT>\Anote{<WORD>}{<NOTE>} +% and produces some +% <WORD><TEXT><WORD> +% in *one* printed line, the lemma preceding the note should indicate +% that the note is concerned with the *second* occurrence of <WORD>. +% It would be extremly tedious to implement this requirement in a +% LaTeX macro package. The present package does some part of it. +% If you are, in typing, not sure that the first and second +% occurrence of <WORD> will be printed in different lines, type +% \countword{<WORD>}<TEXT>\Anote{\countword{<WORD>}}{<NOTE>} +% The macro \countword will then check whether the occurrences of +% <WORD> are printed in the same line, and if this happens, the lemma +% preceding the note will have an index `2'. The analogous thing +% <WORD><TEXT><WORD><MORE>\Anote{<WORD>}{<NOTE>} +% works as well (resulting in an index `3'), and so on. +% +% (So the macros do not save you from looking for earlier word +% occurrences, but at least from counting occurrences in the printed +% lines, and you do not have to repeat the procedure when you +% change the width of the printed text.) +% +% Of course, you only have to look for earlier occurrences in the +% same paragraph. +%% +% 3.) Sometimes <WORD> may contain tokens which must not appear in +% label names, e.g., `r\^ole'. In this case, e.g., \countword{r\^ole} +% will break. Then type, e.g., \countword[role]{r\^ole} instead. +% To be more precise: If <WORD> expands to something containing +% a token which is no character token, type +% \countword[<SUBST>]{<WORD>} instead, where <SUBST> expands to +% nothing but character tokens. (Cf. \csname on p. 203 of TeXbook.) +% 4.) Customization: Index numbers appear as subscripts by default. +% To change this, type +% \renewcommand{\CWtextscript}{\textsuperscript} +% or \let\CWtextscript\textsuperscript . +% 5.) Pagewise/running line numbering: Switching from pagewise to +% running line numbering needs an extra run or deletion of +% \jobname.aux. So don't be frightened by an error message. + +%% Please send comments via http://www.contact-ednotes.sty.de.vu. + +%% For wizards: changes lineno.sty's \linenumberpar. + +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +%% <- \newcommand*, \providecommand* +\ProvidesPackage{edcntwd0}[\filedate\space\fileversion\space + ^^JCounting word occurrences with + ednotes.sty (ul)] + +%% * IMPLEMENTATION: * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% * Main ideas: * +% \countword occurrences write their order (per paragraph) and line +% numbers into the .aux-file. With these informations from the +% latter, a table is created which assigns line and place +% numbers to words. A second table re-orders the first one and +% assigns an index to each place number. An index of 0 means that the +% corresponding word appears only once in a line. A higher index +% tells the order in which an occurrence follows others in the line. +% When processed for the lemma tag, \countword realizes its place +% number and, using this, reads the index from the former table and +% prints or does not print an index accordingly. + +% \RequirePackage{ednotes}[2004/01/04] +%% Does this work for mere version checking? +%% No--had the problem with edtable. See LaTeX bug latex/3730. + +% Auxiliaries: +\def\@CW@stepcnt#1{\advance#1\@ne} +\def\@CW@emptylist{\@eltt} %% Need bound for table rows. +% \newif\if@CW@firstinpar \global\@CW@firstinpartrue %% ! + +% \c@CW@par identifies paragraphs which contain \countword. +% From v0.32a onwards, it is kind of a LaTeX counter in order +% to work properly with \includeonly: +\newcount\c@CW@par +\@addtoreset{CW@par}{@ckpt} + +% \@CW@wordlist is made a list of \countword-arguments in one +% paragraph, to be written to the .aux . +\global\let\@CW@wordlist\@empty + +% At the first occurrence of \countword in a paragraph, +% \@CW@makeplaceindex reads the corresponding \@CW@wordlist +% and transforms it into \@CW@wordlinelist -- if it has been +% written in the previous run. Whether the latter is the case +% is recorded by \if@CW@pardef. +\global\let\@CW@make@placindexlist\@CW@makeplaceindexlist +\newif\if@CW@pardef \global\@CW@pardeffalse +\global\let\@CW@wordlinelist\@CW@emptylist +% When there is evidence that there are more occurrences of +% \countword than in the previous run: +\def\@CW@missingdata{\G@refundefinedtrue + \@EN@warning{Missing data (.aux) for + \string\countword\MessageBreak}% +%Package ednotes Warning: Missing data (.aux) for \countword +%on inputline + \CWtextscript?} +%% <- TODO: warning when some \countword has been removed!? + +\def\@CW@makeplaceindexlist{% + \global\let\@CW@make@placeindexlist\relax + \stepcounter{CW@par}% % v0.32a +% \global\@CW@stepcnt\c@CW@par + \@ifundefined{CWp\romannumeral\c@CW@par}% +% {\G@refundefinedtrue \global\@CW@pardeffalse}% + {\global\@CW@pardeffalse}% + {% + \global\@CW@pardeftrue +% \global\let\@CW@wordlinelist\@CW@emptylist +%% \@CW@wordlinelist is built as a "table", each row being +%% <WORD>\@elt<LINENO>\@elt<PLACENO>\@eltt +%% --and there is an extra leading \@eltt. +%% Latter needed for determining exact matching. +% \global\let\@CW@placeindexlist\@CW@emptylist + \begingroup + \count@\z@ \let\@elt\relax \let\@eltt\relax + \edef\@tempa{\noexpand\@tfor \noexpand\@tempa :=% + \csname CWp\romannumeral\c@CW@par\endcsname}% + \@tempa\do{% + \@CW@stepcnt\count@ + \edef\@tempc{r@CWw@\number\c@CW@par @\number\count@}% +%% 2004/07/27: hack for pagewise line numbering: + \expandafter \@ifundefined \expandafter{\@tempc}% + {\gdef\@gtempa{?}}%% \global: cf. below! + {\ifx\c@linenumber\c@runninglinenumber + \gdef\@gtempa{% + \expandafter\expandafter\expandafter \@car +%% Beware hyperref. + \csname\@tempc\endcsname \@nil}% + \else + \begingroup + \def\thelinenumber{% + \xdef\@gtempa{\number\c@linenumber}}% +%% Assumes \getpagewisenumber -> {... \thelinenumber} +%% Local vs. global assignments to \c@linenumber OK according to +%% Stephan. (!?) + \expandafter\expandafter\expandafter \@car + \csname\@tempc\endcsname \@nil + \endgroup + \fi}% +% \typeout{G:\meaning\@gtempa}% TEST + \edef\@tempb{% + \noexpand\g@addto@macro \noexpand\@CW@wordlinelist{% + \@tempa \@elt + \@gtempa +% \expandafter \@ifundefined \expandafter{\@tempc}{?}% +% {\expandafter\expandafter\expandafter \@car +% \csname\@tempc\endcsname \@nil}% + \@elt + \number\count@ \@eltt}}% + \@tempb}% +%% TODO: empty referring macros after use -> ednotes as well. + \xdef\@CW@numberofwords{\number\count@}% +%% \@CW@wordlinelist next is transformed into \@CW@placeindexlist: + \loop +% \typeout{WL=\meaning\@CW@wordlinelist}%% TEST + \ifx\@CW@wordlinelist\@CW@emptylist \else + \global\let\@CW@nextwordlinelist\@empty + \expandafter\@CW@takerow\@CW@wordlinelist\@nil + \ifx\@CW@nextwordlinelist\@empty + \global\let\@CW@wordlinelist\@CW@emptylist + \else + \global\let\@CW@wordlinelist\@CW@nextwordlinelist + \fi + \repeat + \endgroup + }% +% \typeout{PI=\meaning\@CW@placeindexlist}%% TEST +% \global\let\countword\@CW@cntwii +% \@CW@cntwii +} +%% \@CW@placeindexlist has, after starting \@eltt, rows of form +%% <PLACE>\@elt<INDEX>\@eltt . +\global\let\@CW@placeindexlist\@CW@emptylist + +\def\@CW@takerow\@eltt#1\@elt#2\@elt#3\@eltt#4\@nil{% + \count@\@ne + \g@addto@macro\@CW@placeindexlist{#3\@elt}% +%% \@CW@placeindexlist always closes with mostly spurios +%% 0\@eltt, don't know why, but harmless for reading the list. + \def\@CW@matchline##1\@eltt#1\@elt#2\@elt##2\@eltt##3\@nil{% +% \typeout{WL=\meaning\@CW@wordlinelist}%% TEST + \def\@tempa{##1}% +% \typeout{##1}%% TEST + \ifx\@tempa\@CW@emptylist + \g@addto@macro\@CW@placeindexlist{0\@eltt}% + \else + %% \@tempcnta determines one out of four cases, + %% while \count@ counts equal words in a line: + \@tempcnta \ifnum\count@=\@ne \z@ \else \tw@ \fi + \ifx\@nnil##2\@nnil %% No match. + \let\@CW@next\relax + \else %% Match. + \@CW@stepcnt\@tempcnta \@CW@stepcnt\count@ + \@CW@buildnextwordlinelist{##1}% + \def\@CW@next{\@CW@matchline\@eltt##3\@nil}% + \fi + %% Cases determined. +% \typeout{\number\@tempcnta}%% TEST + \ifcase\@tempcnta %% \typeout{Case 0: \count@=1, no match}% + \g@addto@macro\@CW@placeindexlist{0\@eltt}% + \xdef\@CW@nextwordlinelist{\@eltt#4}% + \or %% \typeout{Case 1: \count@=1, match}% + \g@addto@macro\@CW@placeindexlist{1\@eltt##2\@elt2\@eltt}% + \or %% \typeout{Case 2: \count@>1, no match}% + \@CW@buildnextwordlinelist{##1}% + \or %% \typeout{Case 3: \count@>1, match}% + \edef\@tempc{\noexpand\g@addto@macro \noexpand\@CW@placeindexlist + {##2\@elt \number\count@ \@eltt}}% + \@tempc + \fi + \@CW@next + \fi + }% + \@CW@matchline\@eltt#4\@eltt#1\@elt#2\@elt\@eltt\@nil + %% TODO #4 void!? Cf. dummy above, \@CW@next. +} +%% \@CW@buildnextwordlinelist{#1} appends non-void #1 to +%% \@CW@nextwordlinelist: +\def\@CW@buildnextwordlinelist#1{% + \ifx\@nnil#1\@nnil \else + \g@addto@macro\@CW@nextwordlinelist{\@eltt#1}\fi} + +% \c@CW@repword counts occurrences of \countword in a paragraph: +\newcount\c@CW@repword + +\newcommand*\countword[2][\@nil]{% +% \newcommand*\@CW@cntwii[2][\@nil]{% +% \global\@CW@firstinparfalse + \@CW@make@placeindexlist + \global\@CW@stepcnt\c@CW@repword + \def\@tempa{#1}% + \ifx\@tempa\@nnil + \g@addto@macro\@CW@wordlist{{#2}}% + \else + \g@addto@macro\@CW@wordlist{{#1}}% + \fi + \edef\@tempa{\noexpand\linelabel{% + CWw@\number\c@CW@par @\number\c@CW@repword}}% + \@tempa + #2} + +% \@ifdefinable\countword{\global\let\countword\@CW@cntwi} + +% In the lemma tag of the note, \countword behaves as follows. +\addlemmaexpands{\let\countword\@CW@cntwl + \global\c@CW@nrepword\c@CW@repword} +\newcount\c@CW@nrepword + +\newcommand*\@CW@cntwl[2][]{%% First argument just gobbled, +%% using place number instead. + #2% + \@CW@make@placeindexlist + \if@CW@pardef + \global\@CW@stepcnt\c@CW@nrepword + \ifnum\c@CW@repword>\@CW@numberofwords\relax + \@CW@missingdata + \else + \edef\@tempc{% + \def\noexpand\@tempb####1\noexpand\@eltt + \number\c@CW@nrepword}% + %% "look up". + \@tempc \@elt##2\@eltt##3\@nil{\def\@tempa{##2}}% + \expandafter\@tempb \@CW@placeindexlist \@nil + \if 0\@tempa \else +% \CWtextscript{\if ?\@tempa ?\else \@tempa \fi}% + \if ?\@tempa \@CW@missingdata + \else \CWtextscript\@tempa \fi + \fi + \fi + \else +%% \if@CW@pardef and the question marks could have been given up, +%% since there is already the `undefined references' warning. +% \if@CW@firstinpar \CWtextscript 1\else \CWtextscript ?\fi +% \CWtextscript?% + \@CW@missingdata + \fi} +\providecommand*\textsubscript[1]{% +%% Cf. LaTeX \textsuperscript: we will be in a note here! + $\m@th_{\mbox{\fontsize\sf@size\z@\selectfont#1}}$} +\let\CWtextscript\textsubscript +\def\@EN@CWhook{\setbox\z@\hbox} %% To recognize stepping counters. + +%% TODO: empty referring macros after use. -> ednotes as well. + +% \CWClosePar writes \@CW@wordlist to the .aux-file and +% resets the lists and \if@CWpardef: +\newcommand*\CWClosePar{% %% TODO: -> doc.!? Useful? + \ifx\@CW@wordlist\@empty \else +% \immediate\write\@mainaux{% + \immediate\write\@auxout{%% for \includeonly + \gdef\expandafter\noexpand + \csname CWp\romannumeral\c@CW@par\endcsname + {\@CW@wordlist}}% + \global\let\@CW@wordlist\@empty + \global\c@CW@repword\z@ + \fi +% \global\let\countword\@CW@cntwi + \global\let\@CW@placeindexlist\@CW@emptylist + \global\let\@CW@make@placeindexlist\@CW@makeplaceindexlist + \global\let\@CW@wordlinelist\@CW@emptylist + \global\let\@CW@nextwordlinelist\@empty +% \global\@CW@firstinpartrue + \global\@CW@pardeffalse} +\expandafter\def\expandafter\linenumberpar\expandafter{% + \expandafter\CWClosePar\linenumberpar} + +\endinput + +VERSION HISTORY: +v0.01 2004/01/05 Very first release under name `ecntw0.sty'. +v0.1 2004/01/05 Changed names and documentation, new name + `edcntwd0.sty'. +v0.11 2004/01/05 renamed \CWnext -> \@CW@next, added main ideas of + implementation. +v0.12 2004/05/12 Added remark on `linenox1.sty' (load earlier); + added `(C)' and Christian for copyright; + L"uck -> L\"uck. \RequirePackage{ednotes}; + changed doc. accordingly. + 2004/07/06 Added explanation for order with `linenox1.sty' + ("for wizards"). + 2004/07/28 ^^J; cope with pagewise numbering; note on + switching from pagewise to running. +v0.12b .../08/31 Changed to LPPL v1.3, added maintenance. +v0.2 2004/09/20 Removed mentions of `linenox1.sty', for + `lineno.sty' v4... +v0.3 2004/10/07 Usage: to be loaded by `ednotes.sty' option. + 2004/10/11 Removed \RequirePackage{ednotes}; changed some + TODOs. + 2004/10/12 latex/3730. +v0.3a 2004/11/07 LPPL v1.3a. +v0.3b 2005/01/10 Contact via http. +v0.31 2005/02/20 Added \@EN@first. + 2005/03/08 Added Copyright 2005. +v0.32 2005/05/01 Replaced \@EN@first by LaTeX's \@car. + [sent to CTAN, contrary to final line!] + 2006/02/25 Typo fix `USAGE' 5. + 2006/05/01 \if@CW@firstinpar to avoid spurious `?'. + [given to Lekhtman] +v0.32a /06/07 \c@CW@par with \includeonly. + 2006/06/15 replaced \if@CW@firstinpar by + \@CW@make@placeindexlist etc.; + extended documentation; rearranged code. + 2006/06/16 \@CW@missingdata. +v0.32b /06/26 LPPL v1.3c. + /06/29 `Missing data (.aux)' +v0.32c /07/06 \includeonly with less LaTeX counter features. diff --git a/macros/latex/contrib/ednotes/ednmath0.sty b/macros/latex/contrib/ednotes/ednmath0.sty new file mode 120000 index 0000000000..6f003def2a --- /dev/null +++ b/macros/latex/contrib/ednotes/ednmath0.sty @@ -0,0 +1 @@ +../lineno/ednmath0.sty
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/ednotes.pdf b/macros/latex/contrib/ednotes/ednotes.pdf Binary files differnew file mode 100644 index 0000000000..4bfb5a8fb8 --- /dev/null +++ b/macros/latex/contrib/ednotes/ednotes.pdf diff --git a/macros/latex/contrib/ednotes/ednotes.sty b/macros/latex/contrib/ednotes/ednotes.sty new file mode 100644 index 0000000000..9168f7c0f5 --- /dev/null +++ b/macros/latex/contrib/ednotes/ednotes.sty @@ -0,0 +1,1553 @@ +%% Macro package `ednotes.sty' for LaTeX2e, +%% copyright (C) 2002--2005 Uwe L\"uck & Christian Tapp (direction) +%% 2006 Uwe L\"uck +%% http://www.contact-ednotes.sty.de.vu +%% --author-maintained, for critical editions +%% (varying J. Lavagnino's and D. Wujastyk's EDMAC). +%% +\def\fileversion{1.3a} \def\filedate{2006/10/05} %% TODO +% +%% This file can be redistributed and/or modified under +%% the terms of the LaTeX Project Public License; either +%% version 1.3c of the License, or any later version. +%% The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% We did our best to help you, but there is NO WARRANTY. +%% +%% Please report bugs, problems, and suggestions via +%% +%% http://www.contact-ednotes.sty.de.vu +% +%% * USAGE: * +% +% *Overview:* +% This package provides facilities for notes in (critical) editions. +% `\Anote{LEMMA}{NOTE}' prints NOTE in an extra footnote apparatus, +% referring to LEMMA by its line numbers (as generated by +% `lineno.sty') and by repeating LEMMA in the note. By calling the +% package with extra options, you can add \Bnote etc. and choose +% whether notes of one apparatus appear in a single paragraph on +% each page or in separate paragraphs (`manyfoot.sty'). +% In LEMMA, `...\<...\>...' indicates what short version of it is to +% appear in the note. There are further facilities to customize +% appearance of notes. +% Commands \Anotelabel{LABEL}, \donote{LABEL}{NOTE} etc. vary \Anote +% etc. in admitting overlapping lemmas. +% ---The package is made for those who need something like EDMAC +% but who want to employ LaTeX2e at the same time. +% More detailed description below is divided into +% `packages required', `user commands', `package options', +% `customizing', `Note on EDMAC', and `Comparison with LEDMAC'. +% +% *Note on "rival" package LEDMAC:* Peter R. Wilson has made a +% LaTeX package LEDMAC (available on CTAN) for about the same +% purpose as the present package. See `Note on EDMAC' and +% `Comparison with LEDMAC' below. +% +% *Printed presentation:* An article on `ednotes' with user +% instructions, examples, and comparisons with `[L]EDMAC' +% appeared in the TUGboat volume for 2003. A version of it is +% obtainable from the `ednotes' CTAN folder (`ednotugb.pdf'). +% +% *Packages required:* +% This package will not work without the following ones +% ("visible"--cf. visible.txt in CTAN ednotes folder): +% o Packages `manyfoot.sty' (v1.9+) and `nccfoots.sty' by +% Alexander I. Rozhenko from the `ncctools' bundle. +% You needn't know anything about these +% except perhaps options `para' and `para*' +% choosing footnote indentation (see `package options' below). +% o Package `lineno.sty' by Stephan I. B"ottcher. +% We here suppose that you know and employ some of the +% line numbering commands from `lineno.sty'. +% However, please don't load these packages on your own. +% Instead of calling them with some options, put these options +% into the brackets of \usepackage[<options>]{ednotes}. +% +% *Availability:* +% o In case you have not received `manyfoot.sty' and `nccfoots.sty', +% you find them in the CTAN folder +% `macros/latex/contrib/ncctools/unpacked' . +% You find PDF documentations in +% `macros/latex/contrib/ncctools/doc' . +% o `lineno.sty' is in CTAN folder `macros/latex/contrib/lineno'. +% In the same folder, there is `lineno.pdf' for documentation. +% +% *Optional packages:* +% o Some package options may need additional package files (for +% a while). They may be in the `ednotes' or `lineno' CTAN folder. +% The README files there will name them or tell where they are +% named. %% TODO +% +% *Other useful files:* +% Look at the README file in CTAN folder +% `macros/latex/contrib/ednotes' for quick information on what other +% files in the folder provide. %% TODO: indeed? +% +% *User commands:* +% *Basic:* -------------------------------------------------------- +% \Anote{LEMMA}{NOTE} prints LEMMA where it occurs +% and sends NOTE into an extra footnote apparatus. +% The lines where the command occurs must be numbered +% by using commands from package `lineno.sty'. +% In the footnote, NOTE is preceded by line numbers of LEMMA, +% by a version of LEMMA (see below), and by some separating stuff. +% Separating stuff by default is a properly spaced right bracket +% according to \lemmafmt (see below). +% \Anote may be nested in LEMMA. +% (Overlapping lemmas may be generated by \Anotelabel etc. as +% described below.) +% For customizing appearance of notes, see `package options' and +% `customizing' (\lemmafmt and \lemmaellipsis, e.g.) below. +% For additional analogous commands \Bnote etc., see +% `"optional" user commands' below. +% *Short lemma substitute in note:* ------------------------------- +% (The following describes a comfortable extension of +% EDMAC's \lemma.) +% LEMMA argument of \Anote as above may appear as `L1\<L2\>L3', then +% only L1 and L3 appear in the footnote with some ellipsis symbols +% between them. By default, these are \textsymmdots according to +% \lemmaellipsis. +% (For \textsymmdots vs. ordinary \dots see `miscellaneous' below.) +% L2, however, may start with `<ELL>', then ELL is used instead of +% \textsymmdots or whatever else \lemmaellipsis might call. +% (To be sure, symbols `\<', `<', `>', `\>' work in a special way +% in LEMMA. `>' might be used inside ELL if inside braces, e.g., +% `\<<{$>$}>'. <ELL> works as an optional argument of \< like +% brackets usually do in LaTeX---we thought you might use `[' here +% as a symbol to be printed in main text. Care for proper spacing in +% both versions of the lemma by spaces touching \<, \>, and braces. +% ---A special version of the package would be necessary for those +% having no `<', `>' on their keyboards.) +% *Overlapping lemmas:* ------------------------------------------- +% \Anotelabel{LABEL}LEMMA\donote{LABEL}{NOTE} +% works just like \Anote{LEMMA}{NOTE} above. However, by using +% proper LABELs, you can indicate which of overlapping lemmas +% begins and ends where. Note that the second command is only +% \donote, not \Adonote. In LEMMA, \pause{LABEL} and \resume{LABEL} +% act analogously to \< and \> above for lemma substitutes, and +% \pause{LABEL}<ELL> employs your own ELL for the ellipsis. +% LEMMA may contain \Anote and the other way round (in some way). +% However, \pause{LABEL} must not be hidden in braces etc. +% *Commands in lemma as repeated in a note:* ---------------------- +% Some commands should work in main text, but not in the lemma +% text of the note, e.g. \label. With respect to some of them, +% `ednotes.sty' makes an adjustment for this. Nesting of lemmas, +% e.g., is enabled this way. +% For other commands, you can hide code from a note +% by \notinnote, e.g.: \notinnote{\footnote{...}}. +% If you know about relevant (La)TeX internals, you can define +% behaviour of commands in lemmas using \addlemmaexpands, e.g. +% \addlemmaexpands{\let\footnote\@gobble}. +% (However, the latter code is bad if \footnote should occur +% with an optional argument. Moreover, in some cases +% \let...\notinnote may handle spaces better than +% \let...\@gobble, since \notinnote uses a variant of LaTeX's +% \@bsphack and \@esphack. +% ---\addlemmaexpands has only local effect inside group.) +% \showlemmaexpands displays all these extra definitions +% which would apply in the lemma ahead. +% (A lot of commands might be changed here, we chose only few. +% Cf. EDMAC's \no@expands; EDMAC, however, deals with the +% problem in a different way and needs more changes +% than we do.) +% ---You may find +% \IfLemmaTag{<in lemma tag>}{<in main text>} +% useful as well, perhaps more flexible than \notinnote. +% +% *"Optional" user commands:* ------------------------------------- +% Each of \Bnote, \Bnotelabel, \Cnote, \Cnotelabel, \Dnote, +% \Dnotelabel, \Enote, and \Enotelabel is defined by calling +% respective package options `Bpara' or `Bplain' etc., see +% `package options' below. They work like \Anote and \Anotelabel, +% respectively, and nesting and overlapping of their lemmas works +% as for \Anote and \Anotelabel. \donote works with each of +% \Anotelabel, \Bnotelabel etc.---care for different labels. +% \nopunct may help you in case of certain changes of \notefmt, see +% `customizing' below (not active outside notes). +% *Miscellaneous:* ------------------------------------------------ +% As a byproduct, we provide \textsymmdots as an alternative to +% \dots or (more specific) to LaTeX2e's \textellipsis. We feel that, +% in the middle of the short version of a lemma, the text dropped +% should be replaced by symmetrically spaced dots, i.e., in +% L1 ... L3, the space between L1 and the dots should be the same +% as the space between the dots and L3. \textellipsis obstructs this +% by calling a space after the final dot which is not balanced by a +% space before the first dot. \textsymmdots just closes without that +% final space---that's all the difference to \textellipsis. (Cf. +% TeXbook p. 73 where $\ldots$ is recommended for the same purpose.) +% Of course, it is now your job to care for proper spacing on left +% and right, e.g., use it this \textsymmdots\ way. +% Note that with a comma following \dots is quite right while +% `\textsymmdots,' is bad. %% TODO: delimiters!? e.g. [...] +% -- Now (since Sep 2004) indeed there is the `ellipsis' package +% by Peter J. Heslin on CTAN in the /macros/latex/contrib directory! +% It deals with this problem much more thoroughly. +% *Wrong placement:* ---------------------------------------------- +% We do not provide helpful error messages for badly placed \<, +% \pause, and the like in this version. You will just get +% `undefined' errors, complaints about \mskip, or `runaway +% argument' errors.---Doubling labels with \Anotelabel etc. may +% work well if you know what you are doing. +% +% *Package options:* +% 1.) Options `left', `right', `switch', `switch*', `columnwise', +% `pagewise', `running', `modulo', `mathlines', `displaymath', +% `edtable' (edit tabular environments), `longtable' (edit +% `longtable' environments), `nolongtablepatch' are passed to +% package `lineno'; cf. the latter package for information +% (not yet tested all). %% TODO +% `left' and `running' act by default. +% Option `mathnotes' calls `lineno.sty' package option `mathrefs', +% see `lineno' documentation as well. +% 2.) Option `Aplain' arranges all notes for one page generated +% by \Anote and \Anotelabel in a single footnote paragraph. +% Option `Bplain' generates an apparatus using one footnote +% paragraph for each note, with commands \Bnote, and \Bnotelabel. +% Option `Bpara' does the same but arranging all notes +% for one page in a single footnote paragraph. +% Analogues apply to `Cplain', `Cpara', `Dplain', `Dpara', +% `Eplain', and `Epara'. (There is `Apara' as well---default.) +% Option `para*' suppresses indentation of footnote paragraphs +% coming from options like `Apara' (cf. package `manyfoot'). +%% TODO: para indent correct? +% 3.) Option `edmacpara' makes up for problems with `para' +% footnotes that are discussed in `EDMAC.doc' section +% `Paragraphed footnotes'. See our package `mfparptc.sty' for +% details (for the time being). +% 4.) Option `perpage' is just passed to `manyfoot.sty'. +% (This requires that the perpage package has been installed; +% to be obtained from CTAN folder macros/latex/contrib/bigfoot/.) +% 5.) Option `countoccurrences' provides a command \countword +% for a half-way solution of the problem of lemma words that +% occur more than once in a line. See our package `edcntwd0.sty'. +% (With `ednotes.sty' v1.1 you need `edcntwd0.sty' v0.31.) +% +% *Customizing:* +% Appearance of notes is directed by macros \extrafootnoterule, +% \linesfmt etc. occurring in the following lines +% (each starting with \renewcommand). -- More recently, customizing +% footnote rules has been introduced; see below. +% For customizing, copy the respective lines to your own file, +% remove left hand comment mark, and change the definition in the +% right hand pair of braces. (The definition you find there is our +% original one; we hope you understand from these definitions how +% they work in general and what the arguments are. E.g., \linesfmt +% applies to printing of line numbers and, originally, renders them +% bold-faced, followed by \enspace. Note that this default suppresses +% hyphenation of the first word of a lemma tag.) +% This controls identical behaviour in *every apparatus*. +% For changing appearance of a single apparatus without changing +% the remaining, see below.---Note: With v1.1, \ref has been +% removed from the definition of \repeatref, and a \ref in any +% customization of it will not work any longer. As well, earlier +% \linewithpage used \ref and \pageref, and this will not work any +% longer. \linewithpage has been replaced by \pageandline. +% \renewcommand{\extrafootnoterule}{\footnoterule} +% ---This is a `manyfoot.sty' command for separating each extra +% apparatus from the other ones.--- +% \renewcommand*{\sameline}[1]{\linesfmt{#1}} +% \renewcommand*{\differentlines}[2]{\linesfmt{#1--#2}} +% %% TODO: \linesfmt into \@EN@note!? +% \renewcommand*{\linesfmt}[1]{\textbf{#1}\enspace} +% ---E.g., for enabling hyphenation of first word of lemma tag: +% % \renewcommand*{\linesfmt}[1]{\textbf{#1}\enspace +% % \hspace*{0pt}} +% ---Last line works like german.sty's \allowhyphens. +% \renewcommand*{\pageandline}[2]{#1.#2} % #1 page, #2 line. +% \renewcommand{\lemmafmt}[1]{#1\thinspace]\enskip} +% \renewcommand*{\repeatref}[1]{#1} +% ---E.g., for replacing repeated line numbers by non-bold slash: +% % \renewcommand*{\repeatref}[1]{\textnormal{/}} +% \renewcommand{\lemmaellipsis}{\textsymmdots} +% \renewcommand{\notefmt}[1]{#1} +% Note: \notefmt, originally, takes your note just as it is. +% By redefinition +% \renewcommand*{\notefmt}[1]{#1.} +% you might add an automatic closing full stop to each note. +% In a single note of the same apparatus, however, you might then +% want to close by a question mark (e.g.) instead of the fullstop. +% For this purpose, close that note by `?\nopunct'. \nopunct then +% gobbles the full stop waiting ahead. (So much as to \notefmt.) +% ---Customizing a *single apparatus*: +% For changing appearance of the apparatus feeded by \Anote +% without changing remaining apparatuses (feeded by \Bnote etc.), +% take the following lines (the one with a single right brace +% being the last one) to your own file and remove the left hand +% column of comment marks. Remove then left hand comment marks +% of single lines containing commands whose behaviour in the +% apparatus you want to change. Change their definitions in +% right hand braces. (It is quite important never to remove +% right hand comment marks, as you may know!) +% \newcommand{\Anotefmt}{% +% % \renewcommand*{\sameline}[1]{\linesfmt{##1}}% +% % \renewcommand*{\differentlines}[2]{\linesfmt{##1\textendash##2}}% +% % \renewcommand*{\linesfmt}[1]{\textbf{##1}\enspace}% +% % \renewcommand*{\pageandline}[2]{##1.##2}% ##1 page, ##2 line. +% % \renewcommand*{\repeatref}[1]{##1}% E.g., ... +% % % \renewcommand*{\repeatref}[1]{\textnormal{/}}% ... instead. +% % \renewcommand{\lemmafmt}[1]{##1\thinspace]\enskip}% +% % \renewcommand{\lemmaellipsis}{\textsymmdots}% +% % \renewcommand{\notefmt}[1]{##1}% +% } +% For changing the \Bnote apparatus, do the same and change +% \Anotefmt into \Bnotefmt. Analogues apply to \Cnote etc. +% ---You can, moreover, add code in the definition of \Anotefmt etc. +% for additional settings to be active throughout the note +% (including line numbers and lemma reference), +% e.g., for selection of a certain font type. +% ---`manyfoot' v1.9 offers a command \SetFootnoteHook for +% controlling the appearance of the whole paragraph of an apparatus +% in `para' or `para*' style---please see the `manyfoot' +% documentation for examples. `ednotes' v1.2 makes use of this +% through a new command \PrecedeLevelWith{X}{CODE}. E.g., +% \PrecedeLevelWith{A}{\textit{Var.:}} and +% \PrecedeLevelWith{B}{\textit{Sim.:}} (once and for all) +% may distinguish the variant from the similia apparatus. +% CODE may also be used to contol the paragraph indent of +% the apparatus (so the paragraphs may have different +% indents) or to shape the paragraph more generally +% (according to TeXbook chapter 14, especially pp. 101f.). +% To give a general rule, \PrecedeLevelWith{X}{CODE} has +% the same effect as \SetFootnoteHook{CODE} +% \DeclareNewFootnote[para]{X} would have with `manyfoot'. +% Without the `para' option or with the `plain' style of +% notes, CODE just is executed starting each note (preceding +% even the line number and the lemma). +% ---*Special characters:* As is noted in EDMAC's documentation, +% the en-dash for line number printing or the separating right +% square bracket might be coded unusually in some special font +% which has been chosen and so may escape being printed. Should you +% encounter this problem indeed, you can use the previous for remedy +% (e.g., change \lemmafmt). (EDMAC's solution is use of +% \endashchar etc. for taking these characters from the \rm font.) +% ---You may *redefine* most of the commands provided by the +% package. *Exceptions* are \donote, \<, and \>. So you might +% put \newcommand{\variant}{\Anote} or even (for TeXperts) +% \let\variant\Anote into your file (after `ednotes.sty' has been +% read). No problem about nesting will arise (as did with EDMAC). +% EDMAC's suggestion to make <...> a shorthand, however, would +% conflict with our lemma mechanism. (Coexistence would be possible +% by suitable use of braces and repeating present definitions +% after change of <'s catcode.) +% ---Customizing *footnote rules*: From its version 1.5 onwards, +% manyfoot has offered customizing footnote rules, as described +% in section 3 of manyfoot.pdf . Only with version 1.3 onwards, +% our ednotes supports this manyfoot feature. First please note +% that ednotes always simply executes \newfootnote, never +% \DeclareNewFootnote. This seems to suffice for scholarly +% critical editions and for customizing the footnote rules. +% When you read in manyfoot.pdf about customizing footnote +% rules, therefore please disregard any difference between +% \newfootnote and \DeclareNewFootnote.---So please read +% section 3 of manyfoot.pdf . Observe the \SelectFootnoteRule +% commands preceding some \DeclareFootnoteRule commands. +% If such a command precedes \newfootnote{<X>}, ednotes +% produces the same effect if you precede loading ednotes +% after \newcommand{\Select<X>noterule}{<SFR args>}, +% when you would want to use \SelectFootnoteRule<SFR args> +% with mere manyfoot. (The accompanying file varnrule.tex +% explains more and enables you to play with the possibilites.) +% ---(Please never forget to update the ncctools MiKTeX package +% when you update the ednotes package!) +% +% *Your shorthands:* +% \Anote etc. prevent editorial notes from appearing in the +% table of contents when such commands (\Anote etc., i.e.) +% appear in a heading (e.g.). But when you define a shorthand macro +% (using \newcommand) that has an optional parameter and \Anote +% or so in the defining code, something more is needed to have +% the lemma, without the note, in the table of contents (or ...) +% E.g., you might \newcommand*{\variant}[1][A]{\Anote{#2}{#1}} +% so \variant{res} works like \Anote{res}{A} and \variant[B]{res} +% works like \Anote{res}{B}. ednotes v1.22 offers two solutions +% to this problem: +% 1. You can precede your shorthand with \RobustTestOpt whenever it +% appears in a "moving" argument like a chapter heading -- +% \RobustTestOpt\variant{res} as well as +% \RobustTestOpt\variant[B]{res} , e.g. +% 2. You can save yourself from caring for \RobustTestOpt by using +% \NewEdnotesCommand instead of \newcommand -- +% \NewEdnotesCommand*{\variant}[2][A]{\Anote{#2}{#1}} +% These facilities work only when the shorthand has an *optional* +% parameter and at least one *mandatory* parameter -- well, if it +% doesn't have, you can use \RobustTestOpt if you put a pair of +% braces after the shorthand macro name, this would work as well. +% ---You may find +% \IfTypesetting{<for typesetting>}{<for mere expanding>} +% more flexible. +% +% *Known problems:* +% With run-in-paragraph footnotes (options `para' or `para*'), notes +% may end too deep on the page or (with `longtable.sty') even overlap +% with main text. `ednotes.sty' shares this "feature" with EDMAC and +% LEDMAC. Output gets worse as the number of paragraphed-footnote +% series increases. `manyfoot.sty' version 1.7 (!) accounts for this +% by a command \ExtraParaSkip (as an interim solution). This command +% reserves additional vertical space for the notes (so there is less +% space for main text---at the expense of too large empty space on +% some pages). After `ednotes.sty' (or `manyfoot.sty') has been +% loaded (i.e., below \usepackage...), type `\ExtraParaSkip{<skip>}' +% (still in the preamble) where <skip> may be any glue parameter. +% <skip> may be a multiple of any absolute space unit (e.g., `4pt' or +% `2mm'), it may even be a multiple of a space unit depending on the +% font size of notes (\footnotesize)---like `em', `ex', or +% `\normalbaselineskip' (e.g., `.5\normalbaselineskip'). (However, +% stretch and shrink of, e.g., \normalbaselineskip are ignored.) +% Experiment with choices for <skip> such that notes neither overlap +% with main text nor hang too deep on the page. The most safe choice +% is `\ExtraParaSkip{.5\normalbaselineskip}'. +% ---Manyfoot.sty did something similar before; i.e., it reserved +% .5\normalbaselineskip (with respect to \footnotesize) for the notes. +% This may not be needed on some pages (on such pages there may be +% too much empty vertical space). +% ---For the best solution you should, when your work is ready and +% only needs optimization of formatting, type +% \ExtraParaSkip{-.5\normalbaselineskip} +% (to remove the space that Manyfoot.sty reserves) and then insert +% \pagebreak's in your main text to avoid overful pages. +% ---We formerly offered a command \MFparaxbuffer in file +% `mfparxsp.sty' instead. This could be used once only in the +% document preamble. \ExtraParaSkip does not have this limitation. +% This allows, e.g., first setting a "default" value and changing it +% under certain conditions, e.g.: +% \ExtraParaSkip{<skip1>} ... \if... \ExtraParaSkip{<skip2>} ... \fi +% (Thanks to Florian Kragl who presented a similar first remedy for +% the problem.) +% +% *The problem of oscillating page breaks:* +% In typesetting critical editions, there is an increased danger +% of page break oscillations, causing wrong numberings, +% placements, and cross-references. Our package `lblchng1.sty' +% (same CTAN directory) offers help with this. However, +% `ednotes.sty' v1.1 takes over most of the job from +% `lblchng1.sty'. We still recommend to *read the file* +% `lblchng1.sty' on how to use the messages from `lblchng1.sty' +% and `ednotes.sty' on page number changes (be sure that it is +% v0.32 or higher). The warnings from ednotes.sty may suffice. +% Just look at the final messages on screen or in .log. +% -- You can overcome such problems using \pagebreak +% (Standard LaTeX) or \warningpagebreak (from present package) +% -- force the earlier page break! +% \warningpagebreak works like Standard LaTeX \pagebreak, it just +% adds a reminder for the case that such a manual page break +% may become bad after revisions of your entire work. +% +% *A problem with `hyperref.sty':* +% To guarantee compatibility with `hyperref', updating lineno.sty +% to v4.3 is recommended. +% +% *Note on EDMAC:* +% `edmac.doc' is a macro package by John Lavagnino and +% Dominik Wujastyk made for critical editions to be used in presence +% of Plain TeX only. We refer to the macros and documentation of +% this package by `EDMAC'. There is an enhancement `edmacfss.sty' +% for additionally employing the New Font Selection Scheme (NFSS) +% from LaTeX2e. With `edmacfss.sty', some LaTeX commands work by +% accident. However, it replaces LaTeX's \end by PlainTeX's \end, +% so LaTeX environments don't work. Moreover, +% EDMAC defines its own output routine in place of LaTeX's, +% so LaTeX's page assembly and related commands (\marginpar ...) +% are disabled. EDMAC still provides facilities +% (columnar footnotes, endnotes, sublines) which are neither +% implemented here nor in packages `manyfoot' and `lineno' +% on which the present one is based. However, there are authors +% who have had a desire to stay in LaTeX's paradise and to enjoy +%% TODO: Hilbert translation +% EDMAC features at the same time. (E.g., edition may be only part +% of your document, or you want to use many LaTeX packages.) +% Fortunately, Christian was led to packages `manyfoot' and `lineno' +% which implement the most desirable of EDMAC's facilities for use +% with LaTeX. A version of EDMAC's \text and assembly of notes +% remained to be done. We even go beyond EDMAC concerning lemma +% substitutes and overlapping lemmas. +% ---For explanation of present solutions, we sometimes refer to +% EDMAC where similar problems are dealt with in similar but +% sometimes essentially differing ways. Therefore, knowledge of +% EDMAC may foster your understanding commands and remarks +% presented here, but it is not required. +% ---Dominik maintains a homepage for EDMAC and related software: +% http://www.homepages.ucl.ac.uk/~ucgadkw/edmac/ +% +% *Comparison with LEDMAC:* +% (Cf. http://ednotes.sty.de.vu and `ednotugb.pdf'.) +% Peter Wilson's LEDMAC ports EDMAC to LaTeX, i.e., you get +% almost exactly EDMAC *functionality* and same *user interface* +% as in good old EDMAC (some slight changes of command names +% were necessary). Thus it offers a very easy switch to LaTeX +% for EDMAC addicts and is superior in functionality to `ednotes.sty' +% where EDMAC is (columnar footnotes, endnotes, sublines, etc.? +% --first two might change over the years). `ednotes.sty' might +% be favoured if you really need overlapping lemmas, and we tried +% to offer further user-friendly features as spelled out above. +% --Some users want to edit tables. For EDMAC there is the +% TABMAC package providing special commands for this. A TABMAC +% port is part of LEDMAC. This is nice for EDMAC/TABMAC addicts. +% Our additional package `edtable.sty' allows for lemmas in (some) +% LaTeX tabular environments and numbers their rows as if they were +% lines. This is nice for those who only know the LaTeX tabular +% environments. However, TABMAC and its mirror in LEDMAC offer +% facilities which are not provided by LaTeX/ednotes/edtable. +% --LEDMAC *implementation* is very close to EDMAC's as well, +% differing very much from `ednotes.sty', especially concerning +% use of auxiliary files. However, this seems to have no practical +% effects. On very old machines, EDMAC/LEDMAC might be slower, while +% Ednotes might cause memory overflow with small TeX versions and +% many notes. Peter Wilson [3/3 2004] estimates that rather +% EDMAC's/LEDMAC's typesetting everything twice might be a +% disadvantage in comparison with `ednotes.sty'. +% ---In 2004 LEDMAC has been enhanced considerably beyond the +% functionality of EDMAC and `ednotes.sty'. +% It now also includes indexing by line as well as by page, +% a port of Wayne Sullivan's EDSTANZA, new options for line +% numbering, a minipage-like environment (which may break across +% pages) such that remarks are printed immediately after some piece +% of edited text (a letter, e.g.), and "sidenotes". +% Finally an extension package `ledpar' adds parallel typsetting. +% --At least for some time LEDMAC will be more user-friendly +% in providing all functions in a single file with *one* +% *printable* documentation file. %% TODO +% On the other hand, packages we build on are still being enhanced +% in functionality by their authors. +% +% +%% Acknowledgements +% +% Christian saved me from most of the work by having found +% packages `lineno.sty' by Stephan I. B"ottcher and `manyfoot.sty' +% by Alexander I. Rozhenko which do the output stuff. Thanks to +% Christian, Stephan and Alex! I appreciate their work (especially +% Stephan's approach to adding and remembering line numbers), and I +% admire John Lavagnino's and Dominik Wujastyk's work on EDMAC. +% I am also grateful for their encouragement. U.L. +% +% Moreover I am much indebted to Stephan B"ottcher and Alex +% Rozhenko for their co-operation in reducing the number of +% package files that `ednotes.sty' needs. (This was 2004, +% version v1.0.) +% +% For pointing out errors and problems, we are grateful to test +% users Robert Alessi, Sergei Mariev---see version history. +% Florian Kragl contributed to now `manyfoot.sty's \ExtraParaSkip +% as described above. v1.1 and v1.23c are due to problems that +% Roy Flechner reported. v1.12 is due to Hillel Chayim Yisraeli's +% discovery of spurious footnote marks. +% +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +% 1994/12/01: \newcommand* etc. %% TODO: more recent needed? +\ProvidesPackage{ednotes} + [\filedate\space v\fileversion, + for critical editions] + %%%(ul)]%%%by Uwe L\string\"uck.] +% +%% Our warnings: +\def\@EN@warning{\PackageWarning{ednotes}} +% +%% Package Options: +% +% Own options +% (must appear before `para*' so this can override `para'): +%% TODO: true!? +%% TODO: Something to make use of Alex' \SplitNote!? +\let\if@EN@Apara\iftrue % Makes option `Apara' default. +\DeclareOption{Apara}{% Redundant, just in case ... + \@EN@warning{Package Option `Apara' is redundant} +% \PassOptionsToPackage{para}{manyfoot}% +% \AtEndOfPackage{% +% \newfootnote[para]{A}% +% \newcommand{\Anote}{\@EN@note A}% +% \newcommand{\Anotelabel}{\@EN@notelabel A}% +% }} +} +\DeclareOption{Aplain}{% + \let\if@EN@Apara\iffalse +% \AtEndOfPackage{% +% \newfootnote{A}% +% \newcommand{\Anote}{\@EN@note A}% +% \newcommand{\Anotelabel}{\@EN@notelabel A}% +% }} +} +\DeclareOption{Bpara}{% + \PassOptionsToPackage{para}{manyfoot}% + \AtEndOfPackage{% + \SetFootnoteHook{\@EN@MF@hook@B}% + \let\@EN@MF@hook@B\@empty + \@ifundefined{SelectBnoteRule}{}{% + \expandafter\SelectFootnoteRule\SelectBnoteRule + \let\SelectBnoteRule\relax}% + \newfootnote[para]{B}% + \newcommand{\Bnote}{\@EN@note B}% + \newcommand{\Bnotelabel}{\@EN@notelabel B}% +}} +\DeclareOption{Bplain}{% + \AtEndOfPackage{% + \SetFootnoteHook{\@EN@MF@hook@B}% + \let\@EN@MF@hook@B\@empty + \@ifundefined{SelectBnoteRule}{}{% + \expandafter\SelectFootnoteRule\SelectBnoteRule + \let\SelectBnoteRule\relax}% + \newfootnote{B}% + \newcommand{\Bnote}{\@EN@note B}% + \newcommand{\Bnotelabel}{\@EN@notelabel B}% +}} +\DeclareOption{Cpara}{% + \PassOptionsToPackage{para}{manyfoot}% + \AtEndOfPackage{% + \SetFootnoteHook{\@EN@MF@hook@C}% + \let\@EN@MF@hook@C\@empty + \@ifundefined{SelectCnoteRule}{}{% + \expandafter\SelectFootnoteRule\SelectCnoteRule + \let\SelectCnoteRule\relax}% + \newfootnote[para]{C}% + \newcommand{\Cnote}{\@EN@note C}% + \newcommand{\Cnotelabel}{\@EN@notelabel C}% +}} +\DeclareOption{Cplain}{% + \AtEndOfPackage{% + \SetFootnoteHook{\@EN@MF@hook@C}% + \let\@EN@MF@hook@C\@empty + \@ifundefined{SelectCnoteRule}{}{% + \expandafter\SelectFootnoteRule\SelectCnoteRule + \let\SelectCnoteRule\relax}% + \newfootnote{C}% + \newcommand{\Cnote}{\@EN@note C}% + \newcommand{\Cnotelabel}{\@EN@notelabel C}% +}} +\DeclareOption{Dpara}{% + \PassOptionsToPackage{para}{manyfoot}% + \AtEndOfPackage{% + \SetFootnoteHook{\@EN@MF@hook@D}% + \let\@EN@MF@hook@D\@empty + \@ifundefined{SelectDnoteRule}{}{% + \expandafter\SelectFootnoteRule\SelectDnoteRule + \let\SelectDnoteRule\relax}% + \newfootnote[para]{D}% + \newcommand{\Dnote}{\@EN@note D}% + \newcommand{\Dnotelabel}{\@EN@notelabel D}% +}} +\DeclareOption{Dplain}{% + \AtEndOfPackage{% + \SetFootnoteHook{\@EN@MF@hook@D}% + \let\@EN@MF@hook@D\@empty + \@ifundefined{SelectDnoteRule}{}{% + \expandafter\SelectFootnoteRule\SelectDnoteRule + \let\SelectDnoteRule\relax}% + \newfootnote{D}% + \newcommand{\Dnote}{\@EN@note D}% + \newcommand{\Dnotelabel}{\@EN@notelabel D}% +}} +\DeclareOption{Epara}{% + \PassOptionsToPackage{para}{manyfoot}% + \AtEndOfPackage{% + \SetFootnoteHook{\@EN@MF@hook@E}% + \let\@EN@MF@hook@E\@empty + \@ifundefined{SelectEnoteRule}{}{% + \expandafter\SelectFootnoteRule\SelectEnoteRule + \let\SelectEnoteRule\relax}% + \newfootnote[para]{E}% + \newcommand{\Enote}{\@EN@note E}% + \newcommand{\Enotelabel}{\@EN@notelabel E}% +}} +\DeclareOption{Eplain}{% + \AtEndOfPackage{% + \SetFootnoteHook{\@EN@MF@hook@E}% + \let\@EN@MF@hook@E\@empty + \@ifundefined{SelectEnoteRule}{}{% + \expandafter\SelectFootnoteRule\SelectEnoteRule + \let\SelectEnoteRule\relax}% + \newfootnote{E}% + \newcommand{\Enote}{\@EN@note E}% + \newcommand{\Enotelabel}{\@EN@notelabel E}% +}} +% This is as much as EDMAC provides. +%% TODO: efficiency!? +%% TODO: shorten previous by temporary defining macro +%% \@EN@tempa!? (dangerous) +% +% Load `mfparptc.sty' after `manyfoot.sty': +\DeclareOption{edmacpara}{% + \AtEndOfPackage{% +% \RequirePackage{afterpackage}\AfterPackage{% TODO + \RequirePackage{mfparptc}[2006/06/26]}% +% <- nccfoots v1.2. +% }% +} +% +%% TODO \afterpackage: +% Load `edcntwd0.sty' after `lineno.sty': +\DeclareOption{countoccurrences}{% + \AtEndOfPackage{\RequirePackage{edcntwd0}[2006/06/16]}} +% <- first occurrence bug fix. +% +% `edtable' options remain "unknown" and thus are passed to +% `lineno.sty'. +% +% Options for package `manyfoot': +% Calling option `ruled' or `para' for `ednotes' is redundant, +% but in case ... +\DeclareOption{ruled}{\@EN@warning% + {Package Option `ruled' is redundant}} +\DeclareOption{para}{\@EN@warning% + {Package Option `para' is redundant}} +\DeclareOption{para*}{\PassOptionsToPackage{para*}{manyfoot}} +% Suppresses footnote indentation. +% Overrides `para' as called from own options. +\DeclareOption{perpage}{\PassOptionsToPackage{perpage}{manyfoot}} +% +% Options for package `lineno': +\DeclareOption{mathnotes}{\PassOptionsToPackage{mathrefs}{lineno}} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{lineno}} +% +% %% TODO: Really load lineno.sty here!? Otherwise remove options. +% %% TODO: Interfaces for alternative auxiliary packages. +% \ExecuteOptions{Apara} % \newcommand... bad for opposite option. +\ProcessOptions +% +%% Load required packages: +\RequirePackage[ruled\if@EN@Apara,para\fi]{manyfoot}[2005/05/11] +%% <- \SetFootnoteHook +%% todo: Leave choice to user!? -> `unruled' -- \Select... suffices. +%% TODO: ruled -> \Execute...!? + +\RequirePackage{lineno}[2004/10/11] +% Hack for `lineno.sty' version. If \@LN@postlabel is defined, assume +% `lineno' version 4 has been loaded. %% TODO +\@ifundefined{@LN@postlabel}{% + \@EN@warning{We urge you to use `lineno.sty' version 4!} + \RequirePackage{linenox0}[2004/08/12]%% No page break after heading +%% (left to `linenox1.sty'). +}\relax +% +%% Execute option concerning first apparatus: +\SetFootnoteHook{\@EN@MF@hook@A} +\let\@EN@MF@hook@A\@empty +\@ifundefined{SelectAnoteRule}{}{% + \expandafter\SelectFootnoteRule\SelectAnoteRule + \let\SelectAnoteRule\relax}% +\if@EN@Apara + \newfootnote[para]{A}% Needs `manyfoot.sty'. + \newcommand{\Anote}{\@EN@note A}% + \newcommand{\Anotelabel}{\@EN@notelabel A}% +\else + \newfootnote{A}% + \newcommand{\Anote}{\@EN@note A}% + \newcommand{\Anotelabel}{\@EN@notelabel A}% +\fi +% +%% User commands (if not defined in option code etc.): +\newcommand{\addlemmaexpands}{\@EN@addtomacro\@EN@lemmaexpands} +%% <- local; cf. using LaTeX's \g@addto@macro: %% TODO: decide +\newcommand{\showlemmaexpands}{% + \typeout{\string\@EN@lemmaexpands=\meaning\@EN@lemmaexpands}% +} +% +\DeclareTextCommandDefault{\textsymmdots}{% + .\kern\fontdimen3\font.\kern\fontdimen3\font.\@% +} +% +% +%% Customizable commands: +% +\newcommand*{\sameline}[1]{\linesfmt{#1}} +\newcommand*{\differentlines}[2]{\linesfmt{#1\textendash#2}} +%% TODO: \linesfmt into \@EN@note!? +\newcommand*{\linesfmt}[1]{\textbf{#1}\enspace} +\newcommand*{\pageandline}[2]{#1.#2} +\newcommand*{\repeatref}[1]{#1} +% \newcommand*{\repeatref}[1]{\textnormal{/}} +\newcommand{\lemmafmt}[1]{#1\thinspace]\enskip} %% TODO: \long!? +\newcommand{\lemmaellipsis}{\textsymmdots} +\newcommand{\notefmt}[1]{#1} \let\notefmt\@firstofone +%% <- TODO: \long!? +% \newcommand{\notefmt}[1]{#1.} +% +%% Core code: + +% Interface for manyfoot's \SetFootnoteHook facility: +\newcommand{\PrecedeLevelWith}[2]{% + \expandafter \renewcommand \csname @EN@MF@hook@#1\endcsname{#2}} +% \renewcommand might help when an level is addressed that +% has not been called through an option. + +% Auxiliary needed before calling \addlemmaexpands below: +\long\def\@EN@addtomacro#1#2{% #1 cs, #2 new. +% Local, cf. LaTeX's \g@addto@macro. + \expandafter\def\expandafter#1\expandafter{#1#2}% +} +% %% TODO: \long!? see building of lemmaarg and lemmatag. +%% TODO: \tok@ so no doubling of `#'!? +% +% Our sphack for going around control sequences in text: +\def\@EN@sphack{\relax + \ifhmode\ifdim\lastskip>\z@ \ignorespaces \fi\fi +} +% For ellipsis commands in moving arguments: +\def\IfTypesetting{% + \ifx\protect\@typeset@protect \expandafter \@firstoftwo + \else \expandafter \@secondoftwo + \fi +} +% A nice shortcut (v1.23): +\def\@EN@xpxpxp{\expandafter\expandafter\expandafter} + +% Basic handling of \Anote etc.: +\long\def\@EN@note#1#2{% #1 note family, #2 lemma. + \IfTypesetting{% + \def\@EN@notefam{#1}\@EN@process #2\<\>\@nil + }{\@EN@robust@process #2\<\>\@nil}% +} +% +% Lemma versions and preparing label: +\long\def\@EN@process#1\<#2\>#3\@nil{% +% Usage: \@EN@process #k\<\>\@nil. +%% TODO: simplify using LaTeX's \in@!? +% Implementation: don't leave control to user's input unless \<, \> +% have been processed. <...> is postponed in main text. + \def\@EN@lemmaarg{\ignorespaces#1}% +% \ifx\@EN@lemmaarg\@empty %% \fi %% TODO: complain!? +% \let\@EN@lemmatag\@EN@lemmaarg %% Would be overridden. + \ifx\@nnil#2#3\@nnil + % No ellipsis, #1 all of user's input, dummy \<\> gobbled. + \@EN@addtomacro\@EN@lemmaarg\unskip + \@EN@simplelemmatag + \@EN@mathlemmatag + \else + \@EN@simplelemmatag + \ifx\@nnil#3\@nnil % \<, but no \> from user. + % #2 ends on \<, \>\@nil gobbled. + \@EN@gobble@pause#2\@nil\@nil + \else + % #3 ends on dummy \<\>. + \@EN@gobble@resume\@EN@gobble@pause#2\@EN@sphack\@nil + % This \@EN@sphack replacing \> in main text. + #3\@nil\@nil + \fi + \fi + \IfLemmaTag % v1.3 + {\@EN@lemmaarg\@gobble}% + %% TODO: \...process might otherwise be redirected to + %% \...robust@process immediately. %% ??? + {\stepcounter{EN@label}% +% Much must be expanded, especially for storing the note in a +% hook (some tables): + \edef\@EN@tempa{\noexpand\@EN@putdown{EN@l\number\c@EN@label}}% + \@EN@xpxpxp \@EN@tempa + \expandafter \@EN@notefam \expandafter {\@EN@lemmatag}}% +} +\long\def\@EN@gobble@pause#1\<\@nil{% + \futurelet\@let@token + %% <- TODO \@EN@finishlemma like \@EN@gobble@opt@till!? + \@EN@finishlemma #1\@nil} +% #1 contains \@nil separating arguments. +% Variant of LaTeX's \@ifnextchar---don't gobble spaces: +\def\@EN@finishlemma{% + \ifx\@let@token<% + \let\@EN@next\@EN@xfinlem + \else + \def\@EN@next{\@EN@xfinlem<\lemmaellipsis>}% + \fi + \@EN@next +} +\long\def\@EN@xfinlem<#1>#2\@nil#3\@nil{% + \@EN@addtomacro\@EN@lemmaarg{\@EN@sphack#2#3\unskip}% + \@EN@addtomacro\@EN@lemmatag{#1\@EN@CWhook{#2}#3\unskip}% + \@EN@mathlemmatag + % %% TODO: doc.: final \unskip -> space properly! +} +% Brackets might have been used instead of <ELL>; however, +% I am afraid that the user might use brackets at symbols to be +% printed right here. Alternative (but needs extra code to test +% for \extraellipsis): \extraellipsis{ELL}. %% TODO: decide +% Think of keyboards without `<', `>'? +\long\def\@EN@gobble@resume#1\>\@nil{#1} +\let\@EN@CWhook\@gobble %% For counting words package. +\def\@EN@simplelemmatag{\let\@EN@lemmatag\@EN@lemmaarg} +% Useful for math mode extension as well. +\let\@EN@mathlemmatag\relax %% Hook for math mode. +% +% \newcounter{EN@label} +% % <- for \includeonly, v1.23; sufficient v1.3: +\newcount\c@EN@label +\@addtoreset{EN@label}{@ckpt} +% +% New mechanism for ellipsis in lemma -- supporting nested lemmas +% or at least lemmas shared by apparatuses exceeding one +% (v1.22b 2006/01/13): +\def\@EN@ltag@ellipsis{% + \futurelet\@let@token\@EN@make@nested@lemmaellipsis}% +\def\@EN@make@nested@lemmaellipsis{% + \ifx\@let@token<% + \expandafter \@EN@ellipsis@only + \else + \expandafter \@EN@ellipsis@only + \expandafter <\expandafter \lemmaellipsis \expandafter >% + \fi} +\long\def\@EN@ellipsis@only<#1>#2\>{#1} +% +% .aux entries, note, and lemma in main text: +% (v1.1: much changes. I just remove what was before, see stored +% older version.) +\long\def\@EN@putdown#1#2#3#4{% +% #1 label, #2 note family, #3 lemma tag, #4 note. +% %% TODO: \long!? + \linelabel{-#1}% Ensures hmode. +% Insert footnote: + \@EN@hookfn{% + \csname Footnotetext#2\endcsname\@empty{% +% \@empty v1.12, due to HCY's report of spurious footnote marks. + \csname#2notefmt\endcsname + \let\@currentlabel\@empty + \label{#1}% Need page number of note. + \let\nopunct\@gobble % or by \if... +% Print line numbers: + \@ifundefined{r@#1}% +%%% ...unknown + ...incomplete@ref v1.23: %%% + {\differentlines\@EN@unknown\@EN@unknown}% + {\let\@EN@incomplete@ref\relax + \@EN@xpxpxp \@EN@extract\csname r@#1\endcsname + \@EN@incomplete@ref\@EN@incomplete@ref + \@EN@incomplete@ref\@EN@incomplete@ref + \ifx\@EN@elemp\@EN@Incomplete + \G@refundefinedtrue + \let\@EN@incomplete@ref\@EN@unknown + \fi + \@tempswatrue + \ifx\@EN@bleml\@EN@eleml \else \@tempswafalse \fi +% Restart of line numbers / different page!? + \ifx\@EN@blemp\@EN@elemp \else \@tempswafalse \fi + \if@tempswa + \sameline{\@EN@plref\@EN@blemp\@EN@bleml}% + \else + \@EN@lastline@z@ + \differentlines{\@EN@plref\@EN@blemp\@EN@bleml}% + {\ifx\@EN@blemp\@EN@elemp % v1.23 + \@EN@eleml + \else + \pageandline\@EN@elemp\@EN@eleml + \fi}% +% {\@EN@plref\@EN@elemp\@EN@eleml}% + \@EN@lastline@z@ + \fi}% +% \strut % Redundant (\rule\z@\footnotesep TODO: CHECK) +% \expandafter \let \csname r@#1\endcsname \relax %% v1.1. +%% <- 2005/02/21: No, need label for testing. + \lemmafmt{{\@EN@lemmaexpands#3}}% + \notefmt{#4}% + }% + }% + % Lemma in main text: + \nobreak \hskip\z@skip %% 2006/01/12 cf. german.sty: \allowhyphens + \@EN@lemmaarg %% Should not end with space so \linelabel... +%% \allowhyphens not needed here (tested) 2006/01/12 + \linelabel{+#1}% + % \csname #1rightmark\endcsname %% Suggested. +} +\let\@EN@hookfn\@firstofone +\def\@EN@extract#1#2#3#4#5{% +% #1 note page, #2 first lemma line, #3 first lemma page, +% #4 last lemma line #5 last lemma page. + \def\@EN@tempa{#1}% + \def\@EN@bleml{#2}\def\@EN@blemp{#3}% + \def\@EN@eleml{#4}\def\@EN@elemp{#5}% +} +\def\@EN@unknown{\textnormal{\bfseries ??}} % v1.23 +\def\@EN@Incomplete{\@EN@incomplete@ref} % v1.23 +\def\@EN@lastline@z@{\global\let\@EN@lastline\z@} +\@EN@lastline@z@ % Next line number in note explicitly. +\def\@EN@plref#1#2{% #1 page, #2 line. +% \@EN@tempa is note page from \@EN@extract. + \ifx#1\@EN@tempa %% Note and lemma part on same page. + \ifx#2\@EN@lastline %% Same line as before. + \repeatref#2% %% v1.1: changed use! + \else + #2\global\let\@EN@lastline#2% + \fi + \else + \pageandline#1#2% %% v1.1: new! + \fi +} +% +% Expanding in note version of lemma: +\let\@EN@lemmaexpands\@empty +\long\def\@EN@gobble{\@EN@sphack\@gobble} +\long\def\@EN@gobbletwo{\@EN@sphack\@gobbletwo} +\long\def\@EN@secondofthree#1#2#3{\@EN@sphack#2} +\let\IfLemmaTag\@secondoftwo % v1.3 +% <- Had thought I would use it more than once ... +% ... maybe for replacing some \addlemmaexpands entries: +\addlemmaexpands{% + \let\IfLemmaTag\@firstoftwo + \let\notinnote\@EN@gobble + \let\@EN@note\@EN@secondofthree + \let\@EN@notelabel\@EN@gobbletwo +% \let\resume\notinnote \let\pause\notinnote + % <- v1.23c -- Thanks to Roy Flechner. +% \let\pause\@EN@pause@ltag % v1.3 +% \let\donote\@EN@gobbletwo + \let\label\notinnote \let\linelabel\notinnote + \let\<\@EN@ltag@ellipsis +} +%% <- TODO: user commands only!? (no \let) +%% TODO: cf. EDMAC's tag (fonts? accents? -- lineno.sty commands?) +\let\notinnote\@firstofone +% +% Variant of \@EN@process when moving: (v1.21/1.22) +\long\def\@EN@robust@process#1\<#2\>#3\@nil#4{% + #1% + \ifx\@nnil#2#3\@nnil + % No ellipsis, #1 all of user's input, dummy \<\> gobbled. + \else + \@EN@sphack@aux{}% for ensuing space in .aux, v1.3 + \ifx\@nnil#3\@nnil % \<, but no \> from user. + % #2 ends on \<, \>\@nil gobbled. + \@EN@robust@gobble@pause#2\@nil + \else % #3 ends on dummy \<\>. + \@EN@gobble@resume + \@EN@robust@gobble@pause#2\@EN@sphack@aux{}#3\@nil\@nil + \fi + \fi +} +\DeclareRobustCommand{\@EN@sphack@aux}{\@EN@sphack\@gobble} +\long\def\@EN@robust@gobble@pause#1\<\@nil{% + \@EN@gobble@opt@till#1<>\@nil} +\long\def\@EN@gobble@opt@till#1<#2>#3\@nil{% + \ifx\@nnil#3\@nnil + #1\ifx\@nnil#2\@nnil \else + <\@EN@gobble@less#2\@nil \fi % v1.3 + \else + \ifx\@nnil#1\@nnil\else#1<#2>\fi \@EN@gobble@diamond #3\@nil + \fi} + % <- TODO weak against aggressive expansion +\long\def\@EN@gobble@less#1<\@nil{} +\long\def\@EN@gobble@diamond#1<>\@nil{#1} +% +% Shorthand macros for lemma in moving argument: +\newcommand\RobustTestOpt{% + \ifx\protect\@typeset@protect \else + \expandafter \@EN@robust@test@opt + \fi +} +\long\def\@EN@robust@test@opt#1#2#{% + \ifx\@nnil#2\@nnil + \@EN@xpxpxp \@EN@expand@with@default + \else + \@EN@xpxpxp \@EN@expand@with@option + \fi + #1#2} +\newcommand\@EN@expand@with@default[4]{#3[{#4}]} +\newcommand\@EN@expand@with@option[4]{#3} + +\newcommand\NewEdnotesCommand{% + \@ifstar{\@EN@newcommand*}{\@EN@newcommand{}}} +\def\@EN@newcommand#1#2[#3][#4]{% + \expandafter \newcommand \expandafter #2\expandafter {% + \expandafter \RobustTestOpt \csname \string #2\endcsname} + \def\@tempa{\newcommand#1}% + \expandafter \@tempa \csname \string #2\endcsname[#3][#4]} + +% Handling \Anotelabel etc.: +% \@EN@lemmaarg is to become the LEMMA argument for \@EN@process. +% A first version is obtained by reading unto the \donote +% bearing the same label. \@EN@lemmaarg is then rebuilt, +% replacing \pause and \resume by \< and \>. +\def\@EN@notelabel#1#2{% #1 note family, #2 label. + \IfTypesetting{% v1.3 + \def\@EN@notefam{#1}% + \def\@EN@laplabel{#2}% + \let\@EN@lemmaarg\@empty + \let\@EN@next\@EN@firstnext + \@EN@next + }\relax % Second argument: otherwise do nothing. +% The following removed braces urgently needed: +% \@EN@getlabel\donote +% {\@EN@laplabel +% \expandafter\def\expandafter\@EN@next\expandafter +% {\expandafter\@EN@replacepause +% \@EN@lemmaarg\pause\@nil\resume\@nil}% +% \else +% \@EN@appendwrong +% }% +} +\long\def\@EN@firstnext#1\donote#2#3{% + \def\@EN@tempa{#2}% + \ifx \@EN@tempa \@EN@laplabel + \@EN@addtomacro\@EN@lemmaarg{#1}% + \expandafter \def \expandafter \@EN@next \expandafter {% + \expandafter \@EN@replacepause + \@EN@lemmaarg \pause\@nil\resume\@nil{#3}}% + \else + \@EN@addtomacro\@EN@lemmaarg{#1\donote{#2}{#3}}% + \fi + \@EN@next +}% +\def\@EN@getlabel#1#2{% +% jump to cs #1, #2: on \@EN@tempa=... +% \let#2\@empty + \def\@EN@appendwrong{% + \expandafter\@EN@addtomacro \expandafter\@EN@lemmaarg + \expandafter {\expandafter#1\expandafter{\@EN@tempa}}% + }% + \long\def\@EN@next##1#1##2{% + % %% TODO: \let [pre-defined] for efficiency!? + \@EN@addtomacro\@EN@lemmaarg{##1}% + \def\@EN@tempa{##2}% + \ifx\@EN@tempa#2\fi + \@EN@next + }% + \@EN@next +} +\def\@EN@replacepause{% + \let\@EN@lemmaarg\@empty + \@EN@getlabel\pause + {\@nnil + \def\@EN@next\resume\@nil{\@EN@donote}% + \else + \ifx\@EN@tempa\@EN@laplabel + \@EN@addtomacro\@EN@lemmaarg\<% + \let\@EN@next\@EN@replaceresume + \else + \@EN@appendwrong + \fi + }% +} +\long\def\@EN@replaceresume#1\pause\@nil{% + \@EN@getlabel\resume + {\@nnil + \let\@EN@next\@EN@donote + \else + \ifx\@EN@tempa\@EN@laplabel + \long\def\@EN@next####1\resume\@nil + % %% TODO: \let [pre-defined] for efficiency!? + {\@EN@addtomacro\@EN@lemmaarg{\>####1}\@EN@donote}% + \else + \@EN@appendwrong + \fi + }% + #1% \resume\@nil ahead. +} +\def\@EN@donote{\expandafter\@EN@process\@EN@lemmaarg \<\>\@nil} +% +% Variants for \@EN@notelabel in lemma tag or when moving: +% (v1.3) +\def\@EN@notelabel@cmd#1#2#3{% + \IfLemmaTag{#2}{% + \IfTypesetting{% + \PackageError{ednotes}{Misplaced \string#1}{% + Missing ...notelabel; + cf. package documentation.}% + }{\@EN@sphack@aux{}#3}}} +% +\newcommand\pause{% + \@EN@notelabel@cmd\pause + {\futurelet\@let@token\@EN@pause@ltag}\@EN@pause@aux} +\def\@EN@pause@ltag#1{% + \@EN@sphack\ifx\@let@token<\expandafter\@EN@gobble@opt\fi} +\def\@EN@gobble@opt<#1>{} +\long\def\@EN@pause@aux#1#2\resume{% + \@EN@gobble@opt@till #2<>\@nil\resume} +% +\newcommand\resume{% + \@EN@notelabel@cmd\resume\@EN@gobble\@gobble} +\newcommand\donote{% + \@EN@notelabel@cmd\donote\@EN@gobbletwo\@gobbletwo} + +% v1.1: reduce number of control strings from \newlabel. +% We keep using \linelabel and \label for kind of simplicity and +% because modifying them would hardly save time or save us from +% the difficulties that we face here. Instead we modify +% \newlabel to prevent it from dealing with labels coming from +% annotations in the usual way. +% +% Storing and restoring of \newlabel and `lineno.sty's +% \getpagewiselinenumber: %% TODO: do without the latter anyway? +\let\@EN@newlabel\newlabel +\let\@EN@getpagewiselno\getpagewiselinenumber +\let\getpagewiselinenumber\relax +\AtBeginDocument{\let\getpagewiselinenumber\@EN@getpagewiselno} +% +% For each lemma and note, there will be one macro carrying the +% corresponding line and page numbers. Below, \@EN@tempa will +% carry the name of that macro. \@EN@bleml will be the line +% number, \@EN@blemp the page number from the \newlabel arguments. +% \@EN@extractcslp will do the assignments for \@EN@tempa, +% \@EN@bleml, and \@EN@blemp. Three \newlabel's will come to +% deliver the numbers for one note, each will add to the +% expansion code of the corresponding macro. The page number of +% the note is attached to the left; ensuring that it is on the +% same place in each case. (Indeed, usually the .aux entry from +% the note comes .aux after the final entry from the lemma, but +% when a page break happens within the latter, this order may +% reverse.) \@EN@addtolabeldef will do this. It will at first +% look as if \@EN@extractcslp and \@EN@addtolabeldef should +% better have been merged into one single macro; however, we +% need them for the final testing function below, where they +% appear in different contexts. +% TODO: The format of the numbers list is +% {<notepage>}{<blemline>}{<blempage>}{<elemline>}{<elempage>} +% This is LaTeX-like, cf. storing of the numbers for a usual +% \ref. It is easy to read the second or so term. Yet it wastes +% a lot of memory with critical editions. It might be better to +% use a single token as separator, as (L)EDMAC do. +% +\def\@EN@addtolabeldef#1#2{% add #1 left, #2 right. + \expandafter \protected@xdef \@EN@tempa{% + #1\@EN@tempa#2}} +\def\@EN@fornotelabel#1#2#3{% #1 sign, #2 label, #3 def. + \in@{\@@#1EN@l}{\@@#2}% LaTeX's \in@, \ifin@. + \ifin@ + \@EN@extractcslp#2\@nil#3\@nil +% Now, in one step, \@EN@tempa expands to the name of the macro +% that \newlabel defines at \begin{document}. +% The \newlabel with `-' will always come first, so this macro +% has not been defined yet: + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\def\newlabel#1#2{% +% It should be possible to read #2 later, but it's difficult. +% ...extractcslp might be split into parts of ...fornotelabel +% and some other macro doing more. [TODO] + \@EN@fornotelabel-{#1}{#2}{% + \@EN@addtolabeldef\@gobble{{\@EN@bleml}{\@EN@blemp}}% +% \typeout{\expandafter\string\@EN@tempa \space +% (-) \expandafter\meaning\@EN@tempa}% + }{\@EN@fornotelabel+{#1}{#2}{% + \@EN@addtolabeldef{}{{\@EN@bleml}{\@EN@blemp}}% +% \typeout{\expandafter\string\@EN@tempa \space +% (+) \expandafter\meaning\@EN@tempa}% + }{\@EN@fornotelabel{}{#1}{#2}{% + \@EN@addtolabeldef{{\@EN@blemp}}{}% +% \typeout{\expandafter\string\@EN@tempa \space +% (p) \expandafter\meaning\@EN@tempa}% + }{\@EN@newlabel{#1}{#2}}% + }% + + }% - +} +\@onlypreamble\newlabel % Unlike LaTeX, but get rid of all of +% % this. A new version comes \AtEnd... +% +\def\@EN@extractcslp#1E#2\@nil#3#4#5\@nil{% +% #1 "sign", #2 label after `E'; #5 for `hyperref.sty'. +% The `E' is needed when neither - nor + ... + \expandafter \def \expandafter \@EN@tempa \expandafter{% + \csname r@E#2\endcsname}% +% Use `r@' for \ref, cf. \@EN@putdown. + \def\@EN@bleml{#3}\def\@EN@blemp{#4}} +% <- Just avoid additional control strings. +% No \@onlypreamble, use it in the final run as well. +% +% v1.1: final testing of label changes with the compressed +% definitions (cf. `lblchng1.sty'). +% We use the compression mechanism from the beginning to +% determine the definitions for the next run. To compare them +% with the present definitions, the latter must be stored +% before. With nesting or overlapping lemmas, other notes may +% send their information before the new definition for one note +% has been finished. And when we receive data from these other +% notes, we must store their previous data as well. So we cannot +% use one single control string to \let it be the string that +% carries the previous data corresponding to a note. Yet we +% don't want to double the number of strings corresponding to +% notes here. So we store the definitions in one single list, +% yet only for as long as the comparison has not been completed. +% +% To tell to the third \newlabel that it is the third indeed, +% the second \newlabel adds \@EN@ready together with number(s): +\def\@EN@test@addtolabeldef#1#2{% + \expandafter + \ifx \@EN@tempa \relax \else +% Test whether this is the third \newlabel for the note: + \@EN@xpxpxp \in@ + \expandafter\expandafter\expandafter \@EN@ready + \expandafter\expandafter\expandafter {\@EN@tempa}% + \ifin@ \let\@EN@ready\@empty \fi + \@EN@addtolabeldef{#1}{#2}% Warning: should not use \in@! + \ifin@ + \let\@EN@ready\relax + \expandafter\@EN@prepare@fromtl\@EN@tempa\@nil + \expandafter\@tempa\@EN@testinglist\@nil + \expandafter + \ifx \@EN@tempa \@tempa \else + \@tempswatrue + \ifx\@tempa\relax \else + \expandafter\@EN@takepagesto\@tempa\@tempa + \@EN@xpxpxp \@EN@takepagesto\@EN@tempa\@EN@tempa +% The message may come when line numbers have changed, not page +% numbers. This may puzzle some users, but should be harmless. + \typeout{^^JPackage `ednotes.sty':^^J% + *** A lemma or note moved. Page numbers + \@tempa\space turned into \@EN@tempa.^^J*** + Rerun and watch whether they come to rest and references + get right.^^J*** If they don't, use \string\pagebreak\space + or \string\warningpagebreak\space to force^^J*** the earlier + of oscillating page breaks.^^J*** (Cf. package documentation + on `oscillating page breaks'.)}% + \let\newlabel\@EN@newlabel + \def\@newl@bel{\@gobblefour\relax}% Cf. `lblchng1.sty'. + \fi + \fi + \fi + \fi +}% +\let\@EN@ready\relax +\let\@EN@testinglist\@empty +\def\@EN@testlabel#1#2{% Don't change \@testdef -- `lblchng1.sty'. +% Cf. our \newlabel for details. \@EN@testlabel is an extension +% of it. +% \typeout{testinglist: \meaning\@EN@testinglist}% + \@EN@fornotelabel-{#1}{#2}{% + \expandafter + \ifx \@EN@tempa \relax % Label #1 not used in previous run. + \@tempswatrue % Just to behave like LaTeX's \@testdef. + \else % Only otherwise delicate procedure is required. +% Put to testing list: + \protected@edef \@EN@testinglist{\@EN@testinglist + \expandafter \protect \@EN@tempa{\@EN@tempa}}% +% First contribution to ...: + \@EN@addtolabeldef\@gobble{{\@EN@bleml}{\@EN@blemp}}% + \fi +% \typeout{\expandafter\string\@EN@tempa \space +% (-) \expandafter\meaning\@EN@tempa}% + }{\@EN@fornotelabel+{#1}{#2}{% + \@EN@test@addtolabeldef\@EN@ready{% + {\@EN@bleml}{\@EN@blemp}}% +% \typeout{\expandafter\string\@EN@tempa \space +% (+) \expandafter\meaning\@EN@tempa}% + }{\@EN@fornotelabel{}{#1}{#2}{% + \@EN@test@addtolabeldef{{\@EN@blemp}}\@EN@ready +% \typeout{\expandafter\string\@EN@tempa \space +% (p) \expandafter\meaning\@EN@tempa}% + }{\@EN@newlabel{#1}{#2}}% + }% + + }% - +} +% +\def\@EN@prepare@fromtl#1\@nil{% + \def\@tempa##1\protect#1##2##3\@nil{% + \def\@tempa{##2}\def\@EN@testinglist{##1##3}}} +\def\@EN@takepagesto#1#2#3#4#5#6{\def#6{#1, #3, #5}} +\AtEndDocument{\let\newlabel\@EN@testlabel + \let\getpagewiselinenumber\relax} %% TODO without!? +% +% v1.23: \warningpagebreak: +\AtEndDocument{\@EN@pagebreaks@finalwarn} +\let\@EN@pagebreaks@finalwarn\relax +\def\@EN@pagebreaksfinalwarn{% + \typeout{^^J% + Package ednotes: There have been \string\warningpagebreak\space + occurrences.^^JFor your final version, we recommend checking + whether they still are^^Jappropriate.^^J}% +} +\def\warningpagebreak{% + \@EN@warning{Page break (\string\warningpagebreak) + from user^^J-- still appropriate in final version!? --}% + \global\let\@EN@pagebreaks@finalwarn\@EN@pagebreaksfinalwarn + \pagebreak} +%% TODO: \afterassignment possible anywhere? +%% TODO: remove testing \typeout's. + +%% Reminder about `mfparxsp.sty': +\AtBeginDocument{% + \@ifpackageloaded{mfparxsp}{% + \PackageWarningNoLine{ednotes}{% +%% TODO: \PackageError? + You have loaded `mfparxsp.sty',\MessageBreak + which defines \string\MFparaxbuffer.\MessageBreak + We recommend, instead, \string\ExtraParaSkip\space + \MessageBreak + from `manyfoot.sty' version 1.7\MessageBreak + (CTAN:macros/latex/ncctools).\MessageBreak + Cf. ednotes package documentation% + }% + }\relax +} + +\endinput + +%% TODO: \newcommand whenever possible!? +%% TODO: with v1.1: warn about \label{[-+]EN@l...}. Maybe make +%% \label and \linelabel internal, new user versions check +%% the argument. +%% TODO: warn about \usepackage{foo} where foo is loaded by option!? +%% TODO: .dtx +%% TODO: license for *bundle* +%% TODO: ... or cf. the brief and clear conditions in Eurofont +%% (Rowland McDonnell) +%% TODO: Bigfoot/e-TeX (Kastrup) +%% TODO: compatibility with Parallel.sty -- Sergei Mariev 2003/06/19. +%% (hopeless, I'm afraid) -- 2005/02/19: Cf. Peter Wilson's +%% ledpar. + +%% VERSION HISTORY: +v0.36 2003/01/13 First version sent around. +v0.37 2003/01/22 Added version history and reference to + `mfparptc.sty'. +v0.38 2003/01/27 Improved copyright notice. +v0.39 2003/02/06 Documentation: output + splitting problem, + explanations of recommended packages. +v0.4 2003/03/03 Splitting problem remedied by linenox0. +v0.41 2003/03/03 our owns -> ourselves. + !? +v0.42 2003/03/04 Some remarks/TODOs, especially concerning \SplitNote, + changed lppl hint. +v0.43 2003/03/23 Doc.: "may" -> "must" [not be hidden]. +v0.44 2003/03/24 Took e-mail addresses list from edtab; + added comparison with LEDMAC. + TODOs for reading `MFPartPtc.sty'; + \Require...{linenox0}[2003/03/23]; + changed acknowledgements: still remains? + Stephan's approach, encouragement, U.L.; + minor changes in `overview'; point to + EDMAC homepage; TODO: ruled user's choice? + ---Sent to Peter and Dominik. +v0.45 2003/03/28 LEDMAC hint: replaced `Correct me ...' by + "single printable file" + "enhanced"; + Version History: 04 -> 03 at v0.44; + MFParPtc ToDo below: !! -> !? + ---Sent to Peter. +v0.46 2003/04/15 \renewcommand -> \newcommand in \Anotefmt + customization---thanks to Robert Alessi! + added bug report acknowledgement. +v0.47 2003/05/01 Added \@ in \textsymmdots. +v0.48 2003/06/22 Replaced \@secondoftwo by \@EN@second (Hyperref); + placed \let\@EN@lastline correctly---both + thanks to Sergei Mariev! + 2003/07/09 Added note on `hyperref.sty'. +v0.49 2003/09/03 Added documentation to evade the \donote bug. + 2003/11/06 Require corrected `linenox0.sty'. + 2003/11/13 Require corrected `lineno.sty'. +v0.5b 2003/12/30 Added \@EN@first and \@EN@gtempa for \repeatref. + 2003/12/31 Removed argument redundancy in \addlemmaexpands. +v0.5 2004/01/04 Added \@EN@CWhook for counting words package. +v0.51 2004/01/06 Require corrected `linenox0.sty'. +v0.6 2004/03/01 Removed two lines from preamble and mention of + \donote bug (v0.49), fixed the latter. +v0.61 2004/04/15 Changed `Comparison with LEDMAC' concerning TABMAC + and implementation, reformulated `acknowledgements'. + Unified quotation marks with `....sty'. + 2004/04/22 Removed `wait vor Alex...' and `CTAN soon' + concerning LEDMAC. + 2004/04/28 Removed `New with v0.4'. + 2004/05/12 Removed `few weeks' before `similar' in doc., + changed doc. concerning effects of different + implementations. Mentioned indexing, `Edstanza', + "minipage", and sidenotes concerning LEDMAC. + Included Florian Kragl in acknowledgements. + Added `A problem' (notes height estimation). + Sent around. Added Christian to copyright, + L"uck -> L\"uck. `edtab02' -> `edtable'. + 2004/07/20 Suggested \csname #2leftmark etc. + 2004/07/22 Used \DeclareOption*, removed `BETA TEST RELEASE'. +v0.62 2004/08/16 \RequirePackage{linenox0}[2004/08/12], LPPL v1.3; + \@EN@shortlemmatag, \@EN@initlemmatag, + \@EN@finmathlemmatag. +v0.63 2004/08/16 Replaced previous by \@EN@simplelemmatag and + \@EN@mathlemmatag. +v0.64 2004/08/19 Removed stars from ...newcommands of macros + that have no parameter, added some with + parameters (undid this?), however made + \lemmafmt and \notefmt long (star). + 2004/08/22 Changed `Packages required'. + 2004/08/31 Rearranged preamble concerning maintenance. +v0.7 2004/09/19 \Req...{linenox0}... etc. only with lineno v<4. + 2004/09/20 Adjustment of instructions to bundle changes; + `I.' after `Alexander'. +v0.71 2004/09/21 Took explanation for \ExtraP... from `mfparxsp.sty' + and removed mention of the latter; + removed a comment mark from a documentation line. + Changed lineno.sty/tex into ...pdf. +v1.0 2004/10/07 Changed documentation for additional options for + `edtable', `edmacpara', `countoccurrences'; hint at + TUGboat article; removed mention of `linenox0.sty'. + 2004/10/08 Replaced \newif\if@EN@Apara@; replaced redundant + option passes redundancy warnings; options + `edmacpara' and `countoccurences'; removed TODOs + concerning `mfparptc.sty'. + 2004/10/11 `perpage' option; acknowledgements for co-operation. + 2004/10/13 Require debugged `mfparptc.sty' and `edcntwd0.sty' + as well as `lineno.sty' equipped with new options. + 2004/10/18 Reminder on `mfparxsp.sty', changed TODOs. +v1.0a 2004/11/07 LPPL v1.3a. +v1.0b 2005/01/10 Contact via http. + 2005/01/19 Mentioned `ellipsis' package. +v1.01 2005/02/05 \Packagewarning -> \PackageWarning. +v1.1b 2005/02/20 Documentation: `ledpar', `ednotugb.pdf', + implementation. Only one cs per note -> much + different! Require new `edcntwd0,sty'. + With v1.1b, testing (`lblchng1.sty') is + disabled. +v1.1c 2005/02/20 Deleted \tracingmacros, earlier kept erroneously. +v1.1d 2005/02/21 Final testing of label changes. Moved v1.1 macros + towards end. + 2005/03/06 Reimplemented compression (v1.1b) and final + testing (v1.1d) very much + minor changes. +v1.1 2005/03/08 Notes on \repeatref, \pageandline, and new + `edcntwd0.sty' version. Top: `editory notes' -> + `critical editions'. Acknowledgement to Roy + Flechner. +v1.11 2005/04/07 Doc typo with ...plref. + 2005/04/09 \Provides...: `editory notes' -> `critical + editions'. Sent to Ednotes.news . +v1.12 2005/04/09 \@empty with Footnotetext... +v1.12a /04/09 Acknowl. Hillel Chayim Yisraeli. + 2005/04/10 Supplied LPPL URL, corrected \file... + Sent to CTAN and Ednotes.news . +v1.12b /04/11 address -> URL . + 2005/05/01 Due to removing \@EN@first, older version of + edcntwd0.sty suffices. + 2005/05/12 Remark on hyperref changed due to + lineno.sty v4.3 . +[not sent, not tested] +v1.12c /09/21 Doubled some hash marks in explanation of + customization, adapted doc. to \@EN@sphack. +[not sent] + +v1.2b 2005/09/22 Updated doc. wrt. availability of manyfoot.sty; + \PrecedeLevelWith . + 2005/09/24 \let\notthislemma\@firstofone (was bug without). +v1.2 2005/10/01 \notthislemma -> \notinnote; explained \Precede... + Sent to CTAN. +v1.2a 2005/10/02 supplied mention of HCY for v1.12. [not sent] +v1.21 2005/10/12 \@EN@process tests #3 on empty without \@EN@tempa; + withdummy -> gobble@pause, + killresume -> gobble@resume; + \@EN@robust@process. +v1.22b /11/21 \if@EN@in@note; \@EN@firstnext. + 2005/11/28 @EN@in@note -> LemmaTag; \@EN@gobble[two] + 2006/01/12 \allowhyphens in \@EN@putdown. + 2006/01/13 New \<<...>...\>. [to Lekhtman] + 2006/01/15 \long with \@EN@lemma@ellipsis; + removed general definition of \< . +v1.22 2006/01/16 \@EN@robust@process now really gobbles note, + removed wrong \@empty from \@EN@gobble@diamond; + \RobustTestOpt, \NewEdnotesCommand. +v1.23 2006/01/23 Example on \NewEdnotesCommand: default "B" -> "A". + 2006/06/07 Changed page-line algorithm with \differentlines; + edcntwd0.sty v0.32 required; + \c@EN@label LaTeX counter; + \expandafter\expandafter\expandafter -> \@EN@xpxpxp + 2006/06/15 \@EN@warning; edcntwd0.sty v0.32a required. + 2006/06/16 Additional screen advice with oscillating page breaks + + explanation in manual (\warningpagebreak). +v1.23a /06/20 Corrected \RequirePackage{edcntwd0}-date. +v1.23b /06/22 Require manyfoot v1.9. + /06/26 LPPL v1.3c; require mfparptc v4.1; remarks on + hyphenation of first word in lemma tag. +v1.23c /06/27 Fix for \pause/\resume in lemma tag (Roy Flechner, + a few day later Christian Tapp as well). +v1.3 2006/06/27 affirmed \long's (were TODOs); simplified + \@EN@gobble@pause. + 2006/06/28 \@EN@robust@process refined; gobble \>\@nil etc.; + \@EN@sphack@aux. + 2006/06/29 \ifLemmaTag -> \IfLemmaTag (-> doc.); + lemma@ellipsis -> ltag@ellipsis; \IfTypesetting; + \@EN@notelabel@cmd, \@EN@pause@ltag, \@EN@pause@aux. + 2006/07/05 \SelectAnoteRule etc. supporting + manyfoot's \SelectFootnoteRule. + 2006/07/06 \includeonly just with \@addtoreset{@ckpt}. + [Sent to CTAN, Christian, Sergei] +v1.3a 2006/07/20 Blank screen line above/below final warning. + 2006/10/05 News about perpage. + diff --git a/macros/latex/contrib/ednotes/ednotes.tex b/macros/latex/contrib/ednotes/ednotes.tex new file mode 100644 index 0000000000..7b42c6a007 --- /dev/null +++ b/macros/latex/contrib/ednotes/ednotes.tex @@ -0,0 +1,118 @@ +%% Ednotes.tex -- +\title{\LARGE \bf \textit{ednotes.sty} \\ + for critical editions with \LaTeX \\[1ex] + \normalfont \Large + Lazy \texttt{ASCII}$\to$\texttt{PDF} listings} +\author{Uwe L\"uck}%%%\thanks{advised by Christian Tapp.}} +\documentclass[10pt]{article} +\usepackage{verbatim} +\pagestyle{headings} +\newcommand*{\cs}[1]{\texttt{\char"5C #1}} +\newcommand*{\lcurl}[1]{\[\texttt{CTAN:/macros/latex/contrib/#1}\]} +\begin{document} +\maketitle +\section*{Preface} + +\texttt{ednotes[.sty]} is a macro package or bundle of +macro files for scholarly critical editions---typed +by U.\,L.\footnote{$\dots$ originally under the direction of +Christian Tapp at a research project granted by the +Deutsche Forschungsgemeinschaft (DFG).} +It is little more than a user interface for combining +Stephan~I.\ B\"ottcher's \texttt{lineno.sty} and +Alexander~I.~Rozhenko's \texttt{manyfoot}. + +Recent CTAN policy urges to upload \texttt{PDF} +documentation accompanying \TeX\ macro files. +% such files +% do exist for the underlying \texttt{lineno.sty}--- +% \lcurl{lineno.pdf} +% (plus a supplementary \texttt{lnosuppl.pdf} there)---and +% as +% \lcurl{manyfoot.pdf} +% plus +% \lcurl{nccfoots.pdf} +% for the underlying \texttt{manyfoot.sty}\,. +% +% $\dots$ well, +Sorry, a documentation of this kind doesn't exist +at present for \texttt{ednotes} $\dots$---I am just offering +some ersatz \texttt{PDF} documentation: listings of the +\texttt{.sty} files belonging to the \texttt{ednotes} bundle, +structured and navigatable through a table of contents. + +For making use of the options that \texttt{ednotes.sty} +provides, it is vital to know the underlying +\texttt{lineno.sty}---and its documentation. +\texttt{ednotes} just passes \texttt{lineno} commands and +options to the latter. So please notice +\lcurl{lineno/lineno.pdf} +as well as (if you need it) +\lcurl{lineno/lnosuppl.pdf\,.} +In the same directory, there are other macro files that +\texttt{ednotes.sty} may need and whose documentation may +be contained in \texttt{lnosuppl.pdf} (in the same +pseudo-\texttt{PDF}-style as present). + +% Sorry, I haven't had the time for making a proper \texttt{PDF} +% documentation for the present \texttt{ednotes} bundle. +% What I am offering is nothing but a somewhat structured listing +% of the additional \texttt{.txt} and \texttt{.sty} files, +% deriving from the \texttt{verbatim} package and its +% \cs{verbatiminput} command. I hope that the high quality +% (scalable) output is worth it. + +Please don't overlook that \lcurl{lineno/ednotugb.pdf} contains +a (printable) \emph{overview} on the facilities of +\texttt{ednotes}, as well as a comparison with Peter Wilson's +alternative \texttt{ledmac}. + +% \clearpage +\tableofcontents + +\section{The \texttt{.txt} files} +\subsection{First encounter with \texttt{ednotes} on CTAN: + \texttt{README}} +\verbatiminput{README} +\subsection{Adding on installing etc.: \texttt{READMORE.txt}} +This is an extended "README" version +for learning how to complete your download. +\verbatiminput{READMORE.txt} +\subsection{What has changed since your earlier downloads: + \texttt{CHANGES.txt}} +\dots\ lists changes the bundle underwent in a chronolical order. +\verbatiminput{CHANGES.txt} +\subsection{Advice for installation: \texttt{visible.txt}} +Some very down-to-earth advices for real \TeX-newbies: +\verbatiminput{visible.txt} +\subsection{Really recent? \texttt{CHANGING.txt}} +You might consider whether the snapshot (TeXLive most notably) +of the \texttt{ednotes} bundle that you have received most +recently displays the most recent (and perfect) state of it. +\verbatiminput{CHANGING.txt} + +\section{The main file: \texttt{ednotes.sty}} +\verbatiminput{ednotes.sty} + +\section{Supplementary macro files} +\subsection{Tracking page break oscillations: + \texttt{lblchng1.sty}} +\verbatiminput{lblchng1.sty} +\subsection{A lemma repeated in a line: \texttt{edcntwd0.sty}} +\verbatiminput{edcntwd0.sty} +\subsection{Some \texttt{para}-footnote hack: \texttt{mfparptc.sty}} +This deals with a problem that still needs much thinking \dots +\par +\verbatiminput{mfparptc.sty} +\subsection{A reminder of obsoleteness: \texttt{mfparxsp.sty}} +This file just tells that some earlier facility dealing with +vertical spacing has been superseded by \texttt{manyfoot}'s +more recent \cs{ExtraParaSkip}\,. +\verbatiminput{mfparxsp.sty} + +\section{\texttt{varnrule.tex}---customizing footnote rules} +\verbatiminput{varnrule.tex} + +\end{document} + +end of Ednotes.tex diff --git a/macros/latex/contrib/ednotes/ednotugb.pdf b/macros/latex/contrib/ednotes/ednotugb.pdf Binary files differnew file mode 100644 index 0000000000..666e058124 --- /dev/null +++ b/macros/latex/contrib/ednotes/ednotugb.pdf diff --git a/macros/latex/contrib/ednotes/edtable.sty b/macros/latex/contrib/ednotes/edtable.sty new file mode 120000 index 0000000000..5fd6f55bc8 --- /dev/null +++ b/macros/latex/contrib/ednotes/edtable.sty @@ -0,0 +1 @@ +../lineno/edtable.sty
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/emathtst.tex b/macros/latex/contrib/ednotes/emathtst.tex new file mode 100644 index 0000000000..527d360295 --- /dev/null +++ b/macros/latex/contrib/ednotes/emathtst.tex @@ -0,0 +1,53 @@ +%% EMathTst.tex for demonstrating EdnMath0.sty. +%% Uwe L"uck, http://www.contact-ednotes.sty.de.vu, 2005/01/16. +\documentclass[12pt]{article} +\def\Anote#1#2{#1} \let\<\relax \let\>\relax +% \usepackage{ednotes} +\usepackage[mathrefs]{lineno} + +\begin{document} + +\begin{linenumbers} +% \begin{NoNotesToMath} +\linenumberdisplaymath +\noindent +\texttt{\string\ \unskip linelabel} and +\texttt{\string\ \unskip Anote} in math mode? +\begin{linenomath} +$$ +% \begin{displaymath} +% \begin{equation} +x=\Anote{z}{$Z$} +% {\makeatletter \typeout{\meaning\@EN@lemmatag}} +\linelabel{Hm} +% \end{equation} +% \end{displaymath} +$$ +\end{linenomath} +% \end{NoNotesToMath} +$a=\Anote{x\<y\>z}{$b$} +% {\makeatletter \typeout{\meaning\@EN@lemmatag}} +\linelabel{Hmm} +$. +Why not? +\begin{NoNotesToMath} +Line No.~\ref{Hm}. +\Anote{No \<math\> here.}{Went wrong earlier.} +% {\makeatletter \typeout{\meaning\@EN@lemmatag}} +\end{NoNotesToMath} +Line No.~\ref{Hmm}. +\end{linenumbers} + +% \tracingonline=1 +% \showboxdepth=1 +% \showboxbreadth=30 +% \showlists + +% % These really get lost: +% \linenumbers +% \mbox{\Anote{Boxed}{where?}.\linelabel{Hu}} +% Line No.~\ref{Hu}. + +\end{document} + + diff --git a/macros/latex/contrib/ednotes/lblchng1.sty b/macros/latex/contrib/ednotes/lblchng1.sty new file mode 100644 index 0000000000..379a7a5654 --- /dev/null +++ b/macros/latex/contrib/ednotes/lblchng1.sty @@ -0,0 +1,260 @@ +%% LblChng1.sty--tell about the first changed LaTeX label. +\def\fileversion{0.32c} \def\filedate{2005/10/01} + +%% Copyright (C) 2005 Uwe L\"uck +%% Munich, http://contact-ednotes.sty.de.vu. +%% Current maintainer is Uwe L\"uck. + +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt; either +%% version 1.3a of the License, or any later version. +%% We did our best to help you, but there is NO WARRANTY. + +%% * SUMMARY: * +%% +% This package is intended to be a (primitive) tool for +% fixing oscillating page breaks -- a problem that especially +% sometimes occurs in typesetting critical editions. Thus it +% addresses especially users of LaTeX packages lineno, ednotes, +% and ledmac (maybe even manyfoot and numline). When it has been +% invoked and some label(s) get an entry in the .aux file +% differing, with respect to page number, to that of the +% previous run, the first such label is reported on screen (and +% in the .log), including the differing page numbers. This +% should help in finding the first unstable page -- which is +% vital. The file also contains rather detailed explanations and +% discussions. +% +%% * CRITICAL EDITIONS, PACKAGES: * +%% +% For informations about macro packages mentioned in the present +% text, or about critical edition typesetting in general, I +% refer you to the web page http://ednotes.sty.de.vu . +% +%% * THE PROBLEM TO BE SOLVED: * +%% +% Sometimes it happens that LaTeX's final warning "Label(s) may +% have changed. Rerun to get cross-references right." appears at +% *every* run, i.e., rerunning doesn't help. Or instead, it may +% be noticed that certain cross-references keep being wrong. +% The only reason I know of is that the runs oscillate between +% two decisions about what material should be put onto a certain +% page. And the only reason I know for this is that the space +% consumed by some cross-reference depends on the page breaking. +% I know this problem from critical edition typesetting. +% +%% * OUTLINE of the SOLUTION offered here: * +%% +% I simply propose that the user makes up her mind on the nasty +% page breaks and forces some at a certain lines, or contributes +% her opinion, through \pagebreak (or maybe even \nopagebreak, I +% have no idea whether this can be useful). -- A float (`figure' +% or `table') may contribute to the problem as well, so you may +% move its LaTeX code or change the placement options (through +% the brackets argument). +% +% Typically, one position of such oscillating causes further +% page breaking oscillations for many ensuing pages, yielding a +% bunch of wrong cross-references and countings. Of course, the +% user then should settle the first occurrence of oscillating +% before bothering with others -- all the rest of them may +% disappear when the first one is fixed. +% +% One problem with this solution ("?") is that it may be +% bothersome to find out where the first oscillation occurs +% indeed (by looking through the .dvi's or .pdf's). The present +% package tries to help with this. +% +% With Peter R. Wilson's ledmac, you have the "ballast" +% procedure for influencing page breaks. (It is due to John +% Lavagnino, Dominik Wujastyk, and Wayne Sullivan, inherited +% from EDMAC). It saves you from looking for good positions for +% \pagebreak's. I might offer something similar (with +% lineno.sty/ednotes.sty). However, I would like to object that +% the "ballast" procedure chooses between two page break +% possibilities rather "by chance" (reinforcing the first break +% idea encountered while the other idea might turn out to be +% better). But I must concede: One of the two breaks between the +% runs oscillate may turn out not to work, or even both of them +% -- when the cross-references have been adjusted to that +% decision. The "ballast" procedure may then save some time for +% you. On the other hand, if *both* decisions turn out not to +% work, I wonder whether the "ballast" method will certainly +% find a working one. +% +%% * USAGE: * +%% +% 1. \usepackage{lblchng1} in every LaTeX document that you +% create, or in every critical edition LaTeX document that you +% create, or only when you run into the problem of not settling +% label definitions. (Hope that you then remember that there is +% such a package!) +% +% 2a. You will be told about the page numbers where some \label +% (or, with Stephan I. B\"ottcher's lineno.sty or its extension +% ednotes.sty, some \linelabel) appears. Observe the page breaks +% in the .dvi's or .pdf's in the corresponding region. Note that +% the passage which causes the oscillation may be a number of +% pages earlier than the page number mentioned in the warning. +% (Sorry, this is the price of cheapness.) You can get rid of +% the warning without fixing the real problem -- fixing a late +% page break preceding the \label -- but this may cause badly +% filled pages earlier. So it will be wise to identify the very +% first passage causing oscillating page breaks. -- Another +% conjecturing hint: According to the diagnosis that I delivered +% above, the first oscillation happens near a cross-reference +% whose length varies due to the oscillation. So look for some +% \ref (or \lineref) referring forward(!). If you are lucky, the +% \ref refers to the label whose change has been warned about. +% +% 2b. If you are working with *ednotes.sty*: ednotes.sty v1.1 +% does something similar with internal informations about each +% note, and it delivers a similar message on screen and in .log. +% It reports on three page numbers. However, the first +% oscillation happens (I think) at most one page before the +% reported ones. +% +% 3a. As indicated above, try to force a certain page break at +% this passage through \pagebreak (or \nopagebreak?) -- or +% change the position of a `figure' or `table' in code or in +% output (brackets argument), if it seems to contribute to the +% problem. Concerning \pagebreak (\nopagebreak), I personally +% also think of using the optional argument in the brackets, +% while I feel unable to judge the value of this. -- I also +% recommend that you use \typeout near the \pagebreak or so to +% remind yourself of the \pagebreak -- in case the \pagebreak +% after some changes suddenly produces a very bad page break +% and you don't examine the output with sufficient carefulness, +% being in a hurry, e.g. +% +% 3b. With *ledmac*, you may experiment with the "ballast" +% amount until that first oscillation stops. +% +%% * A minor WARNING: * (LaTeX version) +%% +% A remark as of 1995/07/13 in ltmiscen.dtx makes me wonder +% whether the present package works with older versions of +% LaTeX. +% +%% * CRITICAL EDITIONS: * (lineno.sty, ednotes.sty, ledmac) +%% +% 1. With Stephan I. B\"ottcher's lineno.sty and its extension +% ednotes.sty, oscillating page breaking also results in wrong +% pagewise numbering of lines and in wrongly placed-and-numbered +% footnotes. I am thinking of refining lineno.sty in addition to +% the present package. On the other hand, I conjecture that +% wrong pagewise numbering is *always* (at least sufficiently +% often) closely accompanied by oscillating cross-references, so +% the present package may offer sufficient help. -- Well, sorry, +% this may remain being true with respect to lineno.sty, but +% since March 2005, ednotes.sty treats its internal line number +% references in a way that makes them "invisible" to +% lblchng1.sty. This is very necessary for huge editions with, +% say, 10.000 notes or more, for a memory capacity reason. +% ednotes.sty uses an own procedure to detect page number +% changes, to which lblchng1.sty adds perhaps only little. +% +% 2. I guess that even ledmac users may find the present package +% useful, to find out where they have to watch when trying to +% adjust the "ballast" appropriately. However, its usefulness +% depends on how dense LaTeX \label's appear in the edited text. +% Indeed, it is the pages with the numerous critical footnotes +% fall where oscillations are likely to occur. \label's may be +% here when the comments refer to certain sections etc. of the +% edited text, OK, but will they? The line number references +% preceding the single notes (just on these "critical" -- in +% two senses -- pages) might be much more helpful, yet they are, +% with ledmac.sty, not implemented by \label. And it is wise not +% to implement them by \label, similarly as with ednotes.sty +% above. (ednotes.sty still uses \label, to be sure, but it +% redefines \newlabel in a way that is specific to ednotes.sty's +% way of storing data about the notes.) +% +%% * WONDERING REMARK: * +%% +% Oscillating label definitions do not necessarily result in +% anything wrong. The page number in the label definition may +% oscillate while not being used by any \pageref. -- I have no +% idea at present what this tells us to do if it happens so ... +% +%% * ACKNOWLEDGEMENTs: * +%% +% This package is due to Roy Flechner's confidence in our +% ednotes.sty and to frightening observations he reported to +% us. Thanks also to Peter Wilson for moral support. + +%% Please send comments via http://contact-ednotes.sty.de.vu. + +%% * IMPLEMENTATION: * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\NeedsTeXFormat{LaTeX2e}[1994/10/30] +%% <- \@onelevel@sanitize; also \CheckCommand \reserved@a. +\ProvidesPackage{lblchng1}[\filedate\space\fileversion\space + ^^Jexhibiting first changed label] + +%% * Main idea: * +% Testing on label changes is done by \@testdef -- at least I +% assume this here (and I will somewhat check it). I refine it +% so it shows the label name and the page numbers -- clearly, +% what could I do else? (Well, I could redefine \label so ...) +% +%% If LaTeX's \@testdef changes, the present package may better +%% be updated: +\CheckCommand*\@testdef[3]{% + \def\reserved@a{#3}\expandafter \ifx \csname #1@#2\endcsname + \reserved@a \else \@tempswatrue \fi} +\def\@testdef#1#2#3{%% This is what I expect LaTeX to use. + \@ifundefined{#1@#2}\@tempswatrue{%% Like LaTeX: + \def\@tempa{#3}% + \expandafter + \ifx \csname #1@#2\endcsname \@tempa + \else \@tempswatrue +%% v0.3: moved disabling \@newl@bel from here to below. + \fi %% But now: +%% To be sure, I additionally assume that the page number is the +%% second thing, and more. I have had bad experience with +%% hyperref and thus do not assume that there are just two +%% things in the last argument of \newlabel. + \def\@tempb##1##2##3\@nil##4{% + \def##4{##2}\@onelevel@sanitize##4}% +%% Well, why not use some initially defined \@LC@extractpno +%% instead of this \@tempb? %% TODO +%% -- With modern large and fast TeX versions, one should not +%% waste a second with such considerations. -- However: +%% different effects concerning compatibility. + \expandafter \@tempb \@tempa \@nil\@tempa + \expandafter\expandafter\expandafter + \@tempb \csname#1@#2\endcsname \@nil\@tempb + \ifx\@tempa\@tempb \else + \typeout{^^JPackage `lblchng1':^^J% + *** Page number of label `#2' is changing: ***^^J% + \space\space\space\space + was \@tempb, will be \@tempa.^^JWatch whether + this stops and references get right.}% +%% Further testing wouldn't change anything: + \def\@newl@bel{\@gobblefour\relax}\fi}} +%% Warning: this could create an incompatibility with some other +%% package or with some LaTeX version. +%% Again: this extra line doesn't pay well nowadays. + +\endinput + +VERSION HISTORY: + +v0.1 2005/02/15 First release for Roy Flechner. +v0.2b 2005/02/16 Attempt at \getpagewiselinenumbers -- in + vain. Improved explanations. +v0.2 2005/02/17 Changed implementation back; but keep + completely disabling \newlabel after the + report. Only page numbers are reported. + (CTAN and ednotes.news received slightly + different explanations than Roy Flechner.) +v0.3 2005/02/17 \@newl@ble turned off with page no. change + only. Doc. warns on compatibility. +v0.31 2005/02/27 Additional line on screen. +v0.32 2005/03/08 Adapted explanations to ednotes.sty v1.1; + warned about usefulness with critical + editions. Changed some headings. + Acknowledgements. +v0.32a 2005/03/21 Minor corrections. +v0.32c 2005/10/01 Another typo fix. diff --git a/macros/latex/contrib/ednotes/lineno.pdf b/macros/latex/contrib/ednotes/lineno.pdf new file mode 120000 index 0000000000..f9c5aa554a --- /dev/null +++ b/macros/latex/contrib/ednotes/lineno.pdf @@ -0,0 +1 @@ +../lineno/lineno.pdf
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/lineno.sty b/macros/latex/contrib/ednotes/lineno.sty new file mode 120000 index 0000000000..e1237aa9e4 --- /dev/null +++ b/macros/latex/contrib/ednotes/lineno.sty @@ -0,0 +1 @@ +../lineno/lineno.sty
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/lineno.tex b/macros/latex/contrib/ednotes/lineno.tex new file mode 120000 index 0000000000..1999019713 --- /dev/null +++ b/macros/latex/contrib/ednotes/lineno.tex @@ -0,0 +1 @@ +../lineno/lineno.tex
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/lnosuppl.pdf b/macros/latex/contrib/ednotes/lnosuppl.pdf new file mode 120000 index 0000000000..156457faed --- /dev/null +++ b/macros/latex/contrib/ednotes/lnosuppl.pdf @@ -0,0 +1 @@ +../lineno/lnosuppl.pdf
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/ltabptch.sty b/macros/latex/contrib/ednotes/ltabptch.sty new file mode 120000 index 0000000000..97da5876bf --- /dev/null +++ b/macros/latex/contrib/ednotes/ltabptch.sty @@ -0,0 +1 @@ +../ltabptch/ltabptch.sty
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/ltabtest.tex b/macros/latex/contrib/ednotes/ltabtest.tex new file mode 120000 index 0000000000..3d22890963 --- /dev/null +++ b/macros/latex/contrib/ednotes/ltabtest.tex @@ -0,0 +1 @@ +../ltabptch/ltabtest.tex
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/mfparptc.sty b/macros/latex/contrib/ednotes/mfparptc.sty new file mode 100644 index 0000000000..e2008f199d --- /dev/null +++ b/macros/latex/contrib/ednotes/mfparptc.sty @@ -0,0 +1,208 @@ +%% MFParPtc.sty---Uwe L"uck http://www.contact-ednotes.sty.de.vu. +%% Modifies Alexander Rozhenko's manyfoot.sty. +%% +%% Copyright (C) 2003--2006 by Uwe L"uck--author-maintained. +%% +%% This file can be redistributed and/or modified under +%% the terms of the LaTeX Project Public License; either +%% version 1.3c of the License, or any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% We did our best to help you, but there is NO WARRANTY. +%% +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mfparptc}[2006/06/26 v0.41 %% TODO + ^^J\string"patch\string" for manyfoot.sty's paragraph footnotes + (ul)] +% +% The paragraphed-footnote style of Alexander Rozhenko's manyfoot.sty +% derives, like the same style of Dominik Wujastyk's and John +% Lavagnino's EDMAC.doc, from Donald Knuth's proposal on pp. +% 398--400 of the TeXbook. However, the two packages improve this +% proposal in different respects. EDMAC (i) adds to the TeXbook +% macros penalties solving a page breaking problem and (ii) accounts +% for some problems of line breaking and hyphenation in the +% footnotes (see EDMAC.doc, Section +% `Footnotes'--`Paragraphed footnotes'). manyfoot.sty does not deal +% with these things. +% +% The present version of the "patch" rearms the latter with EDMAC's +% remedies (maybe at the cost of \linebreak and \\, see below). +%% TODO +% We aim at manyfoot.sty v1.4 from 1998/12/19. +% +% Alex and me could not convince ourselves entirely of these +% "patches". They are *experimental*. When we have made up our minds, +% they may become part of other packages. +% +% Indeed, the present "patches" disable the \SplitNote macro +% from manyfoot.sty. So you have to choose between \SplitNote +% (not loading present package) and the EDMAC enhancements +% (loading the present package). +% +% --If you want to use this package for working with ednotes.sty, +% load the latter with option `edmacpara'--this loads the +% present file at a suitable time. This is useful only unless +% only `plain' options of `ednotes.sty' are called. +% --If you don't work with ednotes.sty and want to use the present +% file only for modifying manyfoot functionality, load the present +% file after manyfoot.sty has been loaded. This is useful only if +% some footnote layer has been declared with option `para' or +% `para*'. +% +% Implementation: +% +%% Note: \Requirepackage[...]{manyfoot} would cause option clash. +% +% \MFL@fnotepara expected: +% (Also tests whether manyfoot.sty has been loaded with option +% `para' or `para*'.) +\CheckCommand*\MFL@fnotepara[3]{\let\@thefnmark\@empty + \NCC@makefnmark{#2}% + \MFL@insert#1{\reset@font\footnotesize + \ifx\@thefnmark\@empty \@tempswafalse \else + \@tempswatrue + \protected@edef\@currentlabel{\@thefnmark}% + \fi + \color@begingroup + \if@tempswa + \setbox\@tempboxa\hbox{\@makefnmark}% + \ifMFL@paraindent + \@tempdima.8em \advance\@tempdima-\wd\@tempboxa + \ifdim \@tempdima<\z@ \@tempdima\z@ \fi + \else + \@tempdima\z@ + \fi + \fi + \setbox\@tempboxa\hbox{% + \if@tempswa + \hskip\@tempdima\unhbox\@tempboxa\nobreak + \fi + \ignorespaces#3\unskip\strut + \ifMFL@split \penalty\m@ne\space \else + \penalty-10 \hskip\footglue + \fi + }% + \dp\@tempboxa\z@ \ht\@tempboxa\MFL@fudgefactor\wd\@tempboxa + \box\@tempboxa + \color@endgroup + }% +} +% For splitting footnote paragraphs EDMAC inserts a (low) \penalty +% after \box\@tempboxa at Wayne Sullivan's suggestion, see +% EDMAC.doc after \def\para@vfootnote. +% Another patch is needed to get \language whatsit nodes and +% \discretionary's---cf. EDMAC.doc's description of \para@vfootnote. +% This is due to Michael Downes, Wayne Sullivan, and Donald Knuth. +% The insert text is first typeset in an "infinitely" wide \vbox. +% Some problems remain as in EDMAC. No \break should occur in the +% insert text. We locally redefine \@M and \hfil hoping to repair +% \\ and \linebreak (even \break!) (experimental---please report!) %% TODO +% (EDMAC.doc refers to Michael Downes, `Line breaking in \unhboxed +% Text', TUGboat 11 (1990), pp. 605--612.) +% TODO: Might redefine \hfill and more; cf. Michael Downes' paper. +\def\MFL@fnotepara#1#2#3{\let\@thefnmark\@empty + \NCC@makefnmark{#2}% + \MFL@insert#1{\reset@font\footnotesize + \ifx\@thefnmark\@empty \@tempswafalse \else + \@tempswatrue + \protected@edef\@currentlabel{\@thefnmark}% + \fi + \color@begingroup + \if@tempswa + \setbox\@tempboxa\hbox{\@makefnmark}% + \ifMFL@paraindent + \@tempdima.8em \advance\@tempdima-\wd\@tempboxa + \ifdim \@tempdima<\z@ \@tempdima\z@ \fi + \else + \@tempdima\z@ + \fi + \fi + \setbox\@tempboxa\vbox{% <- PATCH! + \@parboxrestore % <- PATCH + \hsize\maxdimen \noindent % <- PATCH! +% \setbox\@tempboxa\hbox{% + \if@tempswa + \hskip\@tempdima\unhbox\@tempboxa\nobreak + \fi + \mathchardef\@M9999 % <- PATCH! + \def\hfil{\hskip\linewidth\@minus\linewidth}% <- PATCH! + \ignorespaces#3\unskip\strut +% \ifMFL@split \penalty\m@ne\space \else % PATCH: removed. +% \penalty-10 \hskip\footglue % PATCH: reinserted below. +% \fi + }% + \setbox\@tempboxa\hbox{% <- PATCH! +% Here is a suitable variant of EDMAC.doc's \unvxh, due to Michael +% Downes: + \setbox\z@\vbox{% + \unvbox\@tempboxa \global\setbox\@ne\lastbox}% + \unhbox\@ne \unskip \unskip \unpenalty + \ifMFL@split % Moved here from above. + \penalty\m@ne\space + \else + \penalty-10 \hskip\footglue + \fi + }% + \dp\@tempboxa\z@ \ht\@tempboxa\MFL@fudgefactor\wd\@tempboxa + \box\@tempboxa + \penalty\z@ % <- PATCH! + \color@endgroup + }% +} +% Like in EDMAC.doc, the additional penalty is removed by +% \MFL@makehhbox which corresponds to \makehboxofhboxes. +% \MFL@makehhbox differs from \makehboxofhboxes, however, in even +% \unvbox'ing a note bundle from a minipage. It seems not to be easy +% to tell a \penalty 0 placed by patched \MFL@fnotepara from another. +% In this version we just hope that removing such other penalties +% causes no damage---after all, the bundle was not supposed to be +% splitted. +\def\MFL@makehhbox{% + \loop + \unpenalty % <- PATCH! + \setbox\z@\lastbox + \ifhbox\z@ + \setbox\@tempboxa\hbox{\box\z@\unhbox\@tempboxa}% + \repeat + \ifvbox\z@ \unvbox\z@ \MFL@makehhbox \fi +} +\endinput + +VERSION HISTORY: + +v0.1 2003/01/19 First. Sent to John Lavagnino + ... +v0.2 2003/01/23 Corrected \Provides... file name; + supplied \vbox in \unvxh (bug fix!). +v0.21 2003/02/27 Stressed problem with \linebreak and \\ in doc. +v0.23 2003/02/28 Further comment on \CheckCommand, + improved explanation mentioning \para@vfootnote. +v0.3 2003/03/01 Changed \@M and \hfil to enable \\ and \linebreak + in para-style. +v0.31 2003/03/24 Reminded above that v0.2 was a real bug fix; + added ednotes.sty@web.de. +v0.32 2003/03/26 Added TODO on Alex' provision. [!?? 2004/04/25] +v0.33 2003/03/28 Added `experimental'; `missing' -> `bad' (hyph.) + 2004/01/29 Corrected, in the explanation for users, allusion + to problems to be solved (line breaking, not only + hyphenation) and added mention of \SplitNote + problem. +v0.34 2004/04/25 Added copyright etc.; added missing `%' before + `manyfoot.sty does not deal [...]'. Made + `(loading ...)' more clear. + `patch...' -> `"patch..."'. +v0.35 2004/05/10 Note on \RequirePackage[...]{manyfoot}; enlarged + on loading (Ednotes.sty); manyfoot -> Manyfoot. + 2004/05/20 Enhanced comment on \CheckCommand. + 2004/07/26 \string" with \Provides..., ^^J. +v0.36 2004/08/21 Added \@parboxrestore--as a bug fix for `center' + environment. + 2004/08/23 LPPL v1.3. + 2004/08/31 Rearranged preamble concerning maintenance. +v0.4 2004/10/07 Ednotes -> ednotes etc.; instructions: + ednotes option `edmacpara'. +v0.4a 2004/11/07 LPPL v1.3a. +v0.4b 2005/01/10 Contact via http. +v0.41 2006/06/26 \MFL@makemark -> \MFL@makefnmark for nccfoots v1.2; + LPPL v1.3c. diff --git a/macros/latex/contrib/ednotes/mfparxsp.sty b/macros/latex/contrib/ednotes/mfparxsp.sty new file mode 100644 index 0000000000..9d2ea053a7 --- /dev/null +++ b/macros/latex/contrib/ednotes/mfparxsp.sty @@ -0,0 +1,63 @@ +%% MFParXSp.sty---Uwe L"uck http://www.contact-ednotes.sty.de.vu. +%% +%% mfparxsp.sty earlier defined \MFparaxbuffer. +%% manyfoot version 1.7 (September 2004) defines +%% \ExtraParaSkip instead, so former mfpaxsp.sty is +%% ***obsolete***. You may use the present file to +%% convert \MFparaxbuffer of your earlier document files +%% into \ExtraParaSkip, or just to remind you of the change +%% later. (On CTAN, the new manyfoot version is obtainable +%% from directory /macros/latex/contrib/ncctools/.) +%% See explanation of \ExtraParaSkip in ednotes.sty +%% (CTAN: /macros/latex/contrib/ednotes). +%% +%% Copyright (C) 2004 by Uwe L"uck--author-maintained. +%% +%% This program can be redistributed and/or modified under the +%% terms of the LaTeX Project Public License distributed from +%% CTAN archives in directory macros/latex/base/lppl.txt; either +%% version 1.3 of the License, or any later version. +%% We did our best to help you, but there is NO WARRANTY. +%% +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mfparxsp}[2005/01/10 v0.3b %% TODO + \string\MFparaxbuffer\space (ul)] +% +\PackageWarningNoLine{mfparxsp}{% +%% Line number would be that of here. +This package is obsolete.\MessageBreak +Replace \string\MFparaxbuffer\space +by \string\ExtraParaSkip\MessageBreak +use manyfoot.sty version 1.7\MessageBreak +and don't load mfparxsp.sty any more.\MessageBreak +See ednotes.sty documentation%% Silly: full stop from LaTeX. +} + +\let\MFparaxbuffer\ExtraParaSkip + +\endinput + +VERSION HISTORY: + +v0.1 2004/04/26 First. Sent to Florian Kragl and Christian. +v0.2 2004/04/27 Previous version was wrong. Used \MFL@startpara + as a hook now. Sent to Florian Kragl, Alex Rozhenko + and Christian. +v0.21 2004/05/10 Removed explanations on loading from Mfparptc.sty. + 2004/07/26 ^^J + 2004/08/31 `author-maintained'. +v0.3 2004/09/21 "Compatibility mode" for Manyfoot.sty version 1.7; + removed earlier code and documentation; changed + .log display. + 2004/10/08 Changed explanation to users at top. +v0.3a 2004/11/07 LPPL v1.3a. +v0.3b 2005/01/10 Contact via http. + +*Florian Kragl's earlier suggestion:* +In preamble, type + \setlength{\footnotesep}{<fns>} + \renewcommand*\footnoterule{\kern-<ra>\hrule\kern-<rb>} +Here, find good values for <fns>, <ra>, and <rb> by trial and error. + +%% End of file `MFParXSp.sty'. diff --git a/macros/latex/contrib/ednotes/perpage.sty b/macros/latex/contrib/ednotes/perpage.sty new file mode 100644 index 0000000000..3f4d8e216f --- /dev/null +++ b/macros/latex/contrib/ednotes/perpage.sty @@ -0,0 +1,159 @@ +%% +%% This is file `perpage.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% perpage.dtx (with options: `style') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from perpage.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file perpage.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% perpage is part of the bigfoot bundle for critical typesetting +%% Copyright 2002, 03, 04, 05, 06 David Kastrup <dak@gnu.org> +%% +\NeedsTeXFormat{LaTeX2e} +\def\next$#1: #2 #3${#2} +\ProvidesPackage{perpage}[\next$Date: 2006/07/15 21:43:23 $ + \next$Revision: 1.12 $ Reset/sort counters per page] +\newcommand\AddAbsoluteCounter[1] +{\@ifundefined{c@abs#1}{% + \expandafter\newcount\csname c@abs#1\endcsname + \global\value{abs#1}\@ne + \global\expandafter\let\csname cl@abs#1\endcsname\@empty + \expandafter\xdef\csname theabs#1\endcsname{% + \noexpand\number \csname c@abs#1\endcsname}% + \global\@namedef{c@pabs@#1}{\z@=\z@{% + \stepcounter{abs#1}% + \afterassignment}\count@}% + \@addtoreset{pabs@#1}{#1}}{}} +\AddAbsoluteCounter{page} +\def\theabspage{\ifx\thepage\relax + \noexpand\theabspage + \else + \number\c@abspage + \fi} +\newcommand*\MakePerPage[2][\@ne]{% + \pp@makeperpage{#2}\c@pchk@{#1}} +\newcommand*\MakeSorted[1]{% + \setcounter{#1}{\z@}% + \pp@makeperpage{#1}\c@schk@{\@ne}} +\newcommand*\MakeSortedPerPage[2][\@ne]{% + \pp@makeperpage{#2}\c@spchk@{#1}} +\@onlypreamble\MakePerPage +\@onlypreamble\MakeSorted +\@onlypreamble\MakeSortedPerPage +\def\pp@makeperpage#1#2#3{% + \global\expandafter\mathchardef\csname c@pp@r@#1\endcsname=#3\relax + \global\@namedef{c@pchk@#1}{#2{#1}}% + \newcounter{pp@a@#1}% + \setcounter{pp@a@#1}{#3}% + \addtocounter{pp@a@#1}\m@ne + \@addtoreset{pchk@#1}{#1}% + \AtBeginDocument{\setcounter{pp@a@#1}\z@}% + \edef\next{\noexpand\AtEndDocument{\noexpand\setcounter{pp@a@#1}{% + \number\value{pp@a@#1}}}}\next} +\@onlypreamble\pp@makeperpage +\def\pp@chkvlist{% + \ifcase + \ifvmode + \ifx\lastnodetype\@undefined + \ifdim-\@m\p@=\prevdepth\ifdim\lastskip=\z@\ifnum\lastpenalty=\z@ + \@ne + \fi\fi\fi + \else + \ifnum\lastnodetype=\m@ne \@ne \fi + \fi + \fi \z@ + \or + \PackageWarning{perpage}{\string\stepcounter\space probably at start of + vertical list:^^JYou might need to use \string\leavevmode\space + before it to avoid vertical shifts}% + \fi} +\def\pp@fetchctr#1{\expandafter\expandafter\expandafter\pp@fetchctrii + \csname pp@r@#1@\number\value{pp@a@#1}\endcsname + \@empty\@empty} + +\global\let\theperpage\@empty + +\def\pp@fetchctrii#1#2#3{\edef\pp@label{#1}% + \edef\pp@page{#2}% + \gdef\theperpage{#3}} +\def\c@pchk@#1{\z@=\z@ + \begingroup + \pp@fetchctr{#1}\let\next\pp@page + \addtocounter{pp@a@#1}\@ne + \pp@fetchctr{#1}% + \ifcase\ifx\next\pp@page\else\@ne\fi + \ifnum\value{#1}=\z@\@ne\fi\z@ + \else + \setcounter{#1}{\value{pp@r@#1}}% + \fi + \pp@writectr\pp@pagectr{#1}{\noexpand\theabspage}} +\def\pp@writectr#1#2#3{\edef\next{% + \string#1{#2}{\number\value{pp@a@#2}}{#3}{\noexpand\thepage}}% + \pp@chkvlist + \dimen@=\lastkern + \ifdim\dimen@=\z@ \else \unkern\fi + \protected@write\@auxout{}{\next}% + \ifdim\dimen@=\z@ \nobreak \else \kern\dimen@\fi + \afterassignment\endgroup\count@} +\def\pp@pagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{% + \addtocounter{pp@a@#1}\@ne + \edef\next{\noexpand + \@newl@bel{pp@r@#1}{#2}{{\number\value{pp@a@#1}}{#3}% + {#4}}}\next}} +\def\c@schk@#1{\z@=\z@ + \begingroup + \addtocounter{pp@a@#1}\@ne + \ifnum\value{#1}=\@ne + \expandafter\xdef\csname pp@g@#1\endcsname{\number\value{pp@a@#1}}% + \edef\next{\noexpand\AtEndDocument{\global\let + \expandafter\noexpand\csname pp@g@#1@\number\value{pp@a@#1}\endcsname + \relax}}\next + \fi + \pp@fetchctr{#1}% + \ifx\pp@page\@empty + \else \setcounter{#1}{\pp@label}\fi + \pp@writectr\pp@spagectr{#1}{\csname pp@g@#1\endcsname}}% +\def\pp@spagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{% + \count@0\csname pp@g@#1@#3\endcsname + \advance\count@\@ne + \expandafter\xdef\csname pp@g@#1@#3\endcsname{\number\count@}% + \edef\next{\noexpand + \@newl@bel{pp@r@#1}{#2}{{\number\count@}{#3}% + {#4}}}\next}} +\def\c@spchk@#1{\z@=\z@ + \begingroup + \addtocounter{pp@a@#1}\@ne + \pp@fetchctr{#1}% + \ifx\pp@page\@empty + \else \setcounter{#1}{\pp@label}\fi + \pp@writectr\pp@ppagectr{#1}{\noexpand\theabspage}} +\def\pp@ppagectr#1#2#3#4{\@ifundefined{c@pp@a@#1}{}{% + \def\next{#3}% + \expandafter\ifx\csname pp@page@#1\endcsname\next + \addtocounter{pp@a@#1}\@ne + \else + \setcounter{pp@a@#1}{\value{pp@r@#1}}% + \fi + \global\expandafter\let\csname pp@page@#1\endcsname\next + \edef\next{\noexpand + \@newl@bel{pp@r@#1}{#2}{{\number\value{pp@a@#1}}{#3}% + {#4}}}\next}} + +\endinput +%% +%% End of file `perpage.sty'. diff --git a/macros/latex/contrib/ednotes/ulineno.pdf b/macros/latex/contrib/ednotes/ulineno.pdf new file mode 120000 index 0000000000..ebecb60c7d --- /dev/null +++ b/macros/latex/contrib/ednotes/ulineno.pdf @@ -0,0 +1 @@ +../lineno/ulineno.pdf
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/ulineno.tex b/macros/latex/contrib/ednotes/ulineno.tex new file mode 120000 index 0000000000..1c05855f15 --- /dev/null +++ b/macros/latex/contrib/ednotes/ulineno.tex @@ -0,0 +1 @@ +../lineno/ulineno.tex
\ No newline at end of file diff --git a/macros/latex/contrib/ednotes/varnrule.tex b/macros/latex/contrib/ednotes/varnrule.tex new file mode 100644 index 0000000000..4e2d203314 --- /dev/null +++ b/macros/latex/contrib/ednotes/varnrule.tex @@ -0,0 +1,111 @@ +%% varnrule.tex -- demo for varying footnote rules with +%% ednotes.sty (manyfoot feature now supported by ednotes +%% -- search ednotes.sty for `Customizing *footnote rules*'). +%% Uwe Lueck http://contact-ednotes.sty.de.vu 2006/07/06 + +%% Present task: Sergei Mariev wants to use ordinary (numbered) +% footnotes as well as critical apparatuses. An ordinal footnote +% rule should separate the main text from the footnotes in any +% case. The additional footnotes should be separated by usual +% footnote rules as well. However, there shouldn't be a rule +% between the ordinary numbered footnotes and the remaining +% ones. +% +\documentclass[12pt]{article} + +% Below \endinput here, there is a sample for experiencing the +% manyfoot feature without ednotes ...: +% +%%%% \iffalse %% To switch to the mere manyfoot sample -- needs +%%%% %% removing percent signs preceding corresponding +%%%% %% \fi as well! + +\newcommand{\SelectAnoteRule}{[1]{no}} +\newcommand{\SelectBnoteRule}{[0]{default}} +% <- Priorities 1 and 0 will be overridden by priority 2 +% of the Standard LateX footnote rule, +% so there will be a footnote rule between main text and the +% footnotes in any case. Priority 1 above ensures that +% there will never be a visible rule between ordinary footnotes +% and the new A/B/C footnotes handled by manyfoot. +% `no' corresponds to \newcommand{\nofootnoterule} below; +% `default' refers to the standard footnote rule as stored +% by manyfoot. +% -- \newcommand{\Select... must come before loading ednotes. + +\usepackage[Bpara,Cpara]{ednotes} + +\renewcommand{\footnoterulepriority}{2} +% <- setting default priority, especially for the ordinary LaTeX +% footnotes. This priority is the maximal one here and thus +% overrides all the remaining ones. So there will be a rule +% between main text and the footnotes in any case. +% -- The previous line must come /after/ loading ednotes. + +\newcommand{\nofootnoterule}{} +% <- or \let\nofootnoterule\empty; or call it \emptyfootnoterule. +% If so, use `empty' instead of `no' above. +% -- This line may come anywhere before the first page +% is output. + +\begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\linenumbers + +%% Remove or add some percent signs for playing: +Some text.\footnote{Ordinary footnote.} +% \Anote{A lemma.}{A note.} +\Bnote{B lemma.}{B note.} +\Cnote{C lemma.}{C note.} + +\end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +Code demonstrating manyfoot's feature of customized footnote rules: + +%%%% \fi + +\nofiles + +\usepackage[para,ruled]{manyfoot} +% <- I wasn't able to get the below -- much wanted -- results +% without the `ruled' option -- may someone do better!? + +\renewcommand{\footnoterulepriority}{2} +% <- setting default priority, especially for the ordinary LaTeX +% footnotes. This priority is the maximal one here and thus +% overrides all the remaining ones. So there will be a rule +% between main text and the footnotes in any case. + +\newcommand{\nofootnoterule}{} +% <- or \let\nofootnoterule\empty; or call it \emptyfootnoterule. +% If so, use `empty' instead of `no' below. + +\SelectFootnoteRule[1]{no} +\newfootnote[para]{A} +% <- Priorities 1 here and 0 below will be overridden by priority +% 2 of the Standard LateX footnote rule, +% so there will be a footnote rule between main text and the +% footnotes in any case. Priority 1 just above ensures that +% there will never be a visible rule between ordinary footnotes +% and the new ("level") footnotes handled by manyfoot. + +\SelectFootnoteRule[0]{default} +% <- `default' refers to the standard footnote rule as stored +% by manyfoot. +\newfootnote[para]{B} +\newfootnote[para]{C} +% <- Notes in A, B, C will be separated by rules in the usual way. + +\begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Remove or add some percent signs for playing: +Some text.\footnote{Ordinary footnote.}% +% \FootnotetextA{}{A}% +\FootnotetextB{}{B}% +\FootnotetextC{}{C} + +\end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +End of varnrule.tex + diff --git a/macros/latex/contrib/ednotes/visible.txt b/macros/latex/contrib/ednotes/visible.txt new file mode 100644 index 0000000000..f648cef761 --- /dev/null +++ b/macros/latex/contrib/ednotes/visible.txt @@ -0,0 +1,108 @@ +VISIBLE -- Advice for placing new LaTeX files. + +Author: Uwe L"uck, http://www.contact-ednotes.sty.de.vu, +2004/10/18, updated 2008/04/02; +aided by Karl Berry. + +--derived from a TUGboat (vol. 24) article on Ednotes. + + +Once there was a *problem* with placing new LaTeX files -- +many people use MiKTeX nowadays which usually makes getting +and installing packages quite easy. See http://www.miktex.org, +or + + http://www.tex.ac.uk/cgi-bin/texfaq2html?label=inst-miktex + +which also gives some hints in case you even have problems with +MiKTeX. Don't read on this file if you are happy with this/ +with MiKTeX. + + +* The problem: * + +E.g., a user downloads a LaTeX file from CTAN. Or: often there +is a pair of a .dtx and an .ins file for producing a .sty file. +("Run LaTeX on the .ins file ..." This may be difficult enough, +but we assume now that the user manages this.) Typically the +user is told to put the (.sty) file to a folder "where LaTeX +can find it", or "visible to TeX". Indeed, the user cannot use +the file otherwise. However, some users have had no idea how to +arrange things so that (La)TeX finds the file. + +Unfortunately, the procedure for this is somewhat non-trivial +indeed. It depends very much on the user's LaTeX installation, +so it is difficult to indicate a procedure that helps everyone. + + +* Principles for solutions: * + +Technically, the searching agent is the TeX program, not LaTeX +--we choose our wordings accordingly here. LaTeX is rather a +kind of input ("format") to the TeX program. (If this doesn't +make sense to you, don't worry about it.) + +I think of three kinds of approaches: + +1. Put the file into the folder where the files you are editing +are (call them "job files" here). This is easy; but if the user +wants to use the file for another project pursued in a different +folder, the approach would require another copy of the file--or +a link! Therefore, it has been common to place macro (.sty) or +similar files in folders that TeX searches independent of the +folder containing the job files. + +2. Put the file into a folder that TeX has searched so far. + +3. Put the file anywhere (or into an extra folder newly created +with care)--and extend the set of folders that TeX searches +accordingly. The TeX installation ("shell") usually offers a +facility for this--which unfortunately is not always known to +the user. + + +* Advice from TeX Users Groups: * + +I recommend to study the following web pages: + + http://tug.ctan.org/installationadvice + + http://www.tex.ac.uk/cgi-bin/texfaq2html?label=inst-wlcf + +These prefer approach 3 of the above, especially the TDS +standard of arranging folders, see + + http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds + + +* Easy tricks that I prefer: * + +I must confess that I have never worked with the shells that are +chosen as examples on these web pages. Moreover, some Windows +users may find the examples little helpful. So my personal hints +use approach 2 of the above. + +o Typically, the file is from CTAN folder + /tex-archive/macros/latex/contrib/, and you find a folder + .../latex/contrib/ in the installation at your workplace. + Then the latter should be a good guess for placing the new + file. + +o You may find a folder .../texinput/ (or TeXinput!?) which + should be another good guess. + +o Search your installation for files with the same file name + extension (usually `.sty'), try their folder. + +(Updates are a special case of the last idea, of course.) + + +Ok, if all this doesn't help, you may ask at comp.text.tex +or your local TeX guru, or send an email to texhax -- see + + http://tug.org/mailman/listinfo/texhax + + +Good luck! + + diff --git a/macros/latex/contrib/ednotes/vplref.sty b/macros/latex/contrib/ednotes/vplref.sty new file mode 120000 index 0000000000..83051c5f97 --- /dev/null +++ b/macros/latex/contrib/ednotes/vplref.sty @@ -0,0 +1 @@ +../lineno/vplref.sty
\ No newline at end of file |