Intermediate English Speaking Course

0 views
Skip to first unread message

Margurite Vizarro

unread,
Aug 4, 2024, 8:21:08 PM8/4/24
to tercsleektussran
BackgroundThis question is aimed primarily at those of us who have been using LaTeX for quite some time but feel like they do not have a very "principled understanding" of it even though they would like to (i.e. those of us who want to go from intermediate to advanced but feel lost at sea).

TL;DR: Does anyone know of a course like structure (MOOC or otherwise...Udemy and Coursera have nothing of value) for intermediate LaTeX users to learn LaTeX in a "principled fashion"? Those of you who teach LaTeX at your universities, how are your courses structured (if you don't mind sharing)?


To keep this question relatively short, I'd simply like to say I've been using LaTeX now for a number of years and have never ceased to be amazed by its capabilities and even more so by the incredible support group here on TeX.SE. I've read several of the other questions somewhat related to this:


The frustrating thing is that most educational LaTeX material seems to be geared towards either those who are just starting out or those who are much more advanced. For example, I look at the content of that Udemy course (and this is not meant to be a knock against it) and am rather surprised by the "advanced content" (all things I am fully comfortable with doing and have done before). But I look at something like the computer science behind TeX/LaTeX by Eijkhout and immediately feel a bit out of my depth.


So far my approach to learning has been to simply learn what's necessary as I encounter different problems (and post here on TeX.SE when I can't progress). Even when I have seen questions on here that I feel like I may know how to answer, I never do because I know several of the gurus here have a "proper" way of going about it all. I also know some members teach LaTeX at their universities (egreg and gonzalo come to mind).


In sum, I am eager to learn LaTeX in a "principled way" (understand the code for packages, be able to write my own, etc etc) but am lost as to how to do it effectively without a course like structure. Simply reading through the TeXbook, LaTeX and Friends, The LaTeX Companion, etc. etc. is not really cutting it anymore (it's so easy to get overwhelmed by the sheer volume of different books that one has great difficulty proceeding in a linear fashion). A well-defined structure would help a great deal.


The problem: different users have different interests (and needs) and therefore different ideas of what counts as "intermediate" (beyond the basics), as pointed out by Joseph Wright in a comment above. This was perfectly elaborated by Christian Feuersnger in this answer from 2011: he categorized three kinds of things that post-beginner (La)TeX users may like to learn (which I'm rephrasing), and only you can decide what is important to you:


TeX's features for typesetting specifically: the box-glue-penalty model, alignments, a few parameters and features built into the program like \parshape and the like. Basically: viewing TeX's output (each page) as a giant box made up of boxes laid out in sequences vertically (e.g. lines of text) and horizontally (e.g. characters within a line) with appropriate glue between them, and learning how to make a page look like some predetermined ideal you already have in mind.


TeX's facility for programming: the intricacies of macro expansion: what do terms like \xdef, \expandafter, protected and fragile, \csname mean? How do you write macros that do the work you want them to do? How can you use the features provided by expl3 to make this easier?


The package ecosystem: the facilities provided by LaTeX itself, and by the most important of the thousands of packages available on CTAN. For example, LaTeX itself provides features like automatic numbering (you just type \section and somewhere behind the scenes a counter is incremented and it comes out numbered), cross-referencing (\label and \ref), and so on. There are packages for specific fields (mathematics, chemistry, linguistics), for specific languages, for specific kinds of documents (presentations, drawings), etc.


Personally I find programming in macros rather perverse. :-) (Not just xii.tex and the like, but even the code of typical packages, and of LaTeX itself.) Whatever its other merits, TeX does not have a great programming language in it (see the answers to this question). (There are some comments of Knuth indicating this was intentional, but he did not foresee that people would go to great lengths to program in it anyway.) So personally (and this is a minority opinion in the TeX community, perhaps I am even a minority of one, simply out of not having thought this through well enough): I would prefer a style of TeX usage that involves as few macros as possible. (This is not specific to LaTeX: it would apply to ConTeXt, to plain-TeX packages like opmac, probably every way in which TeX is used currently.)


Finally, that leaves (1) (typesetting). At heart TeX has a startlingly simple and unexpectedly versatile model of typesetting: breaking paragraphs into lines using the box-glue-penalty model. It sounds like something that's only about normal paragraphs of text (and that's what it was designed for), but with appropriate choices of your boxes, glues and penalties, you can achieve practically everything you've ever seen in a document typeset with (La)TeX (and more). The power of this model, despite its unifying simplicity (which was something noted by early reviewers of TeX, like Kernighan who worked on troff), was something of a surprise even to Knuth and he says it took him years to learn more and more things that could be done with it. (Of course from a certain perspective you could call these things hacks, but I find them very elegant.)


This is the part I personally am most interested in (somewhat unusually I think); this is also the thing that is directly against LaTeX's philosophy, which is to focus on the content / document structure, and leave the formatting to the packages you use. And if you're happy with that, you probably don't have to learn deeper here (unless you want to write your own packages that provide formatting, and suddenly you have to learn all the things that your packages were helpfully trying to hide from you). If you do want to learn more about what I consider the core of TeX typesetting, I can recommend what I think are the two best resources (even better to learn from than The TeXbook, which you can read next):


The book A Beginner's Book of TeX by Seroul and Levy. This is such a lovely book: it is gentle and assumes nothing, focuses on only a subset of TeX, yet everything is introduced so appropriately and made to seem natural (including making some typical mistakes and explaining why they go wrong), that the design of TeX will appear to make sense.


For more on this aspect of TeX you can read The TeXbook, some other stuff that came out of the Stanford TeX project by Knuth and his associates, some talks and articles by Frank Mittelbach, some stuff by people who have written TeX-like or TeX-inspired systems (there are a few in existence, like SILE and Patoline, and a bigger graveyard of unfinished systems but some of whose authors wrote something useful before their projects died), etc.


This unfortunately will take some work for anything nontrivial, because the entire system isn't set up for you to succeed at it (it optimizes for the end users, not package writers). The macros of LaTeX or major packages tend to be frightfully complicated because they are the outcome of decades (30+ years in LaTeX's case) of development: starting with something simple, they have grown to encompass all conceivable cases, be robust against various failure modes, etc. (Do you want \section... to not break when you stick a macro into its argument? Do you want the code of \section to be simple and readable? Pick one.)


Moreover, most packages are written assuming various functionality of other packages (and, if they have something to do with formatting, the exact formatting of other packages), they may use advanced macro techniques to be robust and comprehensive, these macros in turn assume aspects of other packages, etc.


So to conclude/reiterate: there are these three different categories, and if you really care about all of them (and not how to be a more skilful LaTeX user who knows how to use which packages, which is what is ultimately useful in real life), then you may have to pursue all three in parallel instead of in any structured manner.


Since you asked how people who teach this in universities structure courses, here's mine. I teach a series of workshops to postgraduate students from all disciplines. (Generally - occasionally, I've taught a group for a particular school.)


What these workshops do, for the most part, is say 'here's a useful package or tool and a couple of very simple uses, so you get the general idea'. Each has an appendix with some further information for the students who are racing ahead and directions to further resources. Different students need different things and have different interests, even though these topics are general.


I also provide a handout with package recommendations (general on one side; subject-specific on the other), a Biblatex 'cheat sheet', a font sampler and a list of font packages. (These I had to write as I couldn't find them already done.)


Joseph Wright has it.LaTeX started out strictly within the university environment for computer science and mathematics streams, but now it's adapted in all directions according to the individual requirement of the user.


I think the majority of us bumble along, referencing different resources, and reading package descriptions when we require a new function.I employ LaTeX on a very basic level creating templates for business correspondence and other paperwork.I'm also a registered trainer/assessor, but if I were to structure a LaTeX course based on my knowledge of LaTeX it would be too limited for many, and contain too much extraneous material for the rest.

3a8082e126
Reply all
Reply to author
Forward
0 new messages