diff options
Diffstat (limited to 'Master/texmf/asymptote/plain_strings.asy')
-rw-r--r-- | Master/texmf/asymptote/plain_strings.asy | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/Master/texmf/asymptote/plain_strings.asy b/Master/texmf/asymptote/plain_strings.asy index 598d61e4249..138ab05ca05 100644 --- a/Master/texmf/asymptote/plain_strings.asy +++ b/Master/texmf/asymptote/plain_strings.asy @@ -83,19 +83,28 @@ string verbatim(string s) } // Split a string into an array of substrings delimited by delimiter -string[] split(string s, string delimiter=" ") +// If delimiter is an empty string, use space delimiter, discarding duplicates. +string[] split(string s, string delimiter="") { + bool prune=false; + if(delimiter == "") { + prune=true; + delimiter=" "; + } + string[] S; int last=0; int i; int N=length(delimiter); + int n=length(s); while((i=find(s,delimiter,last)) >= 0) { if(i >= last) S.push(substr(s,last,i-last)); last=i+N; + if(prune) + while(substr(s,last,1) == " ") ++last; } - int n=length(s); - if(n >= last) + if(n > last || (n == last && !prune)) S.push(substr(s,last,n-last)); return S; } @@ -150,7 +159,12 @@ string graphic(string name, string options="") { if(latex()) { if(options != "") options="["+options+"]"; - return "\includegraphics"+options+"{"+name+"}"; + if(find(name," ") < 0) + return "\includegraphics"+options+"{"+name+"}"; + else { + return "\includegraphics"+options+ + (pdf() ? "{\""+stripextension(name)+"\".pdf}" : "{\""+name+"\"}"); + } } if(settings.tex != "context") notimplemented("graphic"); @@ -160,10 +174,10 @@ string graphic(string name, string options="") string minipage(string s, real width=100bp) { if(latex()) - return "\begin{minipage}{"+(string) (width*pt)+"pt}"+s+"\end{minipage}"; + return "\begin{minipage}{"+(string) (width/pt)+"pt}"+s+"\end{minipage}"; if(settings.tex != "context") notimplemented("minipage"); - return "\startframedtext[none][frame=off,width="+(string) (width*pt)+ + return "\startframedtext[none][frame=off,width="+(string) (width/pt)+ "pt]"+s+"\stopframedtext"; } @@ -197,20 +211,3 @@ string phantom(string s) } restricted int ocgindex=0; - -void begin(picture pic=currentpicture, string name, string id="", - bool visible=true) -{ - if(!latex() || !pdf()) return; - settings.twice=true; - if(id == "") id=string(++ocgindex); - tex(pic,"\begin{ocg}{"+name+"}{"+id+"}{"+(visible ? "1" : "0")+"}"); - layer(pic); -} - -void end(picture pic=currentpicture) -{ - if(!latex() || !pdf()) return; - tex(pic,"\end{ocg}"); - layer(pic); -} |