Hacker News new | ask | show | jobs
by mr_mitm 980 days ago
I understand your frustration. Maybe it helps to know where this problem comes from.

TeX is extremely powerful and lets you create arbitrary documents. This is the first time I heard of quarto, but apparently it makes a lot of choices for you that you understandably don't really care about.

Instead of developing quarto, one could have simply written a LaTeX class that defines a function like so:

    \newcommand{\image}[2]{\begin{figure}[t]\includegraphics{#2}\caption{#1}\label{#2}\centering\end{figure}}
Now you can just write:

    \image{caption}{path/to/image}
Of course, it is now much less flexible, as you cannot define a custom label or different placement instructions. But that is the price you pay for short and memorable syntax.

By the way, developing a LaTeX class is not necessarily hard. It is more or less a file whose name ends in `.cls` with all the commands that you typically put in your preamble. It just needs a header of three lines that define some meta data and also supports options. See here for an example: https://github.com/latex-ninja/colour-theme-changing-class-t...

You put it in the same directory as your main tex file or in the system wide TEXMFHOME or user-specific TEXMHFHOME.

4 comments

More on creating your own class file:

https://www.overleaf.com/learn/latex/Writing_your_own_packag...

How I do it...

I keep a directory called LaTeX inside my home directory. Inside that I keep a file with all my frontmatter, myfrontmatter.sty (technically a package rather than a class), and also my biblatex file and a scan of my signature for signing letters. When I start a new LaTeX document I add the line \usepackage{/home/nanna/LaTeX/myfrontmatter} to the top (note, no .sty). This keeps my frontmatter minimal and tidy.

Inside myfrontmatter.sty:

  \NeedsTeXFormat{LaTeX2e} 
  \ProvidesPackage{/home/nanna/LaTeX/myfrontmatter}[2015/01/01 by me]

  \RequirePackage{amsmath} % Just replace `usepackage` with `RequirePackage`
  \RequirePackage{amsthm}
  ...

  \addbibresource{/home/nanna/LaTeX/biblatex.bib}
  ...

  %% Macros like for inserting my signature
  \newcommand{\mysignature}{\noindent\includegraphics{/home/nanna/LaTeX/signature.png}}
  ...
  \endinput % Not sure if this line does anything?
And that's it. I never have to worry about a package I've forgotten to add in. Granted a journal might not accept my custom package but I can always just copy and paste it all into my frontmatter, minus the top two lines and replace all the RequirePackages with usepackages.
Yes, and with tools like ChatGPT it's even easier to write TeX documents.

I exposed this very problem and ChatGPT proposed exactly the same solution, and also another one using a custom environment.

That is just an expression of the LaTex problem though.

People (as in, the majority of people) will not be comfortable using a tool that is so unintuitive and hard to use that you need to use an AI to help you in writing.

Writing a document is not supposed to be hard and require assistance to do.

The problem is that your goals and skills don't match the purpose and capabilities of the tool, not that the tool is insufficiently "intuitive".

Manuscript composition used to be: write your document by hand or with a typewriter, handwrite some notes in the margin, throw in some pages with your figures on them, then let a professional typesetter take care of all of the technical details of making a typeset document for printed output. This was a whole separate career, and the typesetter would sink almost as much time into making your document look pretty as you put into writing it.

If you are using LaTeX, you are taking on the role of the professional typesetter yourself, and you need to make some specific technical choices to get some output from it. This can be a problem if you are inexperienced and don't know which choices to make or in a hurry and don't want to make any choices, but is also good insofar as it lets you actually produce a professional quality document if you have the time and expertise to do so. The difficulty involved is at least an order of magnitude less than doing composition of metal type.

If you are using markdown (or whatever), you are just punting on having a professional document at the end, and/or letting a system make all of the choices for you (often badly), or perhaps expecting to still hand off your document to a professional at the end for proper typesetting.

> with tools like ChatGPT it's even easier to write TeX documents.

I am not quite sure whether this is satire?

Thanks for the help and I can feel the enthusiasm. I have to tell you, my hatred for TeX is profound and goes far beyond this one point. But if I start ranting, I'll never stop.
Didn't you say with quarto you had to debug a 5 layer pipeline? I wonder if it's not biasing you here a bit...(stuck fighting "arcane" latex syntax somewhere at 3 in the morning).

I'm not saying you should love TeX, but it's a bit like saying you hate assembly language - if you have the wrong abstractions (writing a 3D game or a web page using assembly language) of course the experience will be beyond frustrating. I don't hate assembly language, but I generally don't need to touch it because higher order abstractions generally suffice. If I am optimizing my compiler output, though, then it's a tool I can use.

Ofc if I have the wrong or missing tools while using assembly language, or any other TBH (python, html, etc), that is also a source of considerable frustration. Not sure where the "hatred" comes from, but perhaps you encountered a poorly done package or editor?

To surmise from your article:

* "It gets in the way. If I open my article in a text editor, I want to see the title, author, abstract and first paragraph." * You feel forced to use it. " One idiot reviewer told me, as a supposedly legitimate critique of my work: “this wasn’t written in TeX”. PhD students are forced to learn it"

Some of your points about escape codes etc. seem contrived, and the alternatives are just more buttons hidden in menus or a bunch of search. I'm not defending \’e but TBH that seems pretty darn logical compared to e.g. hitting a keycombo and searching through a million characters in a unicode table.

The first is a matter of a good editor, the second is true of any system you can be asked to use. I've been forced to use some pretty miserable programs in the past, so I can commiserate.

Hmm. As a PhD student you feel constrained to do something in a way you don't want to. I don't think that's a good enough reason to say something sucks, though. Why do PhD students use it? I'm not one, but I can suspect an answer - print journals. You can/could submit a TeX article and have it relatively seamlessly typeset into a for-print journal.

I don't work with print - I imagine if I did I might seriously consider TeX, and if parts of it legitimately sucked, seek to replace or modify those. Markdown is good enough for the majority of what I need to do. Microsoft Word is my "useless disease program" that all good "computer workers" are forced into using, and they become proud they know how to use templates and bullet formats. For what I typically use documents for, I would tell someone to use TeX before I told them to use Word, a quirky mess of program filled with bugs from a toxic work culture (and I don't need TeX so I don't use it).

:)

> Instead of developing quarto, one could have simply written a LaTeX class that defines a function like so:

If it's so simple, why isn't there QuarTeX that does all of that and removes the extreme verbosity barrier?

Because doing something like this is opinionated. The LaTeX developers try to do the opposite: they want to provide packages that cover as many usecases as possible.

And users of LaTeX are probably not knowledgeable enough or too busy to publish their opinionated subset of LaTeX as a class. I don't know for sure. There is no central body that has an interest in removing barriers, so you might as well ask me or yourself why I or you haven't published anything.

I developed something similar to this at my company, because we write lots of LaTeX documents and need shortcuts like this not only for brevity but also so that we achieve some consistency across the entire team. It's only for internal use though and thus not public.

> they want to provide packages that cover as many usecases as possible.

How would this macro exclude the coverage of other use cases? The language primitives would still be there to do the original code

> There is no central body

That's true for plenty of other syntaxes that at the same time aren't like this

As I said: Maybe you want to specify a different placement option like `b` instead of `t`. Maybe you don't want the label equal to the file path, in particular if you happen to include an image twice.

Or you don't want it centered. Or you want several images in one figure environment arranged in some way. Or you want to scale the included image to fit only 70% of the page width. Or maybe you want to rotate the included image by 90 degrees. Many more use cases are imaginable.

You could define the macro to cover all of this, but then you might as well just write the original code.

And as I replied: how does any of this *prevent* you from "cover[ing] as many usecases as possible" given that writing the original code is always an option?
Namespaces and constraints.

The first (namespaces) contrast speed (brevity) and specificity (verbosity). Namespacing (long names) are great when you don't have a good idea the full scope - putting your library in namespace means you generally never have to be concerned that terms will overlap.

Macros tend to be the opposite - short, in global namespace, with little flexibility. They constrain the possible output by focusing on a certain goal - this is the point of the macro usually, to avoid some common pitfall without being overly verbose.

If you combine the two, you have a problem - either the macro dictates your preference, or many different macros must exist which, usually being brief or in pursuit of similar goals, will result in namespace collisions.

So of course you can define them, but generally this is better suited towards a specific use case or organization.

Or at least that's the idea. I'm not sure some standard approachable macros are a bad thing, as long as you can redefine them later or pick and choose, but I do get the point of "why not", because they don't want to constrain the language itself. The irony is other systems do this for them and tex becomes more an outsider thing and systems like markdown are far more constrained...

On the other hand there is no way to make everyone happy, and I respect the Tex author decision to opt for a less-is-more strategy wrt to offering building blocks only not templates.

You are of course free to build your template library, and make it popular, but be forewarned that likely whatever it is popular at doing (say, writing science articles), will affect what TeX is used primarily for. Which is the "why".