program define tab2tex *! v1.6 gmh Jul 23 2003 * mark_holmes@unc.edu version 8.2 syntax using , [ SAVING(string) noPRESERVE noLIST noFOOTER] if "`preserve'"=="" { preserve } drop _all qui insheet `using', nonames unabbrev v* local k= $S_2 local last : word `k' of $S_1 ** get obs for which only column is first tempvar only1 qui gen byte `only1'=1 capture for var v2-`last': replace `only1'=0 if X~="" qui for var v* : tostring X, replace qui for var v*: replace X=X+" &" if ~`only1' *qui for var v*: replace X="" if X==" &" qui gen l = length(`last') qui replace `last'=substr(`last',1,l-2)+" \\\\ " if ~`only1' * qui replace =substr(`last',1,l-2)+" \\\\ " if ~`only1' *qui replace v1="\multicolumn{`k'}{l}{"+v1+"} \\\\" if `only1' qui replace v1=v1+" \\\\" if `only1' local i = 2 local cols = "l" while `i'<=`k' { local cols = "`cols'c" local i = `i'+1 } if "`saving'"~="" { qui log local restart=0 if "`r(status)'"~="" { local restart=1 local isitoff=("`r(status)'"=="off") local logname = "`r(filename)'" local logtype = "`r(type)'" qui log cl } if index(`"`saving'"',",")>0 { local saving = `"`saving' text"' } else { local saving = `"`saving' , text"' } qui log using `saving' } list v* if ~`only1', noobs nohe nodi clean if "`footer'"=="" { di "\end{tabular}" list v* if `only1', noobs nohea nodi clean } if "`saving'"~="" { qui log cl if `restart' { qui log using `"`logname'"', `logtype' if `isitoff' { log off } } } end