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.
201 lines
4.9 KiB
Plaintext
201 lines
4.9 KiB
Plaintext
*! version 1.2.1 20dec2005
|
|
program define sjlatex
|
|
version 7
|
|
gettoken cmd 0 : 0, parse(" ,")
|
|
local l = length(`"`cmd'"')
|
|
preserve
|
|
if `"`cmd'"' == "" | `"`cmd'"' == "using" {
|
|
Using `cmd' `0'
|
|
di
|
|
}
|
|
else if `"`cmd'"' == substr("query",1,max(1,`l')) {
|
|
Query `0'
|
|
}
|
|
else if `"`cmd'"' == substr("install",1,max(1,`l')) {
|
|
Install `0'
|
|
}
|
|
else if `"`cmd'"' == substr("update",1,max(1,`l')) {
|
|
capture syntax [using] [, replace * ]
|
|
Install `using', replace `options'
|
|
}
|
|
else if `"`cmd'"' == substr("ado",1,max(1,`l')) {
|
|
if _caller() >= 9 {
|
|
di as txt /*
|
|
*/ "Use the {helpb adoupdate} command to update {cmd:sjlatex} and {cmd:sjlog}"
|
|
exit
|
|
}
|
|
Ado `0'
|
|
}
|
|
else {
|
|
di as error `"unrecognized command: `cmd'"'
|
|
exit 198
|
|
}
|
|
exit
|
|
end
|
|
|
|
/* get the SJ parameters */
|
|
program define GetParams, sclass
|
|
sreturn local from http://www.stata-journal.com/production
|
|
sreturn local pkg sjlatex
|
|
sreturn local src sjlatex
|
|
end
|
|
|
|
program define Using, rclass
|
|
local pwd : pwd
|
|
syntax [using/]
|
|
if `"`using'"' != "" {
|
|
quietly cd `"`using'"'
|
|
local sjdir : pwd
|
|
}
|
|
local cwd : pwd
|
|
di as txt _n "Stata Journal LaTeX files"
|
|
di as txt _col(5) "folder:" _col(25) as res `"`cwd'"'
|
|
di as txt _col(5) "installed release:" _col(25) _c
|
|
|
|
/* The top line of this file is an example of the form of the
|
|
* sj.version file.
|
|
*/
|
|
|
|
capture infile str20 version using sj.version
|
|
if _rc {
|
|
di as res "(unknown)"
|
|
}
|
|
else {
|
|
capture {
|
|
assert version[1] == "*!"
|
|
assert version[2] == "version"
|
|
}
|
|
if _rc {
|
|
di as res "(unknown)"
|
|
}
|
|
else {
|
|
di as res "version " version[3] " " version[4]
|
|
return local sjver = version[3]
|
|
return local sjdate = version[4]
|
|
}
|
|
}
|
|
return local sjdir `sjdir'
|
|
qui cd `"`pwd'"'
|
|
end
|
|
|
|
program define Query, rclass
|
|
syntax [using] [, norecommend from(string) ]
|
|
Using `using'
|
|
if `"`r(sjdir)'"' != "" {
|
|
local uusing `" using `"`r(sjdir)'"'"' /*"'*/
|
|
}
|
|
local sjdate `r(sjdate)'
|
|
local sjver `r(sjver)'
|
|
GetParams
|
|
if `"`from'"' == "" {
|
|
local from `s(from)'
|
|
}
|
|
local pkg `s(pkg)'
|
|
local src `s(src)'
|
|
tempfile sj_version
|
|
qui copy `"`from'/`src'/sj.version"' `sj_version', text
|
|
qui infile str20 version using `sj_version', clear
|
|
di as txt _col(5) "latest release:" _col(25) /*
|
|
*/ as res "version " version[3] " " version[4]
|
|
local l_sjver = version[3]
|
|
local l_sjdate = version[4]
|
|
if `"`recommend'"' == "" {
|
|
di as txt _n "{p 0 5}Recommendation{break}"
|
|
if `"`sjver'`sjdate'"' == "" {
|
|
di as txt `"type -{cmd:sjlatex install`uusing'}-"'
|
|
return local recommend install
|
|
}
|
|
else if `"`sjver'`sjdate'"' != `"`l_sjver'`l_sjdate'"' {
|
|
di as txt `"type -{cmd:sjlatex update`uusing'}-"'
|
|
return local recommend update
|
|
}
|
|
else {
|
|
di as txt `"Do nothing; all files up-to-date."'
|
|
}
|
|
}
|
|
end
|
|
|
|
program define Install
|
|
syntax [using/] [, replace from(string) noLS ]
|
|
if `"`using'"' != "" {
|
|
local uusing `" using `using'"'
|
|
}
|
|
local pwd : pwd
|
|
if `"`replace'"' == "" {
|
|
di as txt "Installing Stata Journal LaTeX files..."
|
|
if `"`using'"' != "" {
|
|
capture mkdir `"`using'"'
|
|
if _rc {
|
|
di as err /*
|
|
*/ `"could not create directory `using'"'
|
|
di as txt /*
|
|
*/ `"{p 0 4 2}This directory already existed."' /*
|
|
*/ `"Consider supplying an alternate directory or{break}"' /*
|
|
*/ `"type -{cmd:sjlatex update`uusing'}-.{p_end}"'
|
|
exit _rc
|
|
}
|
|
qui cd `"`using'"'
|
|
}
|
|
}
|
|
else {
|
|
di as txt "Updating Stata Journal LaTeX files..."
|
|
if `"`using'"' != "" {
|
|
quietly cd `"`using'"'
|
|
}
|
|
}
|
|
local sjdir : pwd
|
|
set more off
|
|
GetParams
|
|
local src `s(src)'
|
|
if `"`from'"' == "" {
|
|
local from `s(from)'
|
|
}
|
|
capture net from `"`from'"'
|
|
capture net get `src', `replace'
|
|
if _rc {
|
|
di as error `"could not copy the files to `sjdir'"'
|
|
if `"`replace'"' == "" {
|
|
di as txt `"{p}One or more files in this directory is in conflict with the Stata Journal LaTeX files. Consider supplying an alternate directory or{break}type -{cmd:sjlatex update`uusing'}-.{p_end}"'
|
|
}
|
|
else {
|
|
di as txt `"This directory may not be writable. Consider supplying an alternate directory."'
|
|
}
|
|
exit _rc
|
|
}
|
|
if "`c(stata_version)'" == "" {
|
|
capture /*
|
|
*/ cp `"`from'/`src'/statapress.cls"' statapress.cls, /*
|
|
*/ replace text
|
|
}
|
|
Using
|
|
if `"`replace'"' == "" & `"`ls'"' == "" {
|
|
di as input _n ". ls"
|
|
ls
|
|
}
|
|
if `"`uusing'"' != "" {
|
|
di as input _n ". pwd"
|
|
pwd
|
|
}
|
|
di in smcl as txt _n "{p 0 0 2}" /*
|
|
*/ "See the Getting Started instructions" /*
|
|
*/ " in the Remarks section of the online" /*
|
|
*/ " documentation for {help sjlatex}.{p_end}"
|
|
end
|
|
|
|
program define Ado
|
|
set more off
|
|
GetParams
|
|
local from `s(from)'
|
|
local pkg `s(pkg)'
|
|
quietly net from `"`from'"'
|
|
capture net install `pkg'
|
|
if _rc {
|
|
di as txt "updating package {cmd:sjlatex} package"
|
|
quietly ado uninstall `pkg'
|
|
quietly net install `pkg'
|
|
}
|
|
else di as txt "package {cmd:sjlatex} is up-to-date"
|
|
end
|
|
|
|
exit
|