|
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:
- 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).
- Apart from typesetting, TeX provides a programming language
as powerful as any other
(it is Turing-complete,
cf. programming a Mars rover with TeX).
- 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.
- Documentation.
- 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 ]
- 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 ]
- 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 ]
-
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? ]
lineno.sty can 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 ]
- 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.
- multicol especially
for switching between one- and two-column-mode
in mid page with line numbers in the page margins.
- hyperref (hypertext
support) marking anchors by colours or frames seems not to work properly.
- 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.
- Around lineno.sty:
[ a week? ]
- 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.
\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.
- 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.)
- 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.
- 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 … ]
- Line numbers in index: Some users have a private version of this,
to be released.
- 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 … ]
- 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 ]
|