/stata-latex-workflows

Stata Workflows for LaTeX Output

Primary LanguageStata

Packages for generating LaTeX output from Stata code

Stata Table Gallery (sample tables with code; contributions welcome!)

A variety of packages (and manual techniques) are available for programmatically generating LaTeX output using Stata.

Generally, more automated approaches such as estout/esttab make it easy to quickly generate nearly-production-ready output, but make it more difficult (if not impossible) to implement significant customization. (That is, costs may be convex.) Automated approaches may also work best with interactive and exploratory analysis, since attractively formatted results can also be displayed as Stata output or exported as simple text or csv files.

Semi-automated approaches such as json-this/coeftable and stata-tex generally require manually creating LaTeX code to generate even simple tables, but their output is fully customizable. (That is, costs may be concave.)

Semi-automated approaches often involve saving calculated values in an external file before generating LaTeX output. (This is also possible with automated approaches using Stata’s estimates save command.) While slightly more complicated, this separation of analysis from table generation has real advantages. For example, saving calculated values

  • Allows restructured tables to be generated without re-running estimation commands;
  • Makes it easy to generate identically-structured tables with different samples, variable definitions, etc.;
  • Allows easy generation of alternate table versions, such as for a paper vs. a presentation;
  • Allows calculated values to be accessed by other scripts (e.g., for plotting);
  • Works well with version control.

Automated table creation

These packages generate tex files (and perhaps other formats) with customization via Stata command options.

estout/esttab

Package page

outreg2

Package page

tabout

Package page

For descriptive statistics and tabulations, not regression results

orth_out

Package pages: github, RePEc

For summary statistics and orthogonality tables, not regression results

  • Install using ssc install orth_out, replace

frmttable

"A programmer's command to write formatted Word or TeX tables from a matrix of statistics," frmttable is the command that underlies outreg, but can also be used directly to generate more customized output

Semi-automated table creation

These packages typically fill in a manually created tex template with calculated values.

json-this/coeftable

Package pages: json-this and coeftable

Calculated values are saved as json and then inserted into an external tex template

  • Install manually from github pages (requires Python)

stata-tex

Package page

Calculated values are saved as csv and then inserted into an external tex template

texresults

Package page

Calculated values are saved as a set of tex macros

regsave/texsave

Package pages: regsave and texsave

Calculated values are saved as Stata datasets and then exported as tex

  • Install using ssc install regsave, replace and ssc install texsave, replace
  • Latest (developer) builds can be installed manually from github package pages (regsave and texsave)
  • sortobs package can help with ordering variables for tex output
  • Slides with examples by Julian Reif

texdoc

Package page

Calculated values are inserted directly into a tex template included in the do file

write_mats

Package page

Calculated values are saved as .ster files, desired values are arranged as a Stata matrix, and then exported as tex

listtab

Package page

Tables are set up as a Stata dataset and then exported as tex

“Dynamic Document”-based approaches

These approaches are usually used to more fully integrate analysis into document creation, but can also be used to generate LaTeX output (perhaps requiring a tool like pandoc to convert from markdown or HTML to LaTeX).

Other methods

Note

I created this page in response to Twitter discussions suggesting there’s interest in learning more about the wide range of techniques researchers use to work with Stata and LaTeX. I also wanted to learn more about how to use github (where this page is hosted).

I added the resources I was aware of, and quickly characterized them as best I could. Please feel free to suggest additions or updates, either by submitting pull requests to the github respository (if you know how to do so), or by contacting me directly.