See ?strwidth
On Sat, Mar 27, 2010 at 3:42 PM, Dennis Fisher <fisher at plessthan.com>
wrote:> Colleagues,
>
> I am trying to create a PDF document in which I use margin text with two
different fonts. ?The resulting text might be:
> ? ? ? ?XXXXXyZZZ
> where X and Z are one font and Y is the other.
>
> My plan was to do this in the following manner:
> ? ? ? ?mtext("XXXXX ZZZ", cex=2, adj=0.5, family=SOMEFONT)
> ? ? ? ?mtext("Y", cex=2, adj=??, family=DIFFERENTFONT)
>
> My question regards how to calculate "adj" for the second string.
>
> I tried the following (different strings here and the same font was used
for both strings - even under these circumstances, it does not work correctly):
>> STRING1 ? ? ? <- "0123456789 0"
>> STRING2 ? ? ? <- " ? ? ? ? ?x "
>> pdf("GREEK.pdf", width=10, height=8)
>> par(mfrow=c(1,1))
>> WIDTH1 ? ? ? ?<- strwidth("0123456789", ?cex=1,
units="inches", family="", font=1)
>> WIDTH2 ? ? ? ?<- strwidth("0", ? ? ? ? ? cex=1,
units="inches", family="", font=1)
>> plot(1,1,type="n", axes=F, xlab="",
ylab="")
>> mtext(line=-1, outer=T, cex=1, family="", font=1, adj=0.5,
STRING1)
>> mtext(line=-1, outer=T, cex=1, family="", font=1, adj=0.5 -
(WIDTH2 - WIDTH1)/2/par()$pin[1], STRING2)
>> mtext(line=-1, outer=F, cex=1, family="", font=1, adj=0.5,
STRING1)
>> mtext(line=-1, outer=F, cex=1, family="", font=1, adj=0.5 -
(WIDTH2 - WIDTH1)/2/par()$din[1], STRING2)
>> dev.off()
>
>
> The logic is:
> ? ? ? ?1. ?determine the width of the first and second portions of the
string for the first font
> ? ? ? ?2. ?one-half of the difference between these two should be the
offset
> ? ? ? ?3. ?however, WIDTH1 and WIDTH2 have units of inches - so I need to
normalize them to the width of the figure (if outer=T, use width of the page)
>
> Unfortunately, spacing is not perfect. ?Perhaps I misunderstand how
"adj" is applied or I am apply. ?Can anyone help me to understand how
"adj" is applied?
>
> Thanks in advance.
>
> Dennis
>
> Dennis Fisher MD
> P < (The "P Less Than" Company)
> Phone: 1-866-PLessThan (1-866-753-7784)
> Fax: 1-866-PLessThan (1-866-753-7784)
> www.PLessThan.com
>
>
> ? ? ? ?[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Henrique Dallazuanna
Curitiba-Paran?-Brasil
25? 25' 40" S 49? 16' 22" O