def testReadGlue2(self): s = TeX() s.input(r'6pt plus 2pt minus 2pt') i = s.readGlue() assert i.pt == 6, i.pt assert i.stretch.pt == 2, i.stretch.pt assert i.shrink.pt == 2, i.shrink.pt t = TeX() t.input(r'6pt plus 2pt minus 2pt 1.2pt plus -1.fil-1.234pt\foo') i = t.readGlue() j = t.readGlue() k = t.readGlue() # print i.source assert i.pt == 6, i.pt assert i.stretch.pt == 2, i.stretch.pt assert i.shrink.pt == 2, i.shrink.pt # print j.source assert j.pt == 1.2, i.pt assert j.stretch.fil == -1, j.stretch.fil assert j.shrink is None # print k.source assert k.pt == -1.234, k.pt assert k.stretch is None assert k.shrink is None tokens = [x for x in t.itertokens()] assert tokens == [EscapeSequence('foo')], tokens
def squash_latex(inp, out, blobs_dir, options, helper=None): " transforms LaTeX file" if helper is None: helper = squash_helper_base() if not os.path.isabs(inp): inp = osjoin(blobs_dir, inp) thetex = TeX() thetex.input(open(inp), Tokenizer=TokenizerPassThru.TokenizerPassThru) if isinstance(out, str): if not os.path.isabs(out): out = osjoin(blobs_dir, out) out = open(out, 'w') itertokens = thetex.itertokens() squash_recurse(out, thetex, itertokens, options, helper) return helper
def reparse_metadata(inp, metadata, blobs_dir, options): " reparse metadata of LaTeX file" # from .transform import squash_helper_reparse_metadata helper = squash_helper_reparse_metadata(blobs_dir, metadata, options) from ColDoc.latex import environments_we_wont_latex if metadata.environ not in environments_we_wont_latex: helper.input_macros_with_parameters += options['split_graphic'] # if not os.path.isabs(inp): inp = osjoin(blobs_dir, inp) thetex = TeX() mydocument = thetex.ownerDocument mycontext = mydocument.context # # give it some context mycontext.loadPackage(thetex, 'article.cls', {}) #if args.split_sections: # mycontext.newcommand('section',1,r'\section{#1}') # mycontext.newcommand('subsection',1,r'\subsection{#1}') for name in options['metadata_command']: d = '\\' + name + '{#1}' #mycontext.newcommand(name, n, d) n = 1 newclass = type(name, (plasTeX.NewCommand, ), { 'nargs': n, 'opt': None, 'definition': d }) assert newclass.nargs == n mycontext.addGlobal(name, newclass) # thetex.input(open(inp), Tokenizer=TokenizerPassThru.TokenizerPassThru) out = io.StringIO() itertokens = thetex.itertokens() squash_recurse(out, thetex, itertokens, options, helper) # a = osjoin(os.path.dirname(inp), '.back_map.pickle') pickle.dump( helper.back_map, open(a, 'wb'), ) # return helper.back_map, helper.metadata