From f62443c1f2c678be0b6ff6ce58618f6e3b4cdfa8 Mon Sep 17 00:00:00 2001 From: "Vladimir V. Kisil" Date: Tue, 12 Sep 2017 23:07:59 +0200 Subject: [PATCH 1/1] Add LaTeX pretty-print for function derivatives. --- ginac/fderivative.cpp | 18 ++++++++++++++++++ ginac/fderivative.h | 1 + 2 files changed, 19 insertions(+) diff --git a/ginac/fderivative.cpp b/ginac/fderivative.cpp index 494b1047..30157c44 100644 --- a/ginac/fderivative.cpp +++ b/ginac/fderivative.cpp @@ -31,6 +31,7 @@ namespace GiNaC { GINAC_IMPLEMENT_REGISTERED_CLASS_OPT(fderivative, function, print_func(&fderivative::do_print). + print_func(&fderivative::do_print_latex). print_func(&fderivative::do_print_csrc). print_func(&fderivative::do_print_tree)) @@ -111,6 +112,23 @@ void fderivative::do_print(const print_context & c, unsigned level) const printseq(c, '(', ',', ')', exprseq::precedence(), function::precedence()); } +void fderivative::do_print_latex(const print_context & c, unsigned level) const +{ + int order=1; + c.s << "\\partial_{"; + auto i = parameter_set.begin(), end = parameter_set.end(); + --end; + while (i != end) { + ++order; + c.s << *i++ << ","; + } + c.s << *i << "}"; + if (order>1) + c.s << "^{" << order << "}"; + c.s << "(" << registered_functions()[serial].TeX_name << ")"; + printseq(c, '(', ',', ')', exprseq::precedence(), function::precedence()); +} + void fderivative::do_print_csrc(const print_csrc & c, unsigned level) const { c.s << "D_"; diff --git a/ginac/fderivative.h b/ginac/fderivative.h index e856797d..5ab41971 100644 --- a/ginac/fderivative.h +++ b/ginac/fderivative.h @@ -76,6 +76,7 @@ public: const paramset& derivatives() const; protected: void do_print(const print_context & c, unsigned level) const; + void do_print_latex(const print_context & c, unsigned level) const; void do_print_csrc(const print_csrc & c, unsigned level) const; void do_print_tree(const print_tree & c, unsigned level) const; -- 2.44.0