ednotes logo

Uwe Lück – "TeX macro writer"

TeX package projects

[ TeX packages | my TeX packages | to do | TeX consultant ]

[→| ↑ ]


1. What TeX packages are (skip if you know): TeX is a very powerful multi-platform typesetting program. "Power" includes:
  1. TeX supports styles of typesetting required in various academic areas, far beyond what office software provides, or at least easier ("clicking formulas together" may be quite exhausting).
  2. Apart from typesetting, TeX provides a programming language as powerful as any other (it is Turing-complete, cf. programming a Mars rover with TeX).
  3. You can make your own commands ("macros" — free customizability of user interface for specific local purposes, e.g. to save typing repeating sequences of text and other commands).
Moreover,
  • Required software is free.

TeX’s power on the other hand means:

  • The TeX program almost cannot be handled without user interfaces consisting of packages of macros (those introducible "commands").
  • The behaviour of these macros and the TeX program is typically so complex that even experts sometimes must work very hard to figure out what is going on.

Thus a macro package usually is a user interface for special purposes; yet there are also macro packages that don’t introduce special commands but just change settings. LaTeX is the mostly used general purpose macro package.

[→| ↑ ]


2. Packages I maintain on CTAN, the internet repository of TeX-related software [ A | B | C | D ]
(a more compact list is at ctan.org/author/id/lueck):

A. "Early Work:"

ednotes.sty
for typesetting critical editions in the classical manner. (My main work, initial idea of implementation Christian Tapp’s; see works that used ednotes.sty.)
lineno.sty
numbers lines of text and allows referring to them by their numbers. This is essential for ednotes.sty; but the package is also used for the revision process of submissions, cf. Elsevier’s recommendations. (Mainly Stephan I. Böttcher’s work, extension to tables based on his and Christian’s ideas, my extension on capacity for large editions with many notes per page.)
ltabptch.sty
a patch to longtable to repair uneven vertical spacing.
tamefloats.sty
LaTeX’s output routine likes to misplace footnotes in presence of figures or margin notes. TeX 3 provided a remedy \holdinginserts which LaTeX however hasn’t used so far. tameflts.sty is a patch doing so. The package seems to be an improvement (I received one assertion), yet not the entire solution. (‘tamefloats’ is the package identifier on CTAN and the name of its CTAN directory; for \listfiles I chose ‘tameflts.sty’ for the name of the file that provides the functionality of the ‘tamefloats’ package.)
versions.sty
allows switching between "versions" of a document, typeset from the same source, by changing settings in one or two lines, maybe brief vs. extended, English vs. Spanish, or exercises with/without answers. (Reimplementation of old version.sty.)
autoarea.sty
a tool for PiCTeX (the latter is a rather ancient but powerful package for drawing figures, without \special, not needing a graphics driver.).

… poorly documented (except ltabptch that got a ltabptch.tex and ltabptch.pdf secretly …)

B. "The Turning Point:"

nicetext bundle
some plain-text-to-latex and filtering functionality especially for easy package documentation with "minimal" markup — 
  • fifinddo.sty filters,
  • niceverb.sty provides some "sugar" syntax for describing macros, and
  • makedoc.sty applies fifinddo.sty for typesetting the code lines and the comment lines in package files.

Contained are also

C. "Happy Work" — documented using nicetext:
morehype bundle
provides
  • TeX-related links (texlinks.sty),
  • hypertoc.sty for nicely looking tables of contents with links to sections,
  • blog.sty for generating HTML.

fileinfo bundle
  • customizes LaTeX’s \listfiles command (for managing certain sets of source files) and
  • extends the \GetFileInfo command from LaTeX’s doc.sty (for getting infos from packages without loading them).

filedate.sty
checks whether you have updated the input for fileinfo above as well as for nicefilelist below.
dhua.sty
German phrase abbreviations using thin space (German typography).
langcode.sty
choose language-dependent macro definitions by \uselangcode{lc}
line numbers and critical editions:
fnlineno.sty
extends lineno.sty for numbering footnote lines. [ thanks to DFG/RUB ]
edfnotes.sty
extends ednotes.sty for commenting footnotes. [ thanks to DFG/RUB ]
rather for programmers only:
bitelist.sty
tries to improve fifinddo’s parsing.
catcodes bundle
provides “generic” category code handling.
dowith.sty
iterates a command on an "arglist." commado.sty and filesdo.sty are similar, acting on comma-separated lists.
ifnextok.sty
deals with LaTeX’s peculiarities about usage of square brackets and skipping space tokens in parsing macro parameters.
inputtrc.sty
traces \input levels (for debugging).
finstrut.sty
configures that LaTeX internal \@finalstrut (finishing footnotes …).
longnamefilelist.sty
modifies LaTeX’s \listfiles for base filenames with more than 8 characters.
nicefilelist.sty
deals with long file base names like longnamefilelist.sty, but additionally cares for \listfiles alignment with respect to filename extensions of varying lenght and reserves alignment columns for the last modification date and the revision number string.
monofill.sty
provides a backbone for aligning text with fixed-width character display such as on screen.
plainpgk.tex
provides a little bit of LaTeX-like handling of “generic” package files, such as in the catcodes and dowith bundles.
typeoutfileinfo.sh
is a shell script to display \Provides... content on screen.
D. "Info" packages:
Doc-PiCTeX
lists documentations of the PiCTeX drawing package.
fifinddo-info
is a beamer presentation in HTML format about HTML generation with blog.sty and package documentation with the nicetext bundle.
latexfileinfo-pkgs
compares packages that display LaTeX file info according to the \Provides... commands.

[→| ↑ ]


3. Pending work: There are some compatibility issues with lineno probably needing much work [see]; I have also made a number of new features working fine at my workplaces — while needing additional efforts to prepare public releases of them [see]. And I would like to improve simply documentation — of all my packages older than nicetext [see]. I am listing these issues (and more of them [see]) here in hope for support without which I am unable to master them.
  1. Documentation.
    1. lineno. Instead of LaTeX’s standard .dtx /  / docstrip (literate?) documentation method, the real author of lineno, Stephan I. Böttcher, employed AWK. For going on this way, I had to find an AWK version that worked with me, and to modify the AWK code. Stephan’s method inspired makedoc.sty (nicetext bundle). I would like to rework lineno’s documentation for makedoc, this should be more stable and portable than AWK. — Moreover, my original discussions should be cut down (or typeset in \footnotesize). — Next, the user manual ulineno.pdf should be updated — it was out of date already when Stephan passed the package to me. — At that time, I also added edtable.sty for numbering table rows and referring to them. (It is actually used for a volume of the Nicolaus Copernicus Gesamtausgabe.) edtable.sty only has ASCII documentation. It should be typeset properly. [ 3 days or a week? a number of walks in progress ]
    2. ednotes  has (besides a rather sketchy documentation in a TUGboat article) quite a complex documentation — only ASCII … The CTAN directory contains additional package files (for ednotes options) that should get properly typeset documentation. [ 2 or 3 days? some walks ]
    3. versions  refers to version.sty. My description of the relation may have been wrong originally already. Recently, Donald Arseneau revised version.sty. Besides getting properly typeset documentation instead of ASCII, the content of versions’s documentation should be revisited. [ 2 quarter days with at least one walk in between ]
    4. autoarea, tamefloats, and wiki.sty should get properly typeset documentations as well. wiki.sty was written before I had makedoc.sty. [ 1 day, including a walk? ]
  2. lineno.stycan be used together with the following packages (in the sense that all the text of a document can be compiled), yet sometimes not with the desired outcomes. lineno.sty may, e.g., occasionally disable features of other packages. Such issues have even been discussed in internet forums (without telling the maintainers). [ a week? exploration needed first, no idea of solutions right now ]
    1. amsmath.sty www.ams.org/publications/authors/tex/tex American Mathematical Society in scientific publishing, but lineno.sty doesn’t number its equation arrays properly. amsmath’s align environment was dealt with on comp.text.tex, starting here, ending here — Heiko Oberdiek’s solution just should be incorporated in lineno.

    2. multicol especially for switching between one- and two-column-mode in mid page with line numbers in the page margins.
    3. hyperref (hypertext support) marking anchors by colours or frames seems not to work properly.
    4. Journal classes:
      • American Physical Society: revtex4 — compatibility issues, worked out privately.
      • Elsevier: There may be no compatibility issue here, in an earlier version of the present page I may have been confused by elsart.cls. But that page now clearly states that elsarticle.cls (on CTAN) is now recommended.

  3. Around lineno.sty: [ a week? ]
    1. wrapfig functionality: This at present is part of a private version of lineno.sty that was used in Volume III/3 of the German Nicolaus Copernicus Gesamtausgabe to let text flow around redrawings of the figures in Copernicus’ De revolutionibus. Because of changing page breaks, the figures had to be repositioned within paragraphs several times, they were some 140. With wrapfig.sty, such a change needs knowing and respecting the line breaks. With lineno’s enhancement, one just enters the number of the line where the figure should be inserted into a paragraph. It would be quite simple to place it automatically at the top of the next page if it doesn’t fit on the present page (this may not work in all cases). In a later future, there might be a reduced version of lineno.sty that just provides this functionality, without numbering lines and referring to them.
    2. \includeonly bug fix: It seems that each change of \includeonly crashes, maybe with ednotes only. The latter’s automatically generated labels probably should get a part referring to the \include part of the book and restart the counter for each such part.
    3. Long lemmas: (Apparently related to previous problem) ednotes.sty doesn’t properly support referring to text that spans paragraphs or more (e.g., entire chapter) is missing; my tries in own work were not stable enough to be released, it is a matter of choosing a nice syntax as well. (A preliminary, privately distributed parlemma.sty as of 2009-03-04 seems to solve this.)
    4. Margin notes to tables (just a release is missing, mainly for critical editions): edtable.sty so far has been an enhancement of lineno.sty (in the latter’s CTAN directory) for dealing with tables and as such an enhancement of ednotes.sty for critical editions as well; my private version of it now is a standalone enhancing Markus Kohm’s marginnote.sty.
    5. parallel.sty functionality or compatibility (translations or synopses, parallel text passages facing each other on left/right pages or left/right columns; cf. a German forum discussion). [ exploration first, solution may be complex … ]
    6. Line numbers in index: Some users have a private version of this, to be released.
  4. nicetext needs re-thinking, reworking, factoring out implementation tools, better presentation. niceverb.sty should employ wiki.sty (or at least be able to do so); at present, both packages rather are incompatible. I also started "auto mode" of niceverb for typesetting the ASCII documentation of Donald Arseneau’s packages, without changing them. A few examples that worked already can be seen in nicetext’s CTAN directory, demo subdirectory. [ "flexible" stuff for a week … ]

  5. A number of new packages (for quite different purposes) I started to work at (to be added here …)

[→| ↑ ]


4. Abilities and knowledge as a TeX consultant:of swing
  • principles of typography;
  • markup commands;
  • obtaining special symbols (have you noticed I am using typographical versions of dashes, apostrophes, quotation marks, spaces here?);
  • shaping tables;
  • finding existing special packages for special purposes;
  • internal processes of TeX and LaTeX (I have studied The TeXbook, the main TeX manual, and the internal LaTeX code) — 
  • therefore my main ability is programming macros (LaTeX packages) for individual purposes;
  • My nicetext package enables me to document usage of new macros (made for you) instantly — or even of other authors’ macros!
  • years of practice with math and other sciences formulas as well as with critical text editions (participated in several book productions, in the first instance for Nicolaus Copernicus Gesamtausgabe);
  • reworked and maintained the package of a science publishing company;
  • engagement on the texhax mailing list, to answer or discuss "how-to" or "why" questions on TeX and LaTeX, also keeps me in touch with new developments and technologies.
  • I also use my morehype package to generate rather complex HTML (the present pages are generated this way). Apart from more elaborate formatting (up to CSS), this may be considered a static Content Management System (for TeX users).

Until I have finished certain projects, I will only take part-time or freelance jobs. I hope to resume scientific work (mathematics, philosophy) instead of mainly working on TeX.


Last revised 2015-05-15 © Uwe Lück

[→ top of page ]

Webmaster: Rainer Lück, Gernsbach
Supported by: A la Siesta Hängematten und Kunsthandwerk, Wismar