*! version 2.0.5 09mar2009 Ben Jann
*! wrapper for estout
program define esttab
version 8.2
local caller : di _caller()
// mode specific defaults
local cdate "`c(current_date)'"
local ctime "`c(current_time)'"
// - fixed
local fixed_open0 `""% `cdate' `ctime'""'
local fixed_close0 `""""'
local fixed_open `""'
local fixed_close `""'
local fixed_caption `""@title""'
local fixed_open2 `""'
local fixed_close2 `""'
local fixed_toprule `""@hline""'
local fixed_midrule `""@hline""'
local fixed_bottomrule `""@hline""'
local fixed_topgap `""""'
local fixed_midgap `""""'
local fixed_bottomgap `""""'
local fixed_eqrule `"begin(@hline "")"'
local fixed_ssl `"N R-sq "adj. R-sq" "pseudo R-sq" AIC BIC"'
local fixed_lsl `"Observations R-squared "Adjusted R-squared" "Pseudo R-squared" AIC BIC"'
local fixed_starlevels `"* 0.05 ** 0.01 *** 0.001"'
local fixed_starlevlab `""'
local fixed_begin `""'
local fixed_delimiter `"" ""'
local fixed_end `""'
local fixed_incelldel `"" ""'
local fixed_varwidth `"\`= cond("\`label'"=="", 12, 20)'"'
local fixed_modelwidth `"12"'
local fixed_abbrev `"abbrev"'
local fixed_substitute `""'
local fixed_tstatlab `"t statistics"'
local fixed_zstatlab `"z statistics"'
local fixed_pvallab `"p-values"'
local fixed_cilab `"\`level'% confidence intervals"'
// - smcl
local smcl_open0 `"{smcl} "{* % `cdate' `ctime'}{...}""'
local smcl_close0 `""""'
local smcl_open `""'
local smcl_close `""'
local smcl_caption `""@title""'
local smcl_open2 `""'
local smcl_close2 `""'
local smcl_toprule `""{hline @width}""'
local smcl_midrule `""{hline @width}""'
local smcl_bottomrule `""{hline @width}""'
local smcl_topgap `""""'
local smcl_midgap `""""'
local smcl_bottomgap `""""'
local smcl_eqrule `"begin("{hline @width}" "")"'
local smcl_ssl `"`macval(fixed_ssl)'"'
local smcl_lsl `"`macval(fixed_lsl)'"'
local smcl_starlevels `"`macval(fixed_starlevels)'"'
local smcl_starlevlab `""'
local smcl_begin `""'
local smcl_delimiter `"" ""'
local smcl_end `""'
local smcl_incelldel `"" ""'
local smcl_varwidth `"`macval(fixed_varwidth)'"'
local smcl_modelwidth `"`macval(fixed_modelwidth)'"'
local smcl_abbrev `"`macval(fixed_abbrev)'"'
local smcl_substitute `""'
local smcl_tstatlab `"`macval(fixed_tstatlab)'"'
local smcl_zstatlab `"`macval(fixed_zstatlab)'"'
local smcl_pvallab `"`macval(fixed_pvallab)'"'
local smcl_cilab `"`macval(fixed_cilab)'"'
// - tab
local tab_open0 `"`macval(fixed_open0)'"'
local tab_close0 `""""'
local tab_open `""'
local tab_close `""'
local tab_caption `""@title""'
local tab_open2 `""'
local tab_close2 `""'
local tab_topgap `""""'
local tab_midgap `""""'
local tab_bottomgap `""""'
local tab_ssl `"`macval(fixed_ssl)'"'
local tab_lsl `"`macval(fixed_lsl)'"'
local tab_starlevels `"`macval(fixed_starlevels)'"'
local tab_starlevlab `""'
local tab_begin `""'
local tab_delimiter `"_tab"'
local tab_end `""'
local tab_incelldel `"" ""'
local tab_varwidth `""'
local tab_modelwidth `""'
local tab_abbrev `""'
local tab_substitute `""'
local tab_tstatlab `"`macval(fixed_tstatlab)'"'
local tab_zstatlab `"`macval(fixed_zstatlab)'"'
local tab_pvallab `"`macval(fixed_pvallab)'"'
local tab_cilab `"`macval(fixed_cilab)'"'
// - csv
local csv_open0 `"`"\`csvlhs'% `cdate' `ctime'""'"'
local csv_close0 `""""'
local csv_open `""'
local csv_close `""'
local csv_caption `"`"\`csvlhs'@title""'"'
local csv_open2 `""'
local csv_close2 `""'
local csv_topgap `""""'
local csv_midgap `""""'
local csv_bottomgap `""""'
local csv_ssl `"`macval(fixed_ssl)'"'
local csv_lsl `"`macval(fixed_lsl)'"'
local csv_starlevels `"`macval(fixed_starlevels)'"'
local csv_starlevlab `""'
local csv_begin `"`"\`csvlhs'"'"'
local csv_delimiter `"`"",\`csvlhs'"'"'
local scsv_delimiter `"`"";\`csvlhs'"'"'
local csv_end `"`"""'"'
local csv_incelldel `"" ""'
local csv_varwidth `""'
local csv_modelwidth `""'
local csv_abbrev `""'
local csv_substitute `""'
local csv_tstatlab `"`macval(fixed_tstatlab)'"'
local csv_zstatlab `"`macval(fixed_zstatlab)'"'
local csv_pvallab `"`macval(fixed_pvallab)'"'
local csv_cilab `"`macval(fixed_cilab)'"'
// - rtf
local rtf_open0 `""'
local rtf_close0 `""'
local rtf_ct `"\yr`=year(d(`cdate'))'\mo`=month(d(`cdate'))'\dy`=day(d(`cdate'))'\hr`=substr("`ctime'",1,2)'\min`=substr("`ctime'",4,2)'"'
local rtf_open_l1 `"`"{\rtf1`=cond("`c(os)'"=="MacOSX", "\mac", "\ansi")'\deff0 {\fonttbl{\f0\fnil Times New Roman;}}"'"'
local rtf_open_l2 `" `"{\info {\author .}{\company .}{\title .}{\creatim`rtf_ct'}}"'"'
local rtf_open_l3 `" `"\deflang1033\plain\fs24"'"'
local rtf_open_l4 `" `"{\footer\pard\qc\plain\f0\fs24\chpgn\par}"'"'
local rtf_open `"`rtf_open_l1'`rtf_open_l2'`rtf_open_l3'`rtf_open_l4'"'
local rtf_close `""{\pard \par}" "}""'
local rtf_caption `"`"{\pard\keepn\ql @title\par}"'"'
local rtf_open2 `""{""'
local rtf_close2 `""}""'
local rtf_toprule `""'
local rtf_midrule `""'
local rtf_bottomrule `""'
local rtf_topgap `""'
local rtf_midgap `"{\trowd\trgaph108\trleft-108@rtfemptyrow\row}"'
local rtf_bottomgap `""'
local rtf_eqrule `"begin("{\trowd\trgaph108\trleft-108@rtfrowdefbrdrt\pard\intbl\ql {") replace"'
local rtf_ssl `""{\i N}" "{\i R}{\super 2}" "adj. {\i R}{\super 2}" "pseudo {\i R}{\super 2}" "{\i AIC}" "{\i BIC}""'
local rtf_lsl `"Observations "{\i R}{\super 2}" "Adjusted {\i R}{\super 2}" "Pseudo {\i R}{\super 2}" "{\i AIC}" "{\i BIC}""'
local rtf_starlevels `""{\super *}" 0.05 "{\super **}" 0.01 "{\super ***}" 0.001"'
local rtf_starlevlab `", label(" {\i p} < ")"'
local rtf_rowdef `"\`=cond("\`lines'"=="", "@rtfrowdef", "@rtfrowdefbrdr")'"'
local rtf_begin `"{\trowd\trgaph108\trleft-108\`rtf_rowdef'\pard\intbl\ql {"'
local rtf_delimiter `"}\cell \pard\intbl\q\`=cond(`"\`alignment'"'!="", `"\`alignment'"', "c")' {"'
local rtf_end `"}\cell\row}"'
local rtf_incelldel `""\line ""'
local rtf_varwidth `"\`= cond("\`label'"=="", 12, 20)'"'
local rtf_modelwidth `"12"'
local rtf_abbrev `""'
local rtf_substitute `""'
local rtf_tstatlab `"{\i t} statistics"'
local rtf_zstatlab `"{\i z} statistics"'
local rtf_pvallab `"{\i p}-values"'
local rtf_cilab `"\`level'% confidence intervals"'
// - html
local html_open0 `"
"`=cond(`"\`macval(title)'"'=="","estimates table, created `cdate' `ctime'","@title")'" """'
local html_close0 `""" """'
local html_open `"`""'"'
local html_close `""
""'
local html_caption `""@title""'
local html_open2 `""'
local html_close2 `""'
local html_toprule `""
|
""'
local html_midrule `""
|
""'
local html_bottomrule `""
|
""'
local html_topgap `""'
local html_midgap `"" |
""'
local html_bottomgap `""'
local html_eqrule `"begin("
|
" "")"'
local html_ssl `"N R2 "adj. R2" "pseudo R2" AIC BIC"'
local html_lsl `"Observations R2 "Adjusted R2" "Pseudo R2" AIC BIC"'
local html_starlevels `"* 0.05 ** 0.01 *** 0.001"'
local html_starlevlab `", label(" p < ")"'
local html_begin `""'
local html_delimiter `" | "'
local html_end `" |
"'
local html_incelldel `"
"'
local html_varwidth `"\`= cond("\`label'"=="", 12, 20)'"'
local html_modelwidth `"12"'
local html_abbrev `""'
local html_substitute `""'
local html_tstatlab `"t statistics"'
local html_zstatlab `"z statistics"'
local html_pvallab `"p-values"'
local html_cilab `"\`level'% confidence intervals"'
// - tex
local tex_open0 `""% `cdate' `ctime'" \documentclass{article} \`texpkgs' \`=cond("\`longtable'"!="","\usepackage{longtable}","")' \begin{document} """'
local tex_close0 `""" \end{document} """'
local tex_open `"\`=cond("\`longtable'"=="", "\begin{table}[htbp]\centering", `"{"')'"'
local tex_close `"\`=cond("\`longtable'"=="", "\end{table}", "}")'"'
local tex_caption `"\caption{@title}"'
local tex_open2 `"\`=cond("\`longtable'"!="", "\begin{longtable}", "\begin{tabular" + cond("\`width'"=="", "}", "*}{\`width'}"))'"'
local tex_close2 `"\`=cond("\`longtable'"!="", "\end{longtable}", "\end{tabular" + cond("\`width'"=="", "}", "*}"))'"'
local tex_toprule `"\`="\hline\hline" + cond("\`longtable'"!="", "\endfirsthead\hline\endhead\hline\endfoot\endlastfoot", "")'"'
local tex_midrule `""\hline""'
local tex_bottomrule `""\hline\hline""'
local tex_topgap `""'
local tex_midgap `"[1em]"' // `"\\\"'
local tex_bottomgap `""'
local tex_eqrule `"begin("\hline" "")"'
local tex_ssl `"\(N\) \(R^{2}\) "adj. \(R^{2}\)" "pseudo \(R^{2}\)" \textit{AIC} \textit{BIC}"'
local tex_lsl `"Observations \(R^{2}\) "Adjusted \(R^{2}\)" "Pseudo \(R^{2}\)" \textit{AIC} \textit{BIC}"'
local tex_starlevels `"\sym{*} 0.05 \sym{**} 0.01 \sym{***} 0.001"'
local tex_starlevlab `", label(" \(p<@\)")"'
local tex_begin `""'
local tex_delimiter `"&"'
local tex_end `"\\\"'
local tex_incelldel `"" ""'
local tex_varwidth `"\`= cond("\`label'"=="", 12, 20)'"'
local tex_modelwidth `"12"'
local tex_abbrev `""'
local tex_tstatlab `"\textit{t} statistics"'
local tex_zstatlab `"\textit{z} statistics"'
local tex_pvallab `"\textit{p}-values"'
local tex_cilab `"\`level'\% confidence intervals"'
local tex_substitute `"_ \_ "\_cons " \_cons"'
// - booktabs
local booktabs_open0 `""% `cdate' `ctime'" \documentclass{article} \`texpkgs' \usepackage{booktabs} \`=cond("\`longtable'"!="","\usepackage{longtable}","")' \begin{document} """'
local booktabs_close0 `"`macval(tex_close0)'"'
local booktabs_open `"`macval(tex_open)'"'
local booktabs_close `"`macval(tex_close)'"'
local booktabs_caption `"`macval(tex_caption)'"'
local booktabs_open2 `"`macval(tex_open2)'"'
local booktabs_close2 `"`macval(tex_close2)'"'
local booktabs_toprule `"\`="\toprule" + cond("\`longtable'"!="", "\endfirsthead\midrule\endhead\midrule\endfoot\endlastfoot", "")'"'
local booktabs_midrule `""\midrule""'
local booktabs_bottomrule `""\bottomrule""'
local booktabs_topgap `"`macval(tex_topgap)'"'
local booktabs_midgap `"\addlinespace"'
local booktabs_bottomgap `"`macval(tex_bottomgap)'"'
local booktabs_eqrule `"begin("\midrule" "")"'
local booktabs_ssl `"`macval(tex_ssl)'"'
local booktabs_lsl `"`macval(tex_lsl)'"'
local booktabs_starlevels `"`macval(tex_starlevels)'"'
local booktabs_starlevlab `"`macval(tex_starlevlab)'"'
local booktabs_begin `"`macval(tex_begin)'"'
local booktabs_delimiter `"`macval(tex_delimiter)'"'
local booktabs_end `"`macval(tex_end)'"'
local booktabs_incelldel `"`macval(tex_incelldel)'"'
local booktabs_varwidth `"`macval(tex_varwidth)'"'
local booktabs_modelwidth `"`macval(tex_modelwidth)'"'
local booktabs_abbrev `"`macval(tex_abbrev)'"'
local booktabs_tstatlab `"`macval(tex_tstatlab)'"'
local booktabs_zstatlab `"`macval(tex_zstatlab)'"'
local booktabs_pvallab `"`macval(tex_pvallab)'"'
local booktabs_cilab `"`macval(tex_cilab)'"'
local booktabs_substitute `"`macval(tex_substitute)'"'
// syntax
syntax [anything] [using] [ , ///
/// coefficients and t-stats, se, etc.
b Bfmt(string) ///
noT Tfmt(string) ///
z Zfmt(string) ///
se SEfmt(string) ///
p Pfmt(string) ///
ci CIfmt(string) ///
BEta BEtafmt(string) ///
main(string) /// syntax: name format
aux(string) /// syntax: name format
abs /// absolute t-values
wide ///
NOSTAr STAR STAR2(string asis) ///
staraux ///
NOCONstant CONstant ///
COEFlabels(string asis) ///
/// summary statistics
noOBS obslast ///
r2 R2fmt(string) ar2 AR2fmt(string) pr2 PR2fmt(string) ///
aic AICfmt(string) bic BICfmt(string) ///
SCAlars(string asis) /// syntax: "name1 [label1]" "name2 [label2]" etc.
sfmt(string) ///
/// layout
NOMTItles MTItles MTItles2(string asis) ///
NOGAPs GAPs ///
NOLInes LInes ///
ADDNotes(string asis) ///
COMpress ///
plain ///
smcl FIXed tab csv SCsv rtf HTMl tex BOOKTabs ///
Fragment ///
page PAGE2(str) ///
ALIGNment(str asis) ///
width(str asis) ///
/// other
Noisily ///
* ]
_more_syntax , `macval(options)'
_estout_options , `macval(options)'
// matrix mode
MatrixMode, `anything'
// syntax consistency etc
gettoken chunk using0: using
if `"`macval(star2)'"'!="" local star star
foreach opt in constant gaps lines star abbrev depvars numbers parentheses ///
notes mtitles type outfilenoteoff {
NotBothAllowed "``opt''" `no`opt''
}
NotBothAllowed "`staraux'" `nostar'
if `"`macval(mtitles2)'"'!="" NotBothAllowed "mtitles" `nomtitles'
if `"`page2'"'!="" local page page
NotBothAllowed "`fragment'" `page'
if `"`pfmt'"'!="" local p p
if `"`zfmt'"'!="" local z z
if `"`sefmt'"'!="" local se se
if `"`cifmt'"'!="" local ci ci
if `"`betafmt'"'!="" local beta beta
if "`level'"=="" local level $S_level
if ((("`margin'"!="" | `"`margin2'"'!="") & "`nomargin'"=="") | ///
("`beta'"!="") | ("`eform'"!="" & "`noeform'"=="")) ///
& "`constant'"=="" local noconstant noconstant
if `"`r2fmt'"'!="" local r2 r2
if `"`ar2fmt'"'!="" local ar2 ar2
if `"`pr2fmt'"'!="" local pr2 pr2
if `"`aicfmt'"'!="" local aic aic
if `"`bicfmt'"'!="" local bic bic
if "`type'"=="" & `"`using'"'!="" local notype notype
local nocellsopt = `"`macval(cells)'"'==""
if `"`width'"'!="" & `"`longtable'"'!="" {
di as err "width() and longtable not both allowed"
exit 198
}
// format modes
local mode `smcl' `fixed' `tab' `csv' `scsv' `rtf' `html' `tex' `booktabs'
if `:list sizeof mode'>1 {
di as err "only one allowed of smcl, fixed, tab, csv, scsv, rtf, html, tex, or booktabs"
exit 198
}
if `"`using'"'!="" {
_getfilename `"`using0'"'
local fn `"`r(filename)'"'
_getfilesuffix `"`fn'"'
local suffix `"`r(suffix)'"'
}
if "`mode'"=="" {
if `"`using'"'!="" {
if inlist(`"`suffix'"', ".html", ".htm") local mode html
else if `"`suffix'"'==".tex" local mode tex
else if `"`suffix'"'==".csv" local mode csv
else if `"`suffix'"'==".rtf" local mode rtf
else if `"`suffix'"'==".smcl" local mode smcl
else local mode fixed
}
else local mode smcl
}
else {
if "`mode'"=="scsv" {
local csv_delimiter `"`macval(`mode'_delimiter)'"'
local mode "csv"
}
}
if `"`using'"'!="" & `"`suffix'"'=="" {
if inlist("`mode'","fixed","tab") local suffix ".txt"
else if inlist("`mode'","csv","scsv") local suffix ".csv"
else if "`mode'"=="rtf" local suffix ".rtf"
else if "`mode'"=="html" local suffix ".html"
else if inlist("`mode'","tex","booktabs") local suffix ".tex"
else if "`mode'"=="smcl" local suffix ".smcl"
local using `"using `"`fn'`suffix'"'"'
local using0 `" `"`fn'`suffix'"'"'
}
if "`mode'"=="smcl" local smcltags smcltags
local mode0 `mode'
if "`mode0'"=="booktabs" local mode0 tex
else if "`mode0'"=="csv" {
if "`plain'"=="" local csvlhs `"=""'
else local csvlhs `"""'
}
if "`compress'"!="" {
if "``mode'_modelwidth'"!="" {
local `mode'_modelwidth = ``mode'_modelwidth' - 3
}
if "``mode'_varwidth'"!="" {
local `mode'_varwidth = ``mode'_varwidth' - cond("`label'"!="", 4, 2)
}
}
if `"`modelwidth'"'=="" {
if `nocellsopt' & `"``mode'_modelwidth'"'!="" & "`ci'"!="" {
local modelwidth = 2*``mode'_modelwidth' - 2
if "`wide'"!="" local modelwidth "``mode'_modelwidth' `modelwidth'"
}
else {
local modelwidth "``mode'_modelwidth'"
}
}
if `"`varwidth'"'=="" {
local varwidth "``mode'_varwidth'"
}
if "`plain'"=="" & `matrixmode'==0 {
foreach opt in star depvars numbers parentheses notes {
SwitchOnIfEmpty `opt' `no`opt''
}
if "`wide'"=="" & ("`t'"=="" | "`z'`se'`p'`ci'`aux'"!="") & `nocellsopt'==1 ///
SwitchOnIfEmpty gaps `nogaps'
}
if "`plain'"=="" {
SwitchOnIfEmpty lines `nolines'
}
if `"`lines'"'!="" {
SwitchOnIfEmpty eqlines `noeqlines'
}
if inlist("`mode0'", "tab", "csv") {
local lines
local eqlines
}
if "`notes'"!="" & "`nolegend'"=="" & `nocellsopt'==1 & `matrixmode'==0 local legend legend
if "`plain'"!="" {
if "`bfmt'"=="" local bfmt %9.0g
if "`tfmt'"=="" local tfmt `bfmt'
if "`zfmt'"=="" local zfmt `bfmt'
if "`sefmt'"=="" local sefmt `bfmt'
if "`pfmt'"=="" local pfmt `bfmt'
if "`cifmt'"=="" local cifmt `bfmt'
if "`betafmt'"=="" local betafmt `bfmt'
}
//if "`nomtitles'"!="" local depvars
//else if "`depvars'"=="" local mtitles mtitles
// prepare append for rtf, tex, and html
local outfilenoteoff2 "`outfilenoteoff'"
if "`outfilenoteoff2'"=="" local outfilenoteoff2 "`nooutfilenoteoff'"
if `"`using'"'!="" & "`append'"!="" & ///
(("`mode0'"=="rtf" & "`fragment'"=="") | ///
("`page'"!="" & inlist("`mode0'", "tex", "html"))) {
capture confirm file `using0'
if _rc==0 {
tempfile appendfile
if "`mode'"=="rtf" local `mode'_open
else local `mode'_open0
local append
if "`outfilenoteoff2'"=="" local outfilenoteoff2 outfilenoteoff
}
}
// cells() option
if "`notes'"!="" {
if ("`margin'"!="" | `"`margin2'"'!="") & "`nomargin'"=="" ///
local thenote "`thenote'Marginal effects"
if "`eform'"!="" & "`noeform'"=="" ///
local thenote "`thenote'Exponentiated coefficients"
}
if "`bfmt'"=="" local bfmt a3
if `nocellsopt' & `matrixmode'==0 {
if "`star'"!="" & "`staraux'"=="" local bstar star
if "`beta'"!="" {
if "`main'"!="" {
di as err "beta() and main() not allowed both"
exit 198
}
if "`betafmt'"=="" local betafmt 3
local cells fmt(`betafmt') `bstar'
local cells beta(`cells')
if "`notes'"!="" {
if `"`thenote'"'!="" local thenote "`thenote'; "
local thenote "`thenote'Standardized beta coefficients"
}
}
else if "`main'"!="" {
tokenize "`main'"
if "`2'"=="" local 2 "`bfmt'"
local cells fmt(`2') `bstar'
local cells `1'(`cells')
if "`notes'"!="" {
if `"`thenote'"'!="" local thenote "`thenote'; "
local thenote "`thenote'`1' coefficients"
}
}
else {
local cells fmt(`bfmt') `bstar'
local cells b(`cells')
}
if "`t'"=="" | "`z'`se'`p'`ci'`aux'"!="" {
if "`onecell'"!="" {
local cells `cells' &
}
// parse aux option
tokenize "`aux'"
local auxname `1'
local auxfmt `2'
// type of auxiliary statistic
local aux `z' `se' `p' `ci' `auxname'
if `"`aux'"'=="" local aux t
else {
if `:list sizeof aux'>1 {
di as err "only one allowed of z, se, p, ci, and aux()"
exit 198
}
}
if !inlist(`"`aux'"', "t", "z") local abs
// parentheses/brackets
if "`parentheses'"!="" | "`brackets'"!="" {
if `"`aux'"'=="ci" {
local brackets brackets
if "`mode'"!="smcl" | "`onecell'"!="" local paren par
else local paren `"par("{ralign @modelwidth:{txt:[}" "{txt:,}" "{txt:]}}")"'
}
else if "`brackets'"!="" {
if "`mode'"!="smcl" | "`onecell'"!="" local paren "par([ ])"
else local paren `"par("{ralign @modelwidth:{txt:[}" "{txt:]}}")"'
}
else {
if "`mode'"!="smcl" | "`onecell'"!="" local paren par
else local paren `"par("{ralign @modelwidth:{txt:(}" "{txt:)}}")"'
}
}
// compose note
if "`notes'"!="" {
if `"`thenote'"'!="" local thenote "`thenote'; "
if `"`auxname'"'!="" {
local thenote `"`macval(thenote)'`auxname'"'
}
else if inlist(`"`aux'"', "t", "z") {
if "`abs'"!="" local thenote `"`macval(thenote)'Absolute "'
local thenote `"`macval(thenote)'``mode'_`aux'statlab'"'
}
else if `"`aux'"'=="se" {
local thenote `"`macval(thenote)'Standard errors"'
}
else if `"`aux'"'=="p" {
local thenote `"`macval(thenote)'``mode'_pvallab'"'
}
else if `"`aux'"'=="ci" {
local thenote `"`macval(thenote)'``mode'_cilab'"'
}
if "`parentheses'"=="" {
if "`wide'"=="" local thenote `"`macval(thenote)' in second row"'
else local thenote `"`macval(thenote)' in second column"'
}
else if "`brackets'"!="" {
local thenote `"`macval(thenote)' in brackets"'
}
else local thenote `"`macval(thenote)' in parentheses"'
}
// formats
if "`tfmt'"=="" local tfmt 2
if "`zfmt'"=="" local zfmt 2
if "`sefmt'"=="" local sefmt `bfmt'
if "`pfmt'"=="" local pfmt 3
if "`cifmt'"=="" local cifmt `bfmt'
if `"`auxfmt'"'=="" local auxfmt `bfmt'
if `"`auxname'"'=="" {
local auxfmt ``aux'fmt'
}
// stars
if "`staraux'"!="" local staraux star
// put together
local temp fmt(`auxfmt') `paren' `abs' `staraux'
local cells `cells' `aux'(`temp')
}
if "`wide'"!="" local cells cells(`"`cells'"')
else local cells cells(`cells')
}
// stats() option
if `"`macval(stats)'"'=="" & `matrixmode'==0 {
if `"`sfmt'"'=="" local sfmt `bfmt'
if `"`r2fmt'"'=="" local r2fmt = cond("`plain'"!="", "`bfmt'", "3")
if `"`ar2fmt'"'=="" local ar2fmt = cond("`plain'"!="", "`bfmt'", "3")
if `"`pr2fmt'"'=="" local pr2fmt = cond("`plain'"!="", "`bfmt'", "3")
if `"`aicfmt'"'=="" local aicfmt `bfmt'
if `"`bicfmt'"'=="" local bicfmt `bfmt'
if "`label'"=="" {
local stalabs `"``mode'_ssl'"'
}
else {
local stalabs `"``mode'_lsl'"'
}
gettoken obslab stalabs: stalabs
if "`obs'"=="" & "`obslast'"=="" {
local sta N
local stalab `"`"`macval(obslab)'"'"'
local stafmt %18.0g
}
local i 0
foreach s in r2 ar2 pr2 aic bic {
local ++i
if "``s''"!="" {
local sta `sta' `:word `i' of r2 r2_a r2_p aic bic'
local chunk: word `i' of `macval(stalabs)'
local stalab `"`macval(stalab)' `"`macval(chunk)'"'"'
local stafmt `stafmt' ``s'fmt'
}
}
local i 0
CheckScalarOpt `macval(scalars)'
foreach addstat of local scalars {
local ++i
gettoken addstatname addstatlabel: addstat
local addstatlabel = substr(`"`macval(addstatlabel)'"',2,.)
if `: list posof `"`addstatname'"' in sta' continue
if `"`addstatname'"'=="N" & "`obs'"=="" & "`obslast'"!="" continue
if trim(`"`macval(addstatlabel)'"')=="" local addstatlabel `addstatname'
local addstatfmt: word `i' of `sfmt'
if `"`addstatfmt'"'=="" {
local addstatfmt: word `: list sizeof sfmt' of `sfmt'
}
local sta `sta' `addstatname'
local stalab `"`macval(stalab)' `"`macval(addstatlabel)'"'"'
local stafmt `stafmt' `addstatfmt'
}
if "`obs'"=="" & "`obslast'"!="" {
local sta `sta' N
local stalab `"`macval(stalab)' `"`macval(obslab)'"'"'
local stafmt `stafmt' %18.0g
}
if "`sta'"!="" {
local stats stats(`sta', fmt(`stafmt') labels(`macval(stalab)'))
}
}
// table header
if `"`macval(mlabels)'"'=="" {
if "`mode0'"=="tex" local mspan " span prefix(\multicolumn{@span}{c}{) suffix(})"
if `"`depvars'"'!="" {
local mlabels `"mlabels(, depvar`mspan')"'
}
if `"`nomtitles'"'!="" local mlabels `"mlabels(none)"'
if "`mtitles'"!="" {
local mlabels `"mlabels(, titles`mspan')"'
}
if `"`macval(mtitles2)'"'!="" {
local mlabels `"mlabels(`macval(mtitles2)', titles`mspan')"'
}
}
if `"`macval(collabels)'"'=="" & `nocellsopt' & `matrixmode'==0 & "`plain'"=="" {
local collabels `"collabels(none)"'
}
if "`mode0'"=="tex" & "`numbers'"!="" {
local numbers "numbers(\multicolumn{@span}{c}{( )})"
}
// pre-/posthead, pre-/postfoot, gaps and lines
// - complete note
if `"`macval(thenote)'"'!="" {
local thenote `"`"`macval(thenote)'"'"'
}
if `"`macval(note)'"'!="" {
local thenote `""@note""'
}
if `"`macval(addnotes)'"'!="" {
if index(`"`macval(addnotes)'"', `"""')==0 {
local addnotes `"`"`macval(addnotes)'"'"'
}
local thenote `"`macval(thenote)' `macval(addnotes)'"'
}
if "`legend'"!="" {
if ("`margin'"!="" | `"`margin2'"'!="") & ///
"`nomargin'"=="" & "`nodiscrete'"=="" {
local thenote `"`macval(thenote)' "@discrete""'
}
if "`star'"!="" | `nocellsopt'==0 {
local thenote `"`macval(thenote)' "@starlegend""'
}
}
// - mode specific settings
if "`star'"!="" {
if `"`macval(star2)'"'!="" {
FormatStarSym "`mode0'" `"`macval(star2)'"'
local `mode'_starlevels `"`macval(star2)'"'
}
if `"`macval(starlevels)'"'=="" {
local starlevels `"starlevels(`macval(`mode'_starlevels)'`macval(`mode'_starlevlab)')"'
}
}
foreach opt in begin delimiter end substitute {
if `"`macval(`opt')'"'=="" & `"``mode'_`opt''"'!="" {
local `opt' `"`opt'(``mode'_`opt'')"'
}
}
if "`onecell'"!="" {
if `"`macval(incelldelimiter)'"'=="" {
local incelldelimiter `"incelldelimiter(``mode'_incelldel')"'
}
}
if "`noabbrev'`abbrev'"=="" {
local abbrev ``mode'_abbrev'
}
if `"`fragment'"'=="" {
if "`page'"!="" {
if `"`page2'"'!="" {
local texpkgs `""\usepackage{`page2'}""'
}
local opening `"``mode'_open0'"'
}
if `"`macval(title)'"'!="" {
local opening `"`macval(opening)' ``mode'_open'"'
if "`mode0'"=="tex" & "`star'"!="" {
local opening `"`macval(opening)' "\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}""'
}
if !("`longtable'"!="" & "`mode0'"=="tex") {
local opening `"`macval(opening)' ``mode'_caption'"'
}
}
else if "`mode0'"=="tex" & "`star'"!="" {
local opening `"`macval(opening)' "{" "\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}""'
}
else if "`mode0'"!="tex" {
local opening `"`macval(opening)' ``mode'_open'"'
}
local opening `"`macval(opening)' ``mode'_open2'"'
if "`mode0'"=="tex" {
if `"`labcol2'"'!="" local lstubtex "lc"
else local lstubtex "l"
if `"`width'"'!="" local extracolsep "@{\hskip\tabcolsep\extracolsep\fill}"
if `"`macval(alignment)'"'!="" {
local opening `"`macval(opening)'{`extracolsep'`lstubtex'*{@E}{`macval(alignment)'}}"'
}
else {
if `nocellsopt' {
MakeTeXColspec "`wide'" "`not'" "`star'" "`stardetach'" "`staraux'"
}
else {
MakeTeXColspecAlt, `cells'
}
local opening `"`macval(opening)'{`extracolsep'`lstubtex'*{@E}{`value'}}"'
}
if "`longtable'"!="" {
if `"`macval(title)'"'!="" {
local opening `"`macval(opening)' ``mode'_caption'\\\"'
}
}
}
if "`mode0'"=="html" {
local brr
foreach chunk of local thenote {
local closing `"`macval(closing)' `"`brr'`macval(chunk)'"'"'
local brr "
"
}
if `"`macval(closing)'"'!="" {
local closing `""" `macval(closing)' " |
""'
}
}
else if "`mode0'"=="tex" {
foreach chunk of local thenote {
local closing `"`macval(closing)' `"\multicolumn{@span}{l}{\footnotesize `macval(chunk)'}\\\"'"'
}
}
else if "`mode0'"=="csv" {
foreach chunk of local thenote {
local closing `"`macval(closing)' `"`csvlhs'`macval(chunk)'""'"'
}
}
else if "`mode0'"=="rtf" {
foreach chunk of local thenote {
local closing `"`macval(closing)' `"{\pard\ql\fs20 `macval(chunk)'\par}"'"'
}
}
else {
local closing `"`macval(thenote)'"'
}
local closing `"`macval(closing)' ``mode'_close2'"'
if `"`macval(title)'"'!="" | "`mode0'"!="tex" {
local closing `"`macval(closing)' ``mode'_close'"'
}
else if "`mode0'"=="tex" & "`star'"!="" {
local closing `"`macval(closing)' }"'
}
if "`page'"!="" {
local closing `"`macval(closing)' ``mode'_close0'"'
}
local toprule `"``mode'_toprule'"'
local bottomrule `"``mode'_bottomrule'"'
local topgap `"``mode'_topgap'"'
local bottomgap `"``mode'_bottomgap'"'
}
local midrule `"``mode'_midrule'"'
local midgap `"``mode'_midgap'"'
local eqrule `"``mode'_eqrule'"'
// - compose prehead()
if `"`macval(prehead)'"'=="" {
if `"`lines'"'!="" {
local opening `"`macval(opening)' `macval(toprule)'"'
}
else if `"`gaps'"'!="" {
local opening `"`macval(opening)' `macval(topgap)'"'
}
SaveRetok `macval(opening)'
local opening `"`macval(value)'"'
if `"`macval(opening)'"'!="" {
local prehead `"prehead(`macval(opening)')"'
}
}
// - compose posthead()
if `"`macval(posthead)'"'=="" {
if `"`lines'"'!="" {
local posthead `"posthead(`macval(midrule)')"'
}
else if `"`gaps'"'!="" {
local posthead `"posthead(`macval(midgap)')"'
}
}
// - compose prefoot()
if `"`macval(prefoot)'"'=="" & `"`macval(stats)'"'!="" {
if `"`lines'"'!="" {
local prefoot `"prefoot(`macval(midrule)')"'
}
else if `"`gaps'"'!="" {
local prefoot `"prefoot(`macval(midgap)')"'
}
if `"`cells'"'=="cells(none)" local prefoot
}
// - compose postfoot()
if `"`macval(postfoot)'"'=="" {
if `"`lines'"'!="" {
local closing `"`macval(bottomrule)' `macval(closing)'"'
}
else if `"`gaps'"'!="" {
local closing `"`macval(bottomgap)' `macval(closing)'"'
}
SaveRetok `macval(closing)'
local closing `"`macval(value)'"'
if `"`macval(closing)'"'!="" {
local postfoot postfoot(`macval(closing)')
}
}
// - varlabels
if `"`macval(varlabels)'"'=="" {
if `"`gaps'"'!="" {
local varl `", end("" `macval(midgap)') nolast"'
}
if "`label'"!="" {
local varl `"_cons Constant`macval(varl)'"'
}
if `"`macval(coeflabels)'"'!="" {
local varl `"`macval(coeflabels)' `macval(varl)'"'
}
if trim(`"`macval(varl)'"')!="" {
local varlabels varlabels(`macval(varl)')
}
}
// - equation labels
if ("`eqlines'"!="" | `"`gaps'"'!="") & "`unstack'"=="" {
if trim(`"`eqlabels'"')!="none" {
ParseEqLabels `macval(eqlabels)'
if `eqlabelsok' {
_parse comma eqllhs eqlrhs : eqlabels
if `"`eqlrhs'"'=="" local eqlabelscomma ", "
else local eqlabelscomma " "
if "`eqlines'"!=""{
local eqlabels `"`macval(eqlabels)'`eqlabelscomma'`macval(eqrule)' nofirst"'
}
else if `"`gaps'"'!="" {
local eqlabels `"`macval(eqlabels)'`eqlabelscomma'begin(`macval(midgap)' "") nofirst"'
}
}
}
}
if `"`macval(eqlabels)'"'!="" {
local eqlabels `"eqlabels(`macval(eqlabels)')"'
}
// noconstant option
if `"`drop'"'=="" {
if "`noconstant'"!="" {
local drop drop(_cons, relax)
}
}
// compute beta coefficients (run estadd to add e(beta))
if "`beta'"!="" {
local estnames `"`anything'"'
if `"`estnames'"'=="" {
capt est_expand $eststo
if !_rc {
local estnames `"$eststo"'
}
}
version `caller': estadd beta, replace: `estnames'
}
// use tempfile for new table
if `"`appendfile'"'!="" {
local using `"using `"`appendfile'"'"'
}
// execute estout
if `"`varwidth'"'!="" local varwidth `"varwidth(`varwidth')"'
if `"`modelwidth'"'!="" local modelwidth `"modelwidth(`modelwidth')"'
if `"`style'"'=="" local style "style(esttab)"
CleanEstoutCmd `anything' `using' , ///
`macval(cells)' `drop' `nomargin' `margin' `margin2' `noeform' `eform' ///
`nodiscrete' `macval(stats)' `stardetach' `macval(starlevels)' ///
`varwidth' `modelwidth' `noabbrev' `abbrev' `unstack' `macval(begin)' ///
`macval(delimiter)' `macval(end)' `macval(incelldelimiter)' `smcltags' ///
`macval(title)' `macval(prehead)' `macval(posthead)' `macval(prefoot)' ///
`macval(postfoot)' `label' `macval(varlabels)' `macval(mlabels)' `nonumbers' ///
`numbers' `macval(collabels)' `macval(eqlabels)' `macval(mgroups)' ///
`macval(note)' `macval(labcol2)' `macval(substitute)' `append' ///
`notype'`type' `outfilenoteoff2' level(`level') `style' `macval(options)'
if "`noisily'"!="" {
gettoken chunk rest: cmd, parse(",")
di as txt _asis `"`chunk'"' _c
gettoken chunk rest: rest, bind
while `"`macval(chunk)'"'!="" {
di as txt _asis `" `macval(chunk)'"'
gettoken chunk rest: rest, bind
}
}
`macval(cmd)'
// insert new table into existing document (tex, html, rtf)
if `"`appendfile'"'!="" {
local enddoctex "\end{document}"
local enddochtml "