/sttex

Stata module to integrate Stata results into a LaTeX document

Primary LanguageStataMIT LicenseMIT

sttex

Stata module to integrate Stata results into a LaTeX document

sttex is a command to process a LaTeX source file containing blocks of Stata code. sttex will extract the Stata commands into a do-file, run the do-file, and then weave the LaTeX source and the Stata output into a target LaTeX document. Optionally, sttex also typesets the LaTeX document and displays the resulting PDF. Various tags can be used within the LaTeX source file to define the information that will be processed by sttex.

A main feature of sttex is that it detects whether Stata code changed between calls. If the code did not change, execution of Stata commands will be skipped to save computer time. It is also possible to partition a source file into independent sections, such that only the sections affected by changes will be executed.

To install sttex from the SSC Archive, type

. ssc install sttex, replace

in Stata. Stata version 11 or newer is required.


Installation from GitHub:

. net from https://raw.githubusercontent.com/benjann/sttex/main/
. net install sttex, replace

Main changes:

19jan2024 (version 1.2.0)
- \dostata{file} (and similar) no longer causes error if the file is not found;
  a "file not found" message is now included in the code

19jan2024 (version 1.1.9)
- options noextract, nogap, notitle/title() added to do_options; these options
  set the behavior of -sttex extract-
- -sttex extract- did not issue a "file already exists" warning, if the target
  do-file existed and option -replace- was specified in %STinit; this is fixed
  (i.e. -sttex extract- now ignores option -replace- specified in %STinit)

18oct2022 (version 1.1.8)
- if used on Windows, sttex failed to replace "\" by "/" in file paths written
  to the target LaTeX file; this is fixed

17oct2022 (version 1.1.7)
- new \stfile{} tag to collect files created by code; \stres{{file}} and 
  \stres{{fname}} added; fileopts() added to sttex, %STini, %STpart
- if \stres{{logname}} was used to reference a log for which option -static- was
  specified, sttex failed to store the log in an external file; this is fixed
- dbversion now 1.1.7; can still read version 1.1.6

12oct2022 (version 1.1.6)
- %STpart did not update the log options; this is fixed
- option -certify- caused error; this is fixed
- -certify- now looks at both the SMCL log as well as the log translated to plain
  text and only returns error if both are different; this implies that a change
  in linesize does not lead to certification error in most cases
- log option -nolskip- added (restore empty lines in code log)
- scale() option: \noindent and modification of \leftmargini now omitted if
  -beamer- is specified
- scale() option: now writing simplified code if scale=1
- typesetting options other than -typeset- and -view- no longer cause typesetting
- extension vrb added to -cleanup-
- now storing original SMCL log in database; translation to TeX is now done on
  the fly; dbversion now 1.1.6

05oct2022 (version 1.1.5)
- %STset implemented
- log option -notexman- added
- log options -nolb- and -nogt- now also applied to code logs
- commands without output could confuse the log parser in some situations;
  this is fixed
- db on disk will no longer be updated if only options change that are not
  relevant for determining whether elements need to be refreshed; realized size
  of -trim- no longer stored in db; dbversion now 1.1.5

29sep2022 (version 1.1.4):
- the log files of a part were not updated correctly if a part did not contain
  any changes but was evaluated due to dependencies; this is fixed;
  dbversion now 1.1.4

29sep2022 (version 1.1.3):
- tgtdir is now added on the fly to logdir, dodir, and graph dir when writing
  files (if necessary) rather than setting up the paths upfront; this affects
  the definition of objects in the database; dbversion now 1.1.2
- if graph dir() changed, sttex now also looks in new location for existing
  graph files, not only the old location
- code log was regenerated if raw results log of code block was not available
  (e.g. because option nodo was specified); code log is now only regenerated if
  there is a change in the code irrespective of whether a raw results log is
  available or not
- scale() no longer adds a \par in front of the block
- \blstretch() without scale() now encloses the log in \begingroup...\endgroup
  rather than {...}

26sep2022 (version 1.1.2):
- %STpart ignored -gropts()-; this is fixed

26sep2022 (version 1.1.1):
- \stlog{} can now obtain logs from multiple code blocks
- log options tag(), alert(), and substitute() are now also applied to code logs
- log option lcontinue added
- range() is now applied before lnumbers and ltags()
- lnumbers are now included in \stlnum{}
- line numbers and line tags are now added at the very end, when exporting a log
- now using errprintf() to display errors in Mata
- added a fix for vertical spacing after (non-verbatim) code log
- order of elements is now stored in the database; dbversion now 1.1.1
- error message is now written to target file if log or graph is not found

21sep2022 (version 1.1.0):
- code blocks and logs are now treated as different elements in the internal
  accounting system, such that a code block can have multiple logs (e.g. a
  code log and a results log); \stlog{} and \stlog*{} added
- syntax \do<keyword>{filename} added to create code block from file
- log option range() added
- log option ltag() added
- log option lnumbers added
- log option clsize() added
- log option scale() added
- log option substitute() added
- log option blstretch() added
- log option nooutput() renamed to qui()
- log option verbatim now adds \begin{verbatim}...\end{verbatim} to log rather
  than using \verbatiminput{}, such that \usepackage{verbatim} is no longer
  needed
- linsize(.) now selects default behavior
- -trim- without argument now clears previous trim(#) setting
- \stgraph{} can now be specified as \stgraph*{}; graph option -custom-
  discarded
- \stgraph{} now only allowed if there is at least preceding code block in the
  current part
- target id now allowed in \stres{{log}} and \stres{{graph}}
- \stappend{} added
- "//ST.." tags will now be removed from files saved by dosave() 
- filename is now reported in error messages
- mata error messages are now also displayed if -quietly- is applied
- command -sttex extract- added
- dodir() and graph dir(), if not specified, were not updated if logdir()
  changed along the way; this is fixed
- version of database now 1.1.0; new database will be created (causing execution
  of all Stata commands) if sttex is applied to outdated database

08sep2022 (version 1.0.0)
- released on GitHub