<aname="L2"></a><ttclass="py-lineno"> 2</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># This file is part of pybliographer</tt></tt>
<aname="L7"></a><ttclass="py-lineno"> 7</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># This program is free software; you can redistribute it and/or</tt></tt>
<aname="L8"></a><ttclass="py-lineno"> 8</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># modify it under the terms of the GNU General Public License</tt></tt>
<aname="L9"></a><ttclass="py-lineno"> 9</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># as published by the Free Software Foundation; either version 2 </tt></tt>
<aname="L10"></a><ttclass="py-lineno"> 10</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># of the License, or (at your option) any later version.</tt></tt>
<aname="L12"></a><ttclass="py-lineno"> 12</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># This program is distributed in the hope that it will be useful,</tt></tt>
<aname="L13"></a><ttclass="py-lineno"> 13</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># but WITHOUT ANY WARRANTY; without even the implied warranty of</tt></tt>
<aname="L14"></a><ttclass="py-lineno"> 14</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt></tt>
<aname="L15"></a><ttclass="py-lineno"> 15</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># GNU General Public License for more details. </tt></tt>
<aname="L17"></a><ttclass="py-lineno"> 17</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># You should have received a copy of the GNU General Public License</tt></tt>
<aname="L18"></a><ttclass="py-lineno"> 18</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># along with this program; if not, write to the Free Software</tt></tt>
<aname="L19"></a><ttclass="py-lineno"> 19</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</tt></tt>
<aname="L24"></a><ttclass="py-lineno"> 24</tt><ttclass="py-line"><ttclass="py-docstring">Handles decoding of @string substitution and of LaTeX commands.</tt></tt>
<aname="L26"></a><ttclass="py-lineno"> 26</tt><ttclass="py-line"><ttclass="py-docstring">The @string substitution is a one-way operation, as it is probably not</tt></tt>
<aname="L27"></a><ttclass="py-lineno"> 27</tt><ttclass="py-line"><ttclass="py-docstring">possible to do something better, except in some restricted cases</tt></tt>
<aname="L28"></a><ttclass="py-lineno"> 28</tt><ttclass="py-line"><ttclass="py-docstring">(dates for instance). Commands, on the other side, can be reencoded</tt></tt>
<aname="L29"></a><ttclass="py-lineno"> 29</tt><ttclass="py-line"><ttclass="py-docstring">when they represent unicode characters for instance.</tt></tt>
<aname="L57"></a><ttclass="py-lineno"> 57</tt><ttclass="py-line"><ttclass="py-comment"># There are a few special cases where one wants to accent a command, like:</tt></tt>
<aname="L94"></a><ttclass="py-lineno"> 94</tt><ttclass="py-line"><ttclass="py-comment"># The \char macro is special: \char125 -> character with ascii code 125</tt></tt>
<aname="L107"></a><ttclass="py-lineno">107</tt><ttclass="py-line"><ttclass="py-comment"># we have found a known command. as a convenience, we fetch</tt></tt>
<aname="L108"></a><ttclass="py-lineno">108</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># the required number of arguments and pass it to the actual</tt></tt>
<aname="L109"></a><ttclass="py-lineno">109</tt><ttclass="py-line"><ttclass="py-comment"></tt><ttclass="py-comment"># function handling the command.</tt></tt>