Customizing output ================== .. index:: customizing .. currentmodule:: pweave Pweave has several output formats and you can customize the output with chunk options. However you may want to customize the output for different purposes. The simplest form of customization is to update the *format dictionary* of an existing format. It sets chunk delimiters, output extension and figure format and width. You can do this easily with :py:class:`Pweb` class. Below is a small demonstration using ReST Pweave document `ma.mdw <_static/ma.mdw>`_. Let's start by creating an instance of :py:class:`Pweb` class with markdown document: .. code-block:: python from pweave import * from pprint import pprint doc = Pweb('ma.mdw', doctype = "pandoc") :: ---------------------------------------------------------------------------FileNotFoundError Traceback (most recent call last)~/anaconda3/lib/python3.6/site- packages/pweave/readers.py in read_file_or_url(source) 15 try: ---> 16 codefile = io.open(source, 'r', encoding='utf-8') 17 contents = codefile.read() FileNotFoundError: [Errno 2] No such file or directory: 'ma.mdw' During handling of the above exception, another exception occurred: ValueError Traceback (most recent call last) in () ----> 1 doc = Pweb('ma.mdw', doctype = "pandoc") ~/anaconda3/lib/python3.6/site-packages/pweave/pweb.py in __init__(self, source, doctype, informat, kernel, output, figdir, mimetype) 68 69 self.setformat(doctype) ---> 70 self.read(reader = informat) 71 72 def _setwd(self): ~/anaconda3/lib/python3.6/site-packages/pweave/pweb.py in read(self, string, basename, reader) 106 107 if string is None: --> 108 self.reader = Reader(file=self.source) 109 else: 110 self.reader = self.Reader(string=string) ~/anaconda3/lib/python3.6/site-packages/pweave/readers.py in __init__(self, file, string) 36 # Get input from string or 37 if file is not None: ---> 38 self.rawtext = read_file_or_url(self.source) 39 else: 40 self.rawtext = string ~/anaconda3/lib/python3.6/site-packages/pweave/readers.py in read_file_or_url(source) 18 codefile.close() 19 except IOError: ---> 20 r = request.urlopen(source) 21 contents = r.read().decode("utf-8") 22 r.close() ~/anaconda3/lib/python3.6/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context) 221 else: 222 opener = _opener --> 223 return opener.open(url, data, timeout) 224 225 def install_opener(opener): ~/anaconda3/lib/python3.6/urllib/request.py in open(self, fullurl, data, timeout) 509 # accept a URL or a Request object 510 if isinstance(fullurl, str): --> 511 req = Request(fullurl, data) 512 else: 513 req = fullurl ~/anaconda3/lib/python3.6/urllib/request.py in __init__(self, url, data, headers, origin_req_host, unverifiable, method) 327 origin_req_host=None, unverifiable=False, 328 method=None): --> 329 self.full_url = url 330 self.headers = {} 331 self.unredirected_hdrs = {} ~/anaconda3/lib/python3.6/urllib/request.py in full_url(self, url) 353 self._full_url = unwrap(url) 354 self._full_url, self.fragment = splittag(self._full_url) --> 355 self._parse() 356 357 @full_url.deleter ~/anaconda3/lib/python3.6/urllib/request.py in _parse(self) 382 self.type, rest = splittype(self._full_url) 383 if self.type is None: --> 384 raise ValueError("unknown url type: %r" % self.full_url) 385 self.host, self.selector = splithost(rest) 386 if self.host: ValueError: unknown url type: 'ma.mdw' Have a look at what the format dictionary contains: .. code-block:: python pprint(doc.getformat()) :: ---------------------------------------------------------------------------NameError Traceback (most recent call last) in () ----> 1 pprint(doc.getformat()) NameError: name 'doc' is not defined The names of the dictionary elements are hopefully self explanatory. You'll notice that you can specify start and end tag for code, results and term as well as block indent. You can change the formats using :py:meth:`Pweb.updateformat` method. Let's set the default figure width to 10cm and figure format to pdf and :py:attr:`figfmt` specifies what format is used in the output. .. code-block:: python doc.updateformat({'width' : '10cm', 'figfmt' : '.pdf'}) :: ---------------------------------------------------------------------------NameError Traceback (most recent call last) in () ----> 1 doc.updateformat({'width' : '10cm', 'figfmt' : '.pdf'}) NameError: name 'doc' is not defined And after setting options weave and tangle the document: .. code-block:: python doc.weave() :: ---------------------------------------------------------------------------NameError Traceback (most recent call last) in () ----> 1 doc.weave() NameError: name 'doc' is not defined .. code-block:: python doc.tangle() :: ---------------------------------------------------------------------------NameError Traceback (most recent call last) in () ----> 1 doc.tangle() NameError: name 'doc' is not defined View this page as `Pweave document <_static/customizing.rstw>`_ .