<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - answers and comments on Question, How do I extract elements from a string</title>
    <link>http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Sat, 13 Jun 2026 22:04:10 GMT</lastBuildDate>
    <pubDate>Sat, 13 Jun 2026 22:04:10 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest answers and comments added to the Question, How do I extract elements from a string</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - answers and comments on Question, How do I extract elements from a string</title>
      <link>http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String</link>
    </image>
    <item>
      <title>A first step</title>
      <link>http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String?ref=Feed:MaplePrimes:How do I extract elements from a string:Comments#answer143733</link>
      <itunes:summary>&lt;p&gt;(A much-simplified version of what I posted earlier.)&lt;/p&gt;
&lt;p&gt;List the positions of all substrings of the given string that match a chemical element symbol.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;BreakBad:= module()&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uses ST= StringTools, ST_PD= StringTools:-PatternDictionary, SC= ScientificConstants;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#PatternDictionary is case sensitive. Thus, all text is uppercased for searching.&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#Periodic (remember) Table of Elements:&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#Map from uppercase elem symbs to standard capitalized symbs.&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PTE:= proc(EL::string) option remember; ST:-Capitalize(EL) end proc,&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#Dictionary of uppercased elem symbs.&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dict:= ST_PD:-Create(ST:-UpperCase ~ ([SC:-GetElements()])), &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#ST_PD:-Search returns seq of 2-member lists, with 2nd member &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#being the dict. id# of found pattern. RetStr is operator that turns that id#&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#into standard elem symbol.&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;RetStr:= curry(applyop, curry(PTE@ST_PD:-Get, Dict), 2)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;export ModuleApply:= (S::string)-&amp;gt; RetStr ~ ([ST_PD:-Search](Dict, ST:-UpperCase(S)));&lt;br&gt;end module;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Testing it:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BreakBad("The Cat Molly");&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[[2, "H"], [1, "Th"], [2, "He"], [5, "C"], [5, "Ca"], [6, "At"], [10, "O"], [9, "Mo"], [13, "Y"]]&lt;/p&gt;
&lt;p&gt;So this says that "H" occurs at position 2, "At" at position 6, etc.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For next step, we need to decide what to highlight because there are overlapping choices. For the simple example string above we have 9 matches; it would be quite a mess to highlight them all. Perhaps we should select at random. For the final display, I'm considering doing it as a &lt;strong&gt;textplot&lt;/strong&gt;. That way highlights can be done with color easily under programmatic control&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;(A much-simplified version of what I posted earlier.)&lt;/p&gt;
&lt;p&gt;List the positions of all substrings of the given string that match a chemical element symbol.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;BreakBad:= module()&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uses ST= StringTools, ST_PD= StringTools:-PatternDictionary, SC= ScientificConstants;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#PatternDictionary is case sensitive. Thus, all text is uppercased for searching.&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#Periodic (remember) Table of Elements:&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#Map from uppercase elem symbs to standard capitalized symbs.&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PTE:= proc(EL::string) option remember; ST:-Capitalize(EL) end proc,&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#Dictionary of uppercased elem symbs.&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dict:= ST_PD:-Create(ST:-UpperCase ~ ([SC:-GetElements()])), &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#ST_PD:-Search returns seq of 2-member lists, with 2nd member &lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#being the dict. id# of found pattern. RetStr is operator that turns that id#&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;#into standard elem symbol.&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;RetStr:= curry(applyop, curry(PTE@ST_PD:-Get, Dict), 2)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;export ModuleApply:= (S::string)-&amp;gt; RetStr ~ ([ST_PD:-Search](Dict, ST:-UpperCase(S)));&lt;br&gt;end module;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Testing it:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BreakBad("The Cat Molly");&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[[2, "H"], [1, "Th"], [2, "He"], [5, "C"], [5, "Ca"], [6, "At"], [10, "O"], [9, "Mo"], [13, "Y"]]&lt;/p&gt;
&lt;p&gt;So this says that "H" occurs at position 2, "At" at position 6, etc.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For next step, we need to decide what to highlight because there are overlapping choices. For the simple example string above we have 9 matches; it would be quite a mess to highlight them all. Perhaps we should select at random. For the final display, I'm considering doing it as a &lt;strong&gt;textplot&lt;/strong&gt;. That way highlights can be done with color easily under programmatic control&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;/p&gt;</description>
      <guid>143733</guid>
      <pubDate>Thu, 21 Feb 2013 22:59:55 Z</pubDate>
      <itunes:author>Carl Love</itunes:author>
      <author>Carl Love</author>
    </item>
    <item>
      <title>convention</title>
      <link>http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String?ref=Feed:MaplePrimes:How do I extract elements from a string:Comments#answer143960</link>
      <itunes:summary>&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String#comment143894"&gt;@Carl Love&lt;/a&gt;&amp;nbsp;made the point about the searches needing to be case sensitive....&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String#comment143882"&gt;@Joe Riel&lt;/a&gt; thx for worksheet. Sorry to bang on about this. maybe i didn't fully explain the nuances of the problem.&lt;/p&gt;
&lt;p&gt;Given the convention should be&lt;/p&gt;
&lt;p&gt;1) one element per word (identified randomly or otherwise- if it exists)&lt;/p&gt;
&lt;p&gt;2) keep the original case of the word, except for the 1 or 2 letter element (bold),&lt;/p&gt;
&lt;p&gt;example:&lt;/p&gt;
&lt;p&gt;i/p: "anna aaron dean Mitte zt michael sherry&amp;nbsp;au &amp;nbsp;Lynne"&lt;/p&gt;
&lt;p&gt;o/p: "an&lt;strong&gt;Na&lt;/strong&gt; a&lt;strong&gt;Ar&lt;/strong&gt;on dea&lt;strong&gt;N &lt;/strong&gt;Mit&lt;strong&gt;Te &lt;/strong&gt;zt mic&lt;strong&gt;H&lt;/strong&gt;ael sherr&lt;strong&gt;Y&amp;nbsp;Au&amp;nbsp;&amp;nbsp;&lt;/strong&gt;Lyn&lt;strong&gt;Ne"&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;do you mind modifying your workbook to reflect the above?&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String#comment143894"&gt;@Carl Love&lt;/a&gt;&amp;nbsp;made the point about the searches needing to be case sensitive....&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String#comment143882"&gt;@Joe Riel&lt;/a&gt; thx for worksheet. Sorry to bang on about this. maybe i didn't fully explain the nuances of the problem.&lt;/p&gt;
&lt;p&gt;Given the convention should be&lt;/p&gt;
&lt;p&gt;1) one element per word (identified randomly or otherwise- if it exists)&lt;/p&gt;
&lt;p&gt;2) keep the original case of the word, except for the 1 or 2 letter element (bold),&lt;/p&gt;
&lt;p&gt;example:&lt;/p&gt;
&lt;p&gt;i/p: "anna aaron dean Mitte zt michael sherry&amp;nbsp;au &amp;nbsp;Lynne"&lt;/p&gt;
&lt;p&gt;o/p: "an&lt;strong&gt;Na&lt;/strong&gt; a&lt;strong&gt;Ar&lt;/strong&gt;on dea&lt;strong&gt;N &lt;/strong&gt;Mit&lt;strong&gt;Te &lt;/strong&gt;zt mic&lt;strong&gt;H&lt;/strong&gt;ael sherr&lt;strong&gt;Y&amp;nbsp;Au&amp;nbsp;&amp;nbsp;&lt;/strong&gt;Lyn&lt;strong&gt;Ne"&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;do you mind modifying your workbook to reflect the above?&lt;/p&gt;</description>
      <guid>143960</guid>
      <pubDate>Wed, 27 Feb 2013 17:08:21 Z</pubDate>
      <itunes:author>brian bovril</itunes:author>
      <author>brian bovril</author>
    </item>
    <item>
      <title>MathML</title>
      <link>http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String?ref=Feed:MaplePrimes:How do I extract elements from a string:Comments#comment143762</link>
      <itunes:summary>&lt;p&gt;Nice start.&amp;nbsp; Rather than using textplot I think using Maple's mathml formatting might be a better approach. Here I've added some functionality to your module to do that. The output will only display properly in Standard Maple.&amp;nbsp; I used a crude method to avoid collisions in the matches, it can be improved.&lt;/p&gt;
&lt;pre&gt;BreakBad := module()&lt;br&gt;&lt;br&gt;uses ST = StringTools&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , ST_PD= StringTools:-PatternDictionary&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , SC= ScientificConstants&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , LT = ListTools&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;br&gt;&lt;br&gt;export ModuleApply;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # PatternDictionary is case sensitive. Thus, all text is uppercased for searching.&lt;br&gt;&lt;br&gt;local Dict, Format, RetStr;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Periodic (remember) Table of Elements:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Map from uppercase elem symbs to standard capitalized symbs.&lt;br&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; PTE := proc(EL::string) option remember; ST:-Capitalize(EL) end proc&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Dictionary of uppercased elem symbs.&lt;br&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; , Dict:= ST_PD:-Create(ST:-UpperCase ~ ([SC:-GetElements()]))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dict := ST_PD:-Create(map2(cat,"",[SC:-GetElements()]));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ST_PD:-Search returns seq of 2-member lists, with 2nd member&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # being the dict. id# of found pattern. RetStr is operator that turns that id#&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # into standard elem symbol.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RetStr := curry(applyop, curry(ST_PD:-Get, Dict), 2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Format := proc(txt,wt)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local s;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if txt = "" then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif searchtext(" ",txt)&amp;lt;&amp;gt;0 then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Spaces at the ends of symbols are elided.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # This avoids that by converting all spaces&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # to an invisible times operator.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ST:-Join([seq(`if`(s=""&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "mo(&amp;amp;InvisibleTimes;)"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , thisproc(s,wt)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ), s = ST:-Split(txt))]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , ",");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sprintf("mi(\"%s\",fontweight=\"%s\")", txt, wt);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end proc;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ModuleApply := proc(S::string)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local bold,e,elems,mathml,plain,rngs,i,r;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elems := RetStr ~ ([ST_PD:-Search](Dict, S));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elems := sort(elems, (a,b) -&amp;gt; evalb(a[1]&amp;lt;=b[1]));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elems := LT:-MakeUnique(elems, 1, (x,y)-&amp;gt;x[1]=y[1]);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elems := [[1,""], elems[],[0,""]];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rngs := [seq(op([i,1],elems)+length(op([i,2],elems))..op([i+1,1],elems)-1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , i = 1..nops(elems)-1)];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bold := [seq(Format(e[2],"bold"), e=elems)];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plain := [seq(Format(S[r],"normal"), r=rngs)];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mathml := remove(`=`, LT:-Interleave(bold,plain), "");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nprintf("#mrow(%s)", ST:-Join(mathml, ","));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end proc;&lt;br&gt;&lt;br&gt;end module:&lt;br&gt;&lt;br&gt;&lt;/pre&gt;</itunes:summary>
      <description>&lt;p&gt;Nice start.&amp;nbsp; Rather than using textplot I think using Maple's mathml formatting might be a better approach. Here I've added some functionality to your module to do that. The output will only display properly in Standard Maple.&amp;nbsp; I used a crude method to avoid collisions in the matches, it can be improved.&lt;/p&gt;
&lt;pre&gt;BreakBad := module()&lt;br&gt;&lt;br&gt;uses ST = StringTools&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , ST_PD= StringTools:-PatternDictionary&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , SC= ScientificConstants&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , LT = ListTools&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;br&gt;&lt;br&gt;export ModuleApply;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # PatternDictionary is case sensitive. Thus, all text is uppercased for searching.&lt;br&gt;&lt;br&gt;local Dict, Format, RetStr;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Periodic (remember) Table of Elements:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Map from uppercase elem symbs to standard capitalized symbs.&lt;br&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; PTE := proc(EL::string) option remember; ST:-Capitalize(EL) end proc&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Dictionary of uppercased elem symbs.&lt;br&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; , Dict:= ST_PD:-Create(ST:-UpperCase ~ ([SC:-GetElements()]))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dict := ST_PD:-Create(map2(cat,"",[SC:-GetElements()]));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ST_PD:-Search returns seq of 2-member lists, with 2nd member&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # being the dict. id# of found pattern. RetStr is operator that turns that id#&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # into standard elem symbol.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RetStr := curry(applyop, curry(ST_PD:-Get, Dict), 2);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Format := proc(txt,wt)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local s;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if txt = "" then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif searchtext(" ",txt)&amp;lt;&amp;gt;0 then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Spaces at the ends of symbols are elided.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # This avoids that by converting all spaces&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # to an invisible times operator.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ST:-Join([seq(`if`(s=""&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "mo(&amp;amp;InvisibleTimes;)"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , thisproc(s,wt)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ), s = ST:-Split(txt))]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , ",");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sprintf("mi(\"%s\",fontweight=\"%s\")", txt, wt);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end proc;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ModuleApply := proc(S::string)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local bold,e,elems,mathml,plain,rngs,i,r;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elems := RetStr ~ ([ST_PD:-Search](Dict, S));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elems := sort(elems, (a,b) -&amp;gt; evalb(a[1]&amp;lt;=b[1]));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elems := LT:-MakeUnique(elems, 1, (x,y)-&amp;gt;x[1]=y[1]);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elems := [[1,""], elems[],[0,""]];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rngs := [seq(op([i,1],elems)+length(op([i,2],elems))..op([i+1,1],elems)-1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , i = 1..nops(elems)-1)];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bold := [seq(Format(e[2],"bold"), e=elems)];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plain := [seq(Format(S[r],"normal"), r=rngs)];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mathml := remove(`=`, LT:-Interleave(bold,plain), "");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nprintf("#mrow(%s)", ST:-Join(mathml, ","));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end proc;&lt;br&gt;&lt;br&gt;end module:&lt;br&gt;&lt;br&gt;&lt;/pre&gt;</description>
      <guid>143762</guid>
      <pubDate>Fri, 22 Feb 2013 11:19:38 Z</pubDate>
      <itunes:author>Joe Riel</itunes:author>
      <author>Joe Riel</author>
    </item>
    <item>
      <title>Breaking Bad</title>
      <link>http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String?ref=Feed:MaplePrimes:How do I extract elements from a string:Comments#comment143768</link>
      <itunes:summary>&lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;
&lt;form name="worksheet_form"&gt;&amp;nbsp;Thanks for help Joe and Carl&lt;/form&gt;
&lt;p&gt;Joe, I couldn't get the code to work in M16. maybe I copied it incorrecty....&lt;/p&gt;
&lt;p&gt;&lt;a href="/view.aspx?sf=143768/454438/element_16.mw"&gt;element_16.mw&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;This is the effect I was trying to achieve (bolding the elements)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=PVXYgRt63xc"&gt;http://www.youtube.com/watch?v=PVXYgRt63xc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Possibly&amp;nbsp;bolding/enlarding a random element per word. eg "cat", would radomly bold either the C, the&amp;nbsp;Ca, or the&amp;nbsp;At.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;
&lt;form name="worksheet_form"&gt;&amp;nbsp;Thanks for help Joe and Carl&lt;/form&gt;
&lt;p&gt;Joe, I couldn't get the code to work in M16. maybe I copied it incorrecty....&lt;/p&gt;
&lt;p&gt;&lt;a href="/view.aspx?sf=143768/454438/element_16.mw"&gt;element_16.mw&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;This is the effect I was trying to achieve (bolding the elements)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=PVXYgRt63xc"&gt;http://www.youtube.com/watch?v=PVXYgRt63xc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Possibly&amp;nbsp;bolding/enlarding a random element per word. eg "cat", would radomly bold either the C, the&amp;nbsp;Ca, or the&amp;nbsp;At.&lt;/p&gt;</description>
      <guid>143768</guid>
      <pubDate>Fri, 22 Feb 2013 18:24:06 Z</pubDate>
      <itunes:author>brian bovril</itunes:author>
      <author>brian bovril</author>
    </item>
    <item>
      <title>1D</title>
      <link>http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String?ref=Feed:MaplePrimes:How do I extract elements from a string:Comments#comment143778</link>
      <itunes:summary>&lt;p&gt;&lt;a href="http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String#comment143768"&gt;@brian bovril&lt;/a&gt;&amp;nbsp;The 2D parser is the issue; I'll track that down and file a bug when I get a chance. To work-around it, copy and paste the original code (above) into a Maple input region (1D). &amp;nbsp;The code is fine.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;&lt;a href="http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String#comment143768"&gt;@brian bovril&lt;/a&gt;&amp;nbsp;The 2D parser is the issue; I'll track that down and file a bug when I get a chance. To work-around it, copy and paste the original code (above) into a Maple input region (1D). &amp;nbsp;The code is fine.&lt;/p&gt;</description>
      <guid>143778</guid>
      <pubDate>Fri, 22 Feb 2013 21:14:24 Z</pubDate>
      <itunes:author>Joe Riel</itunes:author>
      <author>Joe Riel</author>
    </item>
    <item>
      <title>maple worksheet</title>
      <link>http://www.mapleprimes.com/questions/143727-How-Do-I-Extract-Elements-From-A-String?ref=Feed:MaplePrimes:How do I extract elements from a string:Comments#comment143840</link>
      <itunes:summary>&lt;p&gt;Joe Riel, would you be so kind as to post your 1D worksheet here, because I can't get it to work&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Joe Riel, would you be so kind as to post your 1D worksheet here, because I can't get it to work&lt;/p&gt;</description>
      <guid>143840</guid>
      <pubDate>Sun, 24 Feb 2013 17:52:01 Z</pubDate>
      <itunes:author>brian bovril</itunes:author>
      <author>brian bovril</author>
    </item>
  </channel>
</rss>