def handle_proof(self, tag: QqTag) -> str: """ Uses tags: proof, label, outline, of Examples: \proof Here is the proof \proof \of theorem \ref{thm:1} Now we pass to proof of theorem \ref{thm:1} :param tag: :return: HTML of proof """ doc, html, text = Doc().tagtext() with html("div", klass="env env__proof"): if tag.find("label"): doc.attr(id=self.label2id(tag._label.value)) with html("span", klass="env-title env-title__proof"): if tag.exists("outline"): proofline = 'Proof outline' else: proofline = 'Proof' doc.asis(join_nonempty(self.localize(proofline), self.format(tag.find("of"), blanks_to_pars=False)).rstrip()+".") doc.asis(rstrip_p(" " + self.format(tag, blanks_to_pars=True))) doc.asis("<span class='end-of-proof'>∎</span>") return doc.getvalue()+"\n<p>"
def handle_proof(self, tag: QqTag) -> str: """ Uses tags: proof, label, outline, of Examples: \proof Here is the proof \proof \of theorem \ref{thm:1} Now we pass to proof of theorem \ref{thm:1} :param tag: :return: HTML of proof """ doc, html, text = Doc().tagtext() with html("div", klass="env env__proof"): if tag.find("label"): doc.attr(id=self.label2id(tag._label.value)) with html("span", klass="env-title env-title__proof"): if tag.exists("outline"): proofline = 'Proof outline' else: proofline = 'Proof' doc.asis( join_nonempty( self.localize(proofline), self.format(tag.find("of"), blanks_to_pars=False)).rstrip() + ".") doc.asis(rstrip_p(" " + self.format(tag, blanks_to_pars=True))) doc.asis("<span class='end-of-proof'>∎</span>") return doc.getvalue() + "\n<p>"
def handle_h(self, tag: QqTag) -> str: """ Uses tags: h1, h2, h3, h4, label, number Example: \h1 This is first header \h2 This is the second header \label{sec:second} :param tag: :return: """ doc, html, text = Doc().tagtext() with html(tag.name): doc.attr(id=self.tag_id(tag)) if tag.find("number"): with html("span", klass="section__number"): with html("a", href="#" + self.tag_id(tag), klass="section__number"): text(tag._number.value) text(self.format(tag, blanks_to_pars=False)) ret = doc.getvalue() if tag.next() and isinstance(tag.next(), str): ret += "<p>" return doc.getvalue()
def handle_h(self, tag: QqTag) -> str: """ Uses tags: h1, h2, h3, h4, label, number Example: \h1 This is first header \h2 This is the second header \label{sec:second} :param tag: :return: """ doc, html, text = Doc().tagtext() with html(tag.name): doc.attr(id=self.tag_id(tag)) if tag.find("number"): with html("span", klass="section__number"): with html("a", href="#"+self.tag_id(tag), klass="section__number"): text(tag._number.value) text(self.format(tag, blanks_to_pars=False)) ret = doc.getvalue() if tag.next() and isinstance(tag.next(), str): ret += "<p>" return doc.getvalue()
def handle_figure(self, tag: QqTag) -> str: """ Currently, only python-generated figures and plotly figures are supported. Example: \figure \label fig:figure \pythonfigure plt.plot([1, 2, 3], [1, 4, 9]) \caption Some figure Uses tags: figure, label, caption, number, showcode, collapsed :param tag: QqTag :return: HTML of figure """ doc, html, text = Doc().tagtext() subtags = ['pythonfigure', 'plotly', 'rawhtml'] langs = { 'pythonfigure': 'python', 'plotly': 'python', 'rawhtml': 'html' } with html("div", klass="figure"): if tag.find("label"): doc.attr(id=self.label2id(tag._label.value)) label = tag._label.value else: label = None for child in tag: if isinstance(child, QqTag): if child.name in subtags: if tag.exists("showcode"): doc.asis( self.showcode( child, collapsed=tag.exists("collapsed"), lang=langs.get(child.name))) doc.asis(self.handle(child)) elif child.name == 'caption': with html("div", klass="figure_caption"): if label is not None: with html("a", klass="figure_caption_anchor", href="#" + self.label2id(label)): text( join_nonempty(self.localize("Fig."), tag.get("number"))) text(": ") else: text( join_nonempty(self.localize("Fig."), tag.get("number")) + ": ") doc.asis(self.format(child, blanks_to_pars=True)) return doc.getvalue()
def handle_equation(self, tag: QqTag) -> str: """ Uses tags: equation, number, label Example: \equation \label eq:first x^2 + y^2 = z^2 :param tag: :return: """ doc, html, text = Doc().tagtext() with html("div", klass="latex_equation"): text("\\[\n") text("\\begin{equation}\n") if tag.find('number'): text("\\tag{{{}}}\n".format(tag._number.value)) if tag.find('label'): doc.attr(id=self.label2id(tag._label.value)) text(self.format(tag, blanks_to_pars=False)) text("\\end{equation}\n") text("\\]\n") return doc.getvalue()
def test_qqtag_accessors(self): q = QqTag('a', [ QqTag('b', 'hello'), QqTag('c', 'world'), QqTag('b', 'this'), QqTag('--+-', [QqTag('b', 'way'), "this"]) ]) self.assertEqual(q._b.value, 'hello') self.assertEqual(q._c.value, 'world') self.assertEqual([b.as_list() for b in q('b')], [['b', 'hello'], ['b', 'this']]) self.assertEqual(q.find('--+-')._b.value, 'way') self.assertEqual(q[0].value, 'hello') self.assertEqual(q[1].value, 'world') self.assertEqual(q[3][0].value, 'way')
def test_qqtag_accessors(self): q = QqTag('a', [ QqTag('b', 'hello'), QqTag('c', 'world'), QqTag('b', 'this'), QqTag('--+-', [ QqTag('b', 'way'), "this" ])]) self.assertEqual(q._b.value, 'hello') self.assertEqual(q._c.value, 'world') self.assertEqual([b.as_list() for b in q('b')], [['b', 'hello'], ['b', 'this']]) self.assertEqual(q.find('--+-')._b.value, 'way') self.assertEqual(q[0].value, 'hello') self.assertEqual(q[1].value, 'world') self.assertEqual(q[3][0].value, 'way')
def handle_figure(self, tag: QqTag) -> str: """ Currently, only python-generated figures and plotly figures are supported. Example: \figure \label fig:figure \pythonfigure plt.plot([1, 2, 3], [1, 4, 9]) \caption Some figure Uses tags: figure, label, caption, number, showcode, collapsed :param tag: QqTag :return: HTML of figure """ doc, html, text = Doc().tagtext() subtags = ['pythonfigure', 'plotly', 'rawhtml'] langs = {'pythonfigure': 'python', 'plotly': 'python', 'rawhtml': 'html'} with html("div", klass="figure"): if tag.find("label"): doc.attr(id=self.label2id(tag._label.value)) label = tag._label.value else: label = None for child in tag: if isinstance(child, QqTag): if child.name in subtags: if tag.exists("showcode"): doc.asis(self.showcode(child, collapsed=tag.exists("collapsed"), lang = langs.get(child.name))) doc.asis(self.handle(child)) elif child.name == 'caption': with html("div", klass="figure_caption"): if label is not None: with html("a", klass="figure_caption_anchor", href="#" + self.label2id(label)): text(join_nonempty(self.localize("Fig."), tag.get("number"))) text(": ") else: text(join_nonempty(self.localize("Fig."), tag.get("number"))+": ") doc.asis(self.format(child, blanks_to_pars=True)) return doc.getvalue()