@PauloCereda So long ago, I'm not sure I can remember! :-) It was back when I was a student. I used to use a very primitive word processor on an Acorn Electron (cassette tape storage originally then I moved up-market and bought an external floppy drive!) I moved to an Acorn Archimedes installed ArmTeX and started using LaTeX to write stories and my PhD thesis.
(That was LaTeX2.09 back then.)
I notice there's a question before the start. I'll just answer that while people are thinking.
@CharlesStewart Yes, I'm the production editor for the Challenges in Machine Learning (CiML) series published by Microtome. Each volume contains a number of articles that were previously published in the Journal for Machine Learning Workshop and Conference Proceedings (JMLR W&CP) plus unpublished articles in appendices. Each CiML book is produced as a B&W hardcopy and a colour hyperlinked PDF. The original idea was just to import all the individual pdfs, but there were a number of problems with that.
The main issues were the hyperlinks and bookmark generation, but also the CiML books have a different page size to the original JMLR W&CP articles. For aesthetic reasons, I also wanted all the articles to use the same fonts etc, rather than having some in Computer Modern, some using Times or whatever the authors thought looked nice. There were also some that had been written in Word that had been converted to PDF, and they stood out like a sore thumb.
So I decided in the end that the best solution (in terms of the best result, rather than the easiest method) was to import all the articles as LaTeX files rather than PDFs. This meant trying to get the combine
class to play nicely with hyperref
, which wasn't easy. Both are problematic enough on their own, and together they break. So I ended up writing two new classes: jmlr
(for the articles) and jmlrbook
(for the book).
Together they manage to get both
combine
and
hyperref
to work together. LaTeX gathers things like the title and author list from the imported papers and adds them to the TOC on the next pass, and there are also commands for referencing the articles, for example, in the foreword, which helps to automate the process. I wrote a Perl script to run pdflatex and bibtex, but later changed this to a
Java GUI that has some diagnostic tools.
The combine
+hyperref
alliance is fairly fragile and there are some packages that break the book (e.g. subfig
), so I added checks for known problem packages into the jmlr
class to deter authors from using them and provided commands, such as \subfigure
to reduce the number of packages that need loading.
The main problems come when authors do something weird or send LaTeX source that doesn't compile. I suppose they must use nonstopmode and don't bother to check for errors, but this interrupts the build process and I have to fix every error.
This is extremely annoying when it's something as trivial as a double-subscript error. Authors can easily fix that, but if the document has 50 double-subscript errors, I have to go through the document and fix every one of them to make the build work (and also I need to check if any of the reported errors are actually serious).
Each article is scoped when it is imported, so there shouldn't be any conflict if different articles happen to define the same command, but sometimes authors use \gdef
instead of \newcommand
and that's caused serious problems when, for example, the author has decided to globally redefine an accent command that gets used in a later article.
Encoding is another problem. One article may use utf8 while another may use latin1, but that's not as problematic as the encoding switching within the same file, which I often see in bib files.
For the articles supplied in Word, I originally thought about Word to LaTeX converters, but I very soon discarded that idea. I don't want to produce a close match to the original article, I want to produce the article in a format consistent with the rest of the document.
The only way to do this is to go through the Word document, copy and paste a paragraph into a TeX file, add in the necessary formatting commands, convert any strange characters (or occasionally delete unwanted control characters) and then move onto the next paragraph.
Okay, I think that's the end of my ramble.