You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1200 lines
46 KiB
Plaintext
1200 lines
46 KiB
Plaintext
10 months ago
|
*! 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 `"<html> <head> "<title>`=cond(`"\`macval(title)'"'=="","estimates table, created `cdate' `ctime'","@title")'</title>" </head> <body> """'
|
||
|
local html_close0 `""" </body> </html> """'
|
||
|
local html_open `"`"<table border="0" width="\`=cond("\`width'"=="","*","\`width'")'">"'"'
|
||
|
local html_close `""</table>""'
|
||
|
local html_caption `""<caption>@title</caption>""'
|
||
|
local html_open2 `""'
|
||
|
local html_close2 `""'
|
||
|
local html_toprule `""<tr><td colspan=@span><hr></td></tr>""'
|
||
|
local html_midrule `""<tr><td colspan=@span><hr></td></tr>""'
|
||
|
local html_bottomrule `""<tr><td colspan=@span><hr></td></tr>""'
|
||
|
local html_topgap `""'
|
||
|
local html_midgap `""<tr><td colspan=@span> </td></tr>""'
|
||
|
local html_bottomgap `""'
|
||
|
local html_eqrule `"begin("<tr><td colspan=@span><hr></td></tr>" "")"'
|
||
|
local html_ssl `"<i>N</i> <i>R</i><sup>2</sup> "adj. <i>R</i><sup>2</sup>" "pseudo <i>R</i><sup>2</sup>" <i>AIC</i> <i>BIC</i>"'
|
||
|
local html_lsl `"Observations <i>R</i><sup>2</sup> "Adjusted <i>R</i><sup>2</sup>" "Pseudo <i>R</i><sup>2</sup>" <i>AIC</i> <i>BIC</i>"'
|
||
|
local html_starlevels `"<sup>*</sup> 0.05 <sup>**</sup> 0.01 <sup>***</sup> 0.001"'
|
||
|
local html_starlevlab `", label(" <i>p</i> < ")"'
|
||
|
local html_begin `"<tr><td>"'
|
||
|
local html_delimiter `"</td><td\`=cond(`"\`alignment'"'!="", `" align="\`alignment'""', "")'>"'
|
||
|
local html_end `"</td></tr>"'
|
||
|
local html_incelldel `"<br />"'
|
||
|
local html_varwidth `"\`= cond("\`label'"=="", 12, 20)'"'
|
||
|
local html_modelwidth `"12"'
|
||
|
local html_abbrev `""'
|
||
|
local html_substitute `""'
|
||
|
local html_tstatlab `"<i>t</i> statistics"'
|
||
|
local html_zstatlab `"<i>z</i> statistics"'
|
||
|
local html_pvallab `"<i>p</i>-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 "<br />"
|
||
|
}
|
||
|
if `"`macval(closing)'"'!="" {
|
||
|
local closing `""<tr><td colspan=@span>" `macval(closing)' "</td></tr>""'
|
||
|
}
|
||
|
}
|
||
|
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 "</body>"
|
||
|
local enddocrtf "}"
|
||
|
local enddoc "`enddoc`mode0''"
|
||
|
tempname fh
|
||
|
file open `fh' using `using0', read write
|
||
|
file seek `fh' query
|
||
|
local loc = r(loc)
|
||
|
file read `fh' line
|
||
|
while r(eof)==0 {
|
||
|
if `"`line'"'=="`enddoc'" {
|
||
|
if "`mode'"=="rtf" {
|
||
|
file seek `fh' query
|
||
|
local loc0 = r(loc)
|
||
|
file read `fh' line
|
||
|
if r(eof)==0 {
|
||
|
local loc = `loc0'
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
continue, break
|
||
|
}
|
||
|
file seek `fh' query
|
||
|
local loc = r(loc)
|
||
|
file read `fh' line
|
||
|
}
|
||
|
file seek `fh' `loc'
|
||
|
tempname new
|
||
|
file open `new' `using', read
|
||
|
file read `new' line
|
||
|
while r(eof)==0 {
|
||
|
file write `fh' `"`macval(line)'"' _n
|
||
|
file read `new' line
|
||
|
}
|
||
|
file close `fh'
|
||
|
file close `new'
|
||
|
if "`outfilenoteoff'"=="" {
|
||
|
di as txt `"(output written to {browse `using0'})"'
|
||
|
}
|
||
|
}
|
||
|
end
|
||
|
|
||
|
program _more_syntax
|
||
|
// using subroutine (rather than second syntax call) to preserve 'using'
|
||
|
local theoptions ///
|
||
|
NODEPvars DEPvars ///
|
||
|
NOPArentheses PArentheses ///
|
||
|
BRackets ///
|
||
|
NONOTEs NOTEs /// without s in helpfile
|
||
|
LONGtable ///
|
||
|
ONEcell ///
|
||
|
NOEQLInes ///
|
||
|
NOOUTFILENOTEOFF outfilenoteoff
|
||
|
syntax [, `theoptions' * ]
|
||
|
foreach opt of local theoptions {
|
||
|
local opt = lower("`opt'")
|
||
|
c_local `opt' "``opt''"
|
||
|
}
|
||
|
c_local options `"`macval(options)'"'
|
||
|
end
|
||
|
|
||
|
program _estout_options
|
||
|
syntax [, ///
|
||
|
Cells(passthru) ///
|
||
|
Drop(passthru) ///
|
||
|
/// Keep(string asis) ///
|
||
|
/// Order(string asis) ///
|
||
|
/// REName(passthru) ///
|
||
|
/// Indicate(string asis) ///
|
||
|
/// TRansform(string asis) ///
|
||
|
/// EQuations(passthru) ///
|
||
|
NOEFORM eform ///EFORM2(string) ///
|
||
|
NOMargin Margin Margin2(passthru) ///
|
||
|
NODIscrete /// DIscrete(string asis) ///
|
||
|
/// MEQs(string) ///
|
||
|
/// NODROPPED dropped DROPPED2(string) ///
|
||
|
level(numlist max=1 int >=10 <=99) ///
|
||
|
Stats(passthru) ///
|
||
|
STARLevels(passthru) ///
|
||
|
/// NOSTARDetach ///
|
||
|
STARDetach ///
|
||
|
/// STARKeep(string asis) ///
|
||
|
/// STARDrop(string asis) ///
|
||
|
VARwidth(str) ///
|
||
|
MODELwidth(str) ///
|
||
|
NOABbrev ABbrev ///
|
||
|
/// NOUNStack
|
||
|
UNStack ///
|
||
|
BEGin(passthru) ///
|
||
|
DELimiter(passthru) ///
|
||
|
INCELLdelimiter(passthru) ///
|
||
|
end(passthru) ///
|
||
|
/// DMarker(string) ///
|
||
|
/// MSign(string) ///
|
||
|
/// NOLZ lz ///
|
||
|
SUBstitute(passthru) ///
|
||
|
TItle(passthru) ///
|
||
|
NOLEgend LEgend ///
|
||
|
PREHead(passthru) ///
|
||
|
POSTHead(passthru) ///
|
||
|
PREFoot(passthru) ///
|
||
|
POSTFoot(passthru) ///
|
||
|
/// HLinechar(string) ///
|
||
|
/// NOLabel
|
||
|
Label ///
|
||
|
VARLabels(passthru) ///
|
||
|
/// REFcat(string asis) ///
|
||
|
MLabels(passthru) ///
|
||
|
NONUMbers NUMbers ///NUMbers2(string asis) ///
|
||
|
COLLabels(passthru) ///
|
||
|
EQLabels(string asis) ///
|
||
|
MGRoups(passthru) ///
|
||
|
LABCOL2(passthru) ///
|
||
|
/// NOReplace Replace ///
|
||
|
/// NOAppend
|
||
|
Append ///
|
||
|
NOTYpe TYpe ///
|
||
|
/// NOSHOWTABS showtabs ///
|
||
|
/// TOPfile(string) ///
|
||
|
/// BOTtomfile(string) ///
|
||
|
STYle(passthru) ///
|
||
|
/// DEFaults(string) ///
|
||
|
/// NOASIS asis ///
|
||
|
/// NOWRAP wrap ///
|
||
|
/// NOSMCLTAGS smcltags ///
|
||
|
/// NOSMCLRules SMCLRules ///
|
||
|
/// NOSMCLMIDRules SMCLMIDRules ///
|
||
|
/// NOSMCLEQRules SMCLEQRules ///
|
||
|
note(passthru) ///
|
||
|
* ]
|
||
|
foreach opt in ///
|
||
|
cells drop noeform eform nomargin margin margin2 nodiscrete ///
|
||
|
level stats starlevels stardetach varwidth modelwidth unstack ///
|
||
|
noabbrev abbrev begin delimiter incelldelimiter end substitute title nolegend ///
|
||
|
legend prehead posthead prefoot postfoot label varlabels mlabels labcol2 ///
|
||
|
nonumbers numbers collabels eqlabels mgroups append notype type style note ///
|
||
|
options {
|
||
|
c_local `opt' `"`macval(`opt')'"'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
program MatrixMode
|
||
|
capt syntax [, Matrix(str asis) e(str asis) r(str asis) rename(str asis) ]
|
||
|
if _rc | `"`matrix'`e'`r'"'=="" {
|
||
|
c_local matrixmode 0
|
||
|
exit
|
||
|
}
|
||
|
c_local matrixmode 1
|
||
|
end
|
||
|
|
||
|
prog NotBothAllowed
|
||
|
args opt1 opt2
|
||
|
if `"`opt1'"'!="" {
|
||
|
if `"`opt2'"'!="" {
|
||
|
di as err `"options `opt1' and `opt2' not both allowed"'
|
||
|
exit 198
|
||
|
}
|
||
|
}
|
||
|
end
|
||
|
|
||
|
prog SwitchOnIfEmpty
|
||
|
args opt1 opt2
|
||
|
if `"`opt2'"'=="" {
|
||
|
c_local `opt1' `opt1'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
prog _getfilesuffix, rclass // based on official _getfilename.ado
|
||
|
version 8
|
||
|
gettoken filename rest : 0
|
||
|
if `"`rest'"' != "" {
|
||
|
exit 198
|
||
|
}
|
||
|
local hassuffix 0
|
||
|
gettoken word rest : filename, parse(".")
|
||
|
while `"`rest'"' != "" {
|
||
|
local hassuffix 1
|
||
|
gettoken word rest : rest, parse(".")
|
||
|
}
|
||
|
if `"`word'"'=="." {
|
||
|
di as err `"incomplete filename; ends in ."'
|
||
|
exit 198
|
||
|
}
|
||
|
if index(`"`word'"',"/") | index(`"`word'"',"\") local hassuffix 0
|
||
|
if `hassuffix' return local suffix `".`word'"'
|
||
|
else return local suffix ""
|
||
|
end
|
||
|
|
||
|
prog FormatStarSym
|
||
|
args mode list
|
||
|
if inlist("`mode'","rtf","html","tex") {
|
||
|
if "`mode'"=="rtf" {
|
||
|
local prefix "{\super "
|
||
|
local suffix "}"
|
||
|
}
|
||
|
else if "`mode'"=="html" {
|
||
|
local prefix "<sup>"
|
||
|
local suffix "</sup>"
|
||
|
}
|
||
|
else if "`mode'"=="tex" {
|
||
|
local prefix "\sym{"
|
||
|
local suffix "}"
|
||
|
}
|
||
|
local odd 1
|
||
|
foreach l of local list {
|
||
|
if `odd' {
|
||
|
local l `"`"`prefix'`macval(l)'`suffix'"'"'
|
||
|
local odd 0
|
||
|
}
|
||
|
else local odd 1
|
||
|
local newlist `"`macval(newlist)'`space'`macval(l)'"'
|
||
|
local space " "
|
||
|
}
|
||
|
c_local star2 `"`macval(newlist)'"'
|
||
|
}
|
||
|
//else do noting
|
||
|
end
|
||
|
|
||
|
prog CheckScalarOpt
|
||
|
capt syntax [anything]
|
||
|
if _rc error 198
|
||
|
end
|
||
|
|
||
|
prog MakeTeXColspec
|
||
|
args wide not star detach aux
|
||
|
if "`star'"!="" & "`detach'"!="" & "`aux'"=="" local value "r@{}l"
|
||
|
else local value "c"
|
||
|
if "`wide'"!="" & "`not'"=="" {
|
||
|
if "`star'"!="" & "`detach'"!="" & "`aux'"!="" local value "`value'r@{}l"
|
||
|
else local value "`value'c"
|
||
|
}
|
||
|
c_local value "`value'"
|
||
|
end
|
||
|
|
||
|
prog MakeTeXColspecAlt
|
||
|
syntax, cells(string asis)
|
||
|
local count 1
|
||
|
while `count' {
|
||
|
local cells: subinstr local cells " (" "(", all count(local count)
|
||
|
}
|
||
|
local count 1
|
||
|
while `"`macval(cells)'"'!="" {
|
||
|
gettoken row cells : cells, bind
|
||
|
local size 0
|
||
|
gettoken chunk row : row, bind
|
||
|
while `"`macval(chunk)'"'!="" {
|
||
|
local ++size
|
||
|
gettoken chunk row : row, bind
|
||
|
}
|
||
|
local count = max(`count',`size')
|
||
|
}
|
||
|
c_local value: di _dup(`count') "c"
|
||
|
end
|
||
|
|
||
|
prog SaveRetok
|
||
|
gettoken chunk 0: 0, q
|
||
|
local value `"`macval(chunk)'"'
|
||
|
gettoken chunk 0: 0, q
|
||
|
while `"`macval(chunk)'"'!="" {
|
||
|
local value `"`macval(value)' `macval(chunk)'"'
|
||
|
gettoken chunk 0: 0, q
|
||
|
}
|
||
|
c_local value `"`macval(value)'"'
|
||
|
end
|
||
|
|
||
|
prog CleanEstoutCmd
|
||
|
syntax [anything] [using] [ , * ]
|
||
|
local cmd estout
|
||
|
if `"`macval(anything)'"'!="" {
|
||
|
local cmd `"`macval(cmd)' `macval(anything)'"'
|
||
|
}
|
||
|
if `"`macval(using)'"'!="" {
|
||
|
local cmd `"`macval(cmd)' `macval(using)'"'
|
||
|
}
|
||
|
if `"`macval(options)'"'!="" {
|
||
|
local cmd `"`macval(cmd)', `macval(options)'"'
|
||
|
}
|
||
|
c_local cmd `"`macval(cmd)'"'
|
||
|
end
|
||
|
|
||
|
prog ParseEqLabels
|
||
|
syntax [anything] [, Begin(passthru) NOReplace Replace NOFirst First * ]
|
||
|
c_local eqlabelsok = `"`begin'`noreplace'`replace'`nofirst'`first'"'==""
|
||
|
end
|