diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2015-01-01 09:13:04 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2015-08-27 13:43:31 (GMT) |
commit | 56987af3987f40ac77e70cd39ebbdac3702c1ce2 (patch) | |
tree | 441fe1be085e1e83c4a08f3e7ad2ab8681fec045 | |
parent | f16c156065ac8bc6242870c2ae701252b5d4f9b2 (diff) | |
download | Doxygen-56987af3987f40ac77e70cd39ebbdac3702c1ce2.zip Doxygen-56987af3987f40ac77e70cd39ebbdac3702c1ce2.tar.gz Doxygen-56987af3987f40ac77e70cd39ebbdac3702c1ce2.tar.bz2 |
Add mathjax support to template & context.
-rw-r--r-- | src/config.l | 6 | ||||
-rw-r--r-- | src/context.cpp | 13 | ||||
-rw-r--r-- | src/htmlgen.cpp | 6 | ||||
-rw-r--r-- | src/template.cpp | 20 | ||||
-rw-r--r-- | templates/html/htmlbase.tpl | 15 |
5 files changed, 47 insertions, 13 deletions
diff --git a/src/config.l b/src/config.l index 1bbe320..b158e5c 100644 --- a/src/config.l +++ b/src/config.l @@ -1198,6 +1198,12 @@ void Config::check() exit(1); } } + QCString &path = Config_getString("MATHJAX_RELPATH"); + if (!path.isEmpty() && path.at(path.length()-1)!='/') + { + path+="/"; + } + } // Test to see if LaTeX header is valid diff --git a/src/context.cpp b/src/context.cpp index 17229f7..f7e6ae2 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -370,13 +370,26 @@ class DoxygenContext::Private : public PropertyMapper { return TemplateVariant(dateToString(TRUE)); } + TemplateVariant maxJaxCodeFile() const + { + return m_cache.maxJaxCodeFile; + } Private() { //%% string version addProperty("version",this,&Private::version); //makeProperty(this,&Private::version)); //%% string date addProperty("date", this,&Private::date); + //%% string + addProperty("mathJaxCodeFile", this,&Private::maxJaxCodeFile); } + private: + struct Cachable + { + Cachable() { maxJaxCodeFile=fileToString(Config_getString("MATHJAX_CODEFILE")); } + QCString maxJaxCodeFile; + }; + mutable Cachable m_cache; }; //%% } diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index e6431e8..7908393 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -333,10 +333,6 @@ static QCString substituteHtmlKeywords(const QCString &s, if (mathJax) { QCString path = Config_getString("MATHJAX_RELPATH"); - if (!path.isEmpty() && path.at(path.length()-1)!='/') - { - path+="/"; - } if (path.isEmpty() || path.left(2)=="..") // relative path { path.prepend(relPath); @@ -364,7 +360,7 @@ static QCString substituteHtmlKeywords(const QCString &s, mathJaxJs += "\n"; } mathJaxJs += "</script>"; - mathJaxJs += "<script src=\"" + path + "MathJax.js\"></script>\n"; + mathJaxJs += "<script type=\"text/javascript\" src=\"" + path + "MathJax.js\"></script>\n"; } // first substitute generic keywords diff --git a/src/template.cpp b/src/template.cpp index ce9493b..e81ed17 100644 --- a/src/template.cpp +++ b/src/template.cpp @@ -1116,6 +1116,25 @@ class FilterGroupBy //-------------------------------------------------------------------- +/** @brief The implementation of the "relative" filter */ +class FilterRelative +{ + public: + static TemplateVariant apply(const TemplateVariant &v,const TemplateVariant &) + { + if (v.isValid() && v.type()==TemplateVariant::String && v.toString().left(2)=="..") + { + return TRUE; + } + else + { + return FALSE; + } + } +}; + +//-------------------------------------------------------------------- + /** @brief The implementation of the "paginate" filter */ class FilterPaginate { @@ -1416,6 +1435,7 @@ static TemplateFilterFactory::AutoRegister<FilterFlatten> fFlatten("flatten" static TemplateFilterFactory::AutoRegister<FilterDefault> fDefault("default"); static TemplateFilterFactory::AutoRegister<FilterPrepend> fPrepend("prepend"); static TemplateFilterFactory::AutoRegister<FilterGroupBy> fGroupBy("groupBy"); +static TemplateFilterFactory::AutoRegister<FilterRelative> fRelative("relative"); static TemplateFilterFactory::AutoRegister<FilterListSort> fListSort("listsort"); static TemplateFilterFactory::AutoRegister<FilterPaginate> fPaginate("paginate"); static TemplateFilterFactory::AutoRegister<FilterStripPath> fStripPath("stripPath"); diff --git a/templates/html/htmlbase.tpl b/templates/html/htmlbase.tpl index 2191186..5ee7f3e 100644 --- a/templates/html/htmlbase.tpl +++ b/templates/html/htmlbase.tpl @@ -41,13 +41,13 @@ {% if config.USE_MATHJAX %} <script type="text/x-mathjax-config"> MathJax.Hub.Config({ - extensions: ["tex2jax.js"], {# TODO: support MATHJAX_EXTENSIONS #} - jax: ["input/TeX","output/{{ config.MATHJAX_FORMAT }}"], + extensions: ["tex2jax.js"{% for ext in config.MATHJAX_EXTENSIONS %}, "{{ ext }}"{% endfor %}], + jax: ["input/TeX","output/{{ config.MATHJAX_FORMAT|default:'HTML-CSS' }}"], }); -{# TODO: support MATHJAX_CODEFILE #} +{{ doxygen.mathJaxCodeFile }} </script> -<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script> -{% endif %} +<script type="text/javascript" src="{{ config.MATHJAX_RELPATH }}{% if config.MATHJAX_RELPATH|relative %}{{ page.relPath }}{% endif %}MathJax.js"></script> +{% endif %}{# MathJax #} <link href="{{ page.relPath }}{{ config.HTML_STYLESHEET|default:'doxygen.css' }}" rel="stylesheet" type="text/css" /> {% if config.HTML_EXTRA_STYLESHEET %} <link href="{{ page.relPath }}{{ config.HTML_EXTRA_STYLESHEET }}" rel="stylesheet" type="text/css" /> @@ -120,7 +120,7 @@ <!-- end header part --> <!-- Generated by Doxygen {{ doxygen.version }} --> {% block search %} -{% if config.SEARCHENGINE %}{# TODO: can't we move this to the header? #} +{% if config.SEARCHENGINE %} <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "{{ page.relPath }}search",false,'{{ tr.search }}'); </script> @@ -163,14 +163,13 @@ $(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> -{# TODO: get search categories dynamically, since we don't know them here #} </div> -{% endif %} <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> +{% endif %} {% endblock %} <div class="header"> |