I am interested in deploying software that can allow for the flexible writing of reports in a multi-user environment.

The deployment environment is a consultancy that provides professional engineering and construction services.

Often, as a member of the team in this consultancy, I am called on to manage the production of reports for clients. The reports contain a corporate structure and are based on a corporate template, so a report produced in one office will in theory have an almost identical appearance to a report produced in another office in the same or another country. The content can vary significantly and is dependent on the services required to meet the client's requirements.

Currently the consultancy uses a Microsoft Word template for this task.

Shortcomings of MS Word in this environment...

  • Only one person can work within the report at any one time;
  • Ongoing formatting wastes an enormous amount of time and should be secondary to the content.

What I am hoping to find is software that allows four or five concurrent contributors to work on content, in a fashion similar to the current release of Google Docs, and that allows contributors to concentrate on the content without having to worry about the format.

There is usually a requirement to include Tables, Figures & Images, along with Appendices sometimes in two or three separate volumes.

The intention is that the entire report is to be collated by the software and will prepare a Table of Contents, Table of Figures, Table of Images, Table of Appendices, and apply appropriate page numbering and formatting throughout the report.

A learning curve to use the new software is acceptable.

The primary operating system on workstations in the consultancy is Microsoft Windows 7 Enterprise. The consultancy does use Microsoft Sharepoint although it is yet to be implemented widely.

The consultancy would be prepared to pay for a suitable solution. It is worth noting that a higher purchase or subscription cost would require a more detailed business case to support the investment.


LaTeX is a document preparation system. Strictly speaking, LaTeX is a markup language built on top of the TeX typesetting system; more generally “LaTeX” can mean a set of tools built around the typesetting system.

With LaTeX, you don't (usually) interact with a WYSIWYG editor. Instead, you type text with macro calls, like this:

This report is about stuff.
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nullam at suscipit ipsum. Quisque blandit mollis velit,
nec sagittis metus pellentesque vitae.
\section{More stuff}
Yeah, well, you know, that's just, like, your opinion, man.

And it comes looking like this (the rasterization effects are due to my converting to a low-resolution PNG for upload). LaTeX translates the source code to a PDF document (other output formats are alto possible).

The first line in the example above declares the class of the document. When you produce many documents with similar presentation, you would typically write your own class that sets up default parameters: headers and footers, fonts, the appearance of predefined elements (sections, figure captions, etc.), and so on. There is a huge repository of packages to do all kinds of things. Tables of contents, indexes and so on are generated automatically. If you produce several types of documents, you might define different classes, or a class with options, or additional packages.

LaTeX encourages the separation of form and content: you typically define macros in the document class, or in additional packages, or if they're specific to one document at the beginning of the document. Then, in the document itself, you use these macros in preference to repeating low-level formatting commands, though you can also use low-level formatting commands (“bold”, “break the line here”, …) when necessary.

You can assemble a typeset document from multiple files. It's also fairly painless for people to work on the same part of the document. Since everything is text-based, merging just works when people have worked on different paragraphs, and is not too bad even when people have edited the same paragraph. You can use a real-time collaborative plain text editor if you want people located in different places to work on the same part of the document at the same time, but generally you can let people work on their part, and handle merges as they come.

LaTeX also makes it easy to produce multiple versions of the same report. You might write

  This is for our eyes only, not to be shown to the client.

And define the internalonly environment so that you can typeset a version of the report where that text is included, and another version where it isn't.

LaTeX itself only does text formatting, not figures. You can include figures produced by other software and exported to standard formats (JPEG, EPS, PDF, …).

A downside of LaTeX is that as it is not WYSIWYG, it does have a steeper learning curve. You can get people to produce mediocre-looking documents with Word fairly quickly. Getting people up to speed with LaTeX takes longer. You do however tend to get decent-looking, easy-to-maintain documents as soon as you get anything.

There is a WYSIWYG editor for LaTeX: LyX. You should try it out. It's a lot easier for beginners, but doesn't always play well with custom packages.

TeX Stack Exchange has a lot of resources about (La)TeX. You can start with their list of tutorials and their class and package writing tutorial. There are also many books on the subject.

LaTeX and associated tools are available on all major operating systems, including Windows. I think MikTeX is the most popular distribution on Windows. If you don't go for LyX, you'll need to recommend some text editors for your users — many text editors include convenience features to insert macros and to run LaTeX automatically.

  • great response thank you. – andrewbuilder May 2 '15 at 22:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.