MODEL2TEX

A Tool to generate a documentation from GAMS source code in LaTeX format.

Author
Clemens Westphal

Special thanks to Ingmar Schlecht for supporting us and sharing his gamsToLatex implementation.

Introduction

MODEL2TEX is a tool to generate a documentation from GAMS source code in LaTeX format. This LaTeX output can then be further processed in order to generate pretty output files like PDF. The tool can be found in the root directory of GAMS. The tool allows to document one specific model symbol inside of a GAMS program. The resulting documentation contains two parts. The first part shows a list of symbols that are used by the model. The second part shows the actual algebra of the used equations and information about the types of used variables. An optional third part can contain additional notes.

Usage

MODEL2TEX is a command line tool. The general command line usage is as follows:

model2tex baseName [-h] [-m MODEL] [-f] [-o OUTPUT] [-e ENCODING]

Since it operates on output files generated by GAMS, the first step is to generate the required files using the docfile option. In order to to that, execute the following command line:

gams myModel.gms docfile=myModel

The second step is to call MODEL2TEX: On Windows the tool is shipped as an executable file. On Linux, the original Python source code is distributed. Therefore the usage differs and requires a Python 2 installation on Linux.

Windows:

model2tex myModel [-m MODEL] [-f] [-o OUTPUT] [-e ENCODING]

Linux:

python model2tex.py myModel [-m MODEL] [-f] [-o OUTPUT] [-e ENCODING]

The output file myModel.tex can be further processed for example by calling pdflatex in order to generate a PDF file.

pdflatex myModel.tex

Options

The following parameters can be used when calling MODEL2TEX:

Parameter Description
-m model Since MODEL2TEX generates documentation for one model symbol, the model name needs to be specified explicitly, if the GAMS file contains more than one model symbol
-f MODEL2TEX does not allow the occurrence of suffixes in equations. This option can be used in order to force the creation of the tex file by skipping the checks for suffixes.
-o output Use this name for the generated TeX file instead of the base name.
-e encoding Specify a different encoding. Default encoding is latin.

Using a JSON style file

MODEL2TEX automatically creates a JSON file that can be modified in order to customize the output. If you want to get the default settings back, just delete the generated JSON file and let MODEL2TEX create it again. The following list shows the available options in the JSON file:

Parameter Default Description
fontSize 11 The size of the used font
hrules true Horizontal rules are added between equations.
colors black Specifies the used colors in equations for variables, parameters, and sets.
landscape false Allows to change the page format to landscape.
noPowerFunc false Beside a power operator, GAMS offers several power functions. Setting this option to true will replace all power functions with the power operator.
reduceFrac false Try to resolve unbalanced fractions. This means that fractions with an unbalanced length of denominator and numerator will be changed in order to shrink the fraction.
reduceFracRatio 5.0 This number has only effect when reduceFrac is set to true. It specifies the ratio between denominator and numerator that is used as a threshold for reduceFrac.
latexDescription false Explanatory text for symbols is expected to be arbitrary text. In order to display the text correctly in LaTeX, some automatic adjustments are applied. If all explanatory text already contains valid LaTeX strings, this option can be enabled.
nameMap the original names This map allows to specify alternative names for symbols.
extraSymbols empty list On default, only the required symbols in a GAMS model symbol are contained in the generated LaTeX file. This list can be used in order to specify further symbols that should be included as well.
notes empty list Allows to specify additional notes for the documentation. Each list element will result in a new line.

Example

This example creates a PDF file for the pump model from the GAMS Model Library.

  1. Retrieve model pump from GAMS Model Library
    gamslib pump
    
  2. Generate required doc files
    gams pump.gms docfile=pump
    
  3. Generate the LaTex files
    model2tex pump -m=pump
    
  4. Generate PDF documentation
    pdflatex pump.tex
    
    The following pictures show snippets from the resulting PDF file:
    model2tex1.png
  5. Customizing the JSON style file In order to change the appearance of the PDF file, the generated JSON file pump.json can be modified. Changing the options in pump.json according to the picture and executing the commands from step 3 and 4 again will result in a customized PDF output.
    model2tex4.png
    model2tex2.png
    model2tex3.png