|
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
st: Auto-wrapping text in graph notes
Hi all,
I have written some simple code to automate the wrapping of text in
graph notes. All comments, corrections and improvements are welcome.
This is based on Scott Merryman's code for wrapping titles:
http://www.stata.com/statalist/archive/2007-03/msg00778.html
-- begin code --
cap log close
* autowrapnote.do
* Raymond P Guiteras
* 20 Jan 2008
* simple example of automating text wrap in notes
* the length below is 110 because that looks best when exporting to .emf
* if you prefer to export in other formats then you should adjust this
number
* the main trick is the use of compound double-quotes (`" "') to create
(and use) a macro that itself contains double-quotes (" ")
* the double-quotes are necessary to get Stata's "note()" suboption to
write to separate lines
log using autowrapnote, replace
sysuse auto
* write out note here as a local macro
local MyNote "Notes: This is a very long note, the point of which is
just to test the auto-wrapping code below, as well as see how the text
size changes when exporting to different file types, i.e. wmf, emf, ps,
eps."
* the goal is to create a local macro with the above as its contents,
but split into pieces of 110 characters or fewer
* with these pieces enclosed in double-quotes, e.g. "Notes: This is a
very long note ...as well as" "to see...eps."
* obtain length of note (number of characters) and number of pieces of
length 110
local l = length("`MyNote'")
local b = ceil(`l'/110)
if `l' > 110 {
forv i = 1/`b' {
// use extended macro function "piece" to break MyNote into chunks of
110 characters
local lab`i': piece `i' 110 of "`MyNote'", nobreak
// di "local macro lab`i' contains"
// di "`lab`i''"
// use compound double quotes to create macro MyNote2 that contains
simple double-quotes
// create first piece
if `i'==1 {
local MyNote2 `""`lab`i''""'
}
// append subsequent pieces
if `i'>=2 {
local MyNote2 `"`MyNote2' "`lab`i''""'
}
// di "local macro MyNote2 contains"
// di `"`MyNote2'"'
}
}
else {
local MyNote2 `""`MyNote'""'
}
//di `"`MyNote2'"'
twoway scatter weight length, ///
title("Testing Position of Title") ///
note(`MyNote2' ///
, span )
graph save autowrapnote, replace
local exporttypes "emf wmf eps ps"
foreach ext of local exporttypes {
cap graph export autowrapnote.`ext', replace
di "Exporting to `ext' returned"
di _rc
}
cap log close
-- end code --
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/