Community

When LaTeX defeats you, the person with the answer is usually on tex.stackexchange.com. But this community charges an entry fee, and the fee is not politeness — it is a minimal working example, an MWE. How seriously is it meant? Seriously enough that TeX Live ships a package called mwe whose only job is to make minimal examples easier to share, and that texdoc minexample opens a 21-page booklet about nothing but how to build one. This page covers where to take a LaTeX question — TeX Stack Exchange, what the Usenet group comp.text.tex left behind, TUG and the national user groups, package issue trackers — and how to ask so that an answer comes back: the craft of cutting a 300-page document down to twenty lines.

Search tex.stackexchange.com before you ask

Most LaTeX questions have already been asked, in the same words. TeX Stack Exchange (tex.stackexchange.com) was created in August 2010 — and that date is not hearsay, it is recorded in the LaTeX team’s own newsletter. LaTeX3 News issue 5 (January 2011), which ships inside TeX Live, notes that the TeX Stack Exchange question and answer website was created and had grown quickly: at the time of writing some 2,800 people had asked 2,600 questions with 5,600 answers in total, and 2,200 users were visiting daily. Type texdoc l3news and the same page opens on your machine. More than a decade later the figures have gained a couple of digits, but what really grew is the back catalogue. One trick makes searching work: do not describe the problem in your own words, paste the error message verbatim. A line such as ! Undefined control sequence or ! Missing $ inserted is the best search key you will ever have.

For the three decades before that, the centre of gravity for TeX discussion was the Usenet newsgroup comp.text.tex (German speakers had de.comp.text.tex). How central it was shows in the acknowledgements of the era’s books. In TeX by Topic (Addison-Wesley, 1991) Victor Eijkhout thanks the participants of the discussion lists TeXhax, the Dutch TeX-nl, and comp.text.tex, writing that their questions and answers gave him much food for thought. That book ships inside TeX Live — texdoc texbytopic opens it, acknowledgements included, so you can watch the centre of gravity move with your own eyes. The newsgroup still exists, but for a LaTeX question today the first stop is TeX Stack Exchange. Old newsgroup posts do still surface in searches, so whenever one does, check what year it is from.

What a minimal working example actually is

An MWE is the shortest complete document that still reproduces the problem — and “complete” is meant strictly. Nicola L C Talbot’s Creating a LaTeX Minimal Example (2014, shipped in TeX Live, texdoc minexample) opens by insisting that a minimal example must contain no package or code that does not contribute to the problem, but that it must include a document class and the document environment. So it is not a fragment. It is something the reader can save and run through pdflatex unchanged — that is what the “working” in the name means. Paste a three-line snippet with no \begin{document} and the first reply will simply ask for a complete example, costing you a round trip.

document.tex
% A minimal working example: complete, compilable, and as short as it can be.
% Nothing here that does not bear on the problem being reported.
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{ll}
  \toprule
  left & right \\
  \bottomrule
\end{tabular}
\end{document}

Examples that need a figure are where people get stuck: you cannot send your own photograph, and if you did the reader would not have it. This is what the mwe package is for. Writing \usepackage{mwe} loads graphicx and makes a set of stock images available from the TeX tree — example-image, example-image-a, example-image-16x9, example-grid-100x100bp and more. Everyone with TeX Live already has them, so an example containing \includegraphics{example-image} compiles on anybody’s machine. By the same logic, when you need bulk body text use \lipsum[1-3] from lipsum or \blindtext from blindtext (mwe loads lipsum automatically when it is present). An example that needs no attachments gets answered faster, for that reason alone.

Cutting 300 pages to twenty lines: building up and hacking down

There are only two routes, and Talbot names them building up and hacking down. Building up starts from \documentclass{article} and an empty document environment and adds one thing at a time until the problem appears. Hacking down starts from a copy of the real document and removes things until the problem disappears. Building up suits a short manuscript; hacking down is faster on 300 pages — but do not hack down one line at a time. Delete half. Comment out the first half of the preamble; if the problem survives, that half is innocent, and you learned it in one compile. Halve what remains, and halve again: a dozen or so rounds turn hundreds of lines into a handful. This is binary search, and the same move works on \included chapters.

  • Work on a copy. Never cut into the original .tex. Every deletion happens on a duplicate.
  • Throw the body away first. Drop the \included chapters, the figures, the tables and the bibliography, and leave just the one line that misbehaves after \begin{document}.
  • Delete the preamble in halves. If the problem survives, the half you removed is innocent; if it vanishes, suspect what you just removed and halve that instead.
  • Expand your own macros. Replacing a \newcommand with its body separates “the bug is in my macro” from “the bug is in the package”.
  • Try swapping the class for article. If the problem then goes away, the class is the cause — which is a real finding. Just say so when you report it.
  • Recompile after every cut. The commonest failure is carrying on without noticing that the problem stopped reproducing several deletions ago.

Once it is cut down, attach the version information. You do not have to write it out by hand: put the single line \listfiles before \documentclass, compile, and the end of the .log grows a *File List* section listing every file that was loaded with its date and version. Add the engine (pdflatex, xelatex or lualatex) and the distribution (TeX Live 2024, MiKTeX, Overleaf) and the reader can essentially reconstruct your setup. Do not summarise the error — paste the line beginning with ! and the few lines after it, verbatim. A description like “I get some kind of error” always carries less information than the original line does.

log
% \listfiles before \documentclass, then look at the end of the .log:
 *File List*
 article.cls    2023/05/17 v1.4n Standard LaTeX document class
  size10.clo    2023/05/17 v1.4n Standard LaTeX file (size option)
booktabs.sty    2020/01/12 v1.61803398 Publication quality tables
 ***********

Beyond Stack Exchange: TUG, the national user groups, issue trackers

TUG, the TeX Users Group, is an international membership not-for-profit founded in 1980. It underwrites development (TeX Live among it), publishes the journal TUGboat, and runs an annual conference. That TUGboat is not merely something to read can be checked on your own disk: the submission class ltugboat.cls ships inside TeX Live — its copyright line reads “Copyright 1994-2023 TeX Users Group” and TUG itself is the maintainer — and texdoc tugboat opens ltubguid.pdf, the instructions for authors. In other words, if you ever want to write up something you learned about TeX, the typesetting tools for publishing it are already installed.

The TeX world is also carried by user groups organised by country. The official TeX Live guide thanks TUG, the German-speaking DANTE e.V., the Dutch NTG and the Polish GUST for providing the necessary technical and administrative infrastructure, adds “please join the TeX user group near you”, and points at tug.org/usergroups.html. The Spanish-language group CervanTeX contributes a FAQ to TeX Live too; tlmgr info es-tex-faq confirms it. In Japanese, the Japanese TeX Development Community (texjporg) maintains pLaTeX and upLaTeX, jsclasses (originally by Haruhiko Okumura), dvipdfmx’s Japanese support, gentombow and ptex2pdf, and runs the TeX Wiki (texwiki.texjp.org); Okumura’s TeX forum (okumuralab.org/tex/) is the de facto place to ask in Japanese. Elsewhere there are the latex.org forum, the mailing list [email protected], and r/LaTeX on Reddit.

When you are sure it is not a question but a bug, the destination changes. A package-specific fault goes to the author’s issue tracker — and you do not have to hunt for the address, because it is already on your machine. If the output of tlmgr info <package> carries a cat-contact-bugs or cat-contact-repository line, that is the official place to report (tlmgr info mwe, for instance, returns a GitHub issues page). A fault in LaTeX itself — the kernel — goes to the LaTeX Project (latex-project.org), and there you use the latexbug package. It exists to classify bugs, and the LaTeX team asks that it be loaded in any test file sent with a bug report: loading it determines whether the bug really belongs to the kernel or to a third-party package. A report sent to the wrong address arrives nowhere at all.

DestinationWhat belongs thereNotes
tex.stackexchange.com“how do I write this?” and “why is this an error?” in generalcreated August 2010; search first, then ask with an MWE
texwiki.texjp.orgsetting up and configuring Japanese TeX, Japanese fontsrun by the Japanese TeX Development Community
[email protected]discussion-shaped topics, questions about historical backgrounda TUG mailing list; not a fast-answer venue
cat-contact-bugsbugs and feature requests for one specific packagetlmgr info <package> prints the address for you
latexbugbugs in the LaTeX kernel itselfload it in the test file and it works out who should receive the report

How to write a question that gets answered

Four things are enough: a short statement of the symptom, the MWE, the verbatim error, and what you already tried. In the booklet quoted above, Talbot advises keeping the description brief, listing the methods you tried in order to trace the problem, and not launching into a long account of your project — too much information puts people off reading the request. She also spells out a premise that is easy to forget: nobody is being paid and nobody is obliged to answer, so a message should not read as a demand or an accusation. That this advice was written in 2014 and still ships, unchanged, inside TeX Live says something about the temper of the community. One addition: state what you are actually trying to achieve. If all a reader sees is the approach that failed, nobody can offer the simpler route you had not thought of.