summaryrefslogtreecommitdiffstats
path: root/templates
diff options
context:
space:
mode:
Diffstat (limited to 'templates')
-rw-r--r--templates/html/htmlallmembers.tpl59
-rw-r--r--templates/html/htmlbase.tpl22
-rw-r--r--templates/html/htmlclass.tpl7
-rw-r--r--templates/html/htmlclasses.tpl2
-rw-r--r--templates/html/htmldir.tpl13
-rw-r--r--templates/html/htmlfile.tpl73
-rw-r--r--templates/html/htmlinlineclasses.tpl70
-rw-r--r--templates/html/htmljsnavtree.tpl3
-rw-r--r--templates/html/htmljssearchdata.tpl31
-rw-r--r--templates/html/htmljssearchindex.tpl15
-rw-r--r--templates/html/htmllayout.tpl25
-rw-r--r--templates/html/htmlmemdef.tpl14
-rw-r--r--templates/html/htmlmodule.tpl73
-rw-r--r--templates/html/htmlnamespace.tpl73
-rw-r--r--templates/html/htmlsearchresult.tpl27
-rw-r--r--templates/html/htmltabs.tpl2
-rw-r--r--templates/html/htmltypeconstraints.tpl2
-rw-r--r--templates/latex/doxygen.sty6
-rw-r--r--templates/latex/latexannotated.tpl9
-rw-r--r--templates/latex/latexclass.tpl114
-rw-r--r--templates/latex/latexfiles.tpl0
-rw-r--r--templates/latex/latexinclude.tpl32
-rw-r--r--templates/latex/latexlayout.tpl35
-rw-r--r--templates/latex/latexmakefile.tpl64
-rw-r--r--templates/latex/latexmodules.tpl0
-rw-r--r--templates/latex/latexnamespaces.tpl0
-rw-r--r--templates/latex/latexobjlink.tpl6
-rw-r--r--templates/latex/latexrefman.tpl227
-rw-r--r--templates/latex/latextypeconstraints.tpl12
29 files changed, 775 insertions, 241 deletions
diff --git a/templates/html/htmlallmembers.tpl b/templates/html/htmlallmembers.tpl
index 98f88d6..b44110d 100644
--- a/templates/html/htmlallmembers.tpl
+++ b/templates/html/htmlallmembers.tpl
@@ -9,12 +9,63 @@
<p>{{ tr.theListOfAllMembers }} <a class="el" href="{{ compound.fileName }}{{ config.HTML_FILE_EXTENSION }}">{{ compound.name }}</a>{{ tr.incInheritedMembers }}</p>
<table class="directory">
{% for mi in compound.allMembersList %}
- <tr {% cycle 'class="even"' '' %}>
- {# TODO: objective-C #}
- <td>{% with obj=mi.member text=mi.ambiguityScope|append:mi.member.name %}
- {% include 'htmlobjlink.tpl' %}
+ <tr class="{% cycle 'even' 'odd' %}">
+ {% spaceless %}
+ {% with member=mi.member %}
+ {% if member.language=='objc' %}
+ <td class="entry">
+ {% if member.isObjCMethod %}
+ {% if member.isStatic %}+&#160;{% else %}-&#160;{% endif %}
+ {% endif %}
+ </td>
+ {% endif %}
+ {% if member.isObjCMethod %}
+ <td class="entry">
+ {% with obj=member text=member.name %}
+ {% include 'htmlobjlink.tpl' %}
+ {% endwith %}
+ </td>
+ {%else %}
+ {# name #}
+ <td class="entry">
+ {% with obj=member text=mi.ambiguityScope|append:member.name %}
+ {% include 'htmlobjlink.tpl' %}
{% endwith %}
+ {% if member.isEnumeration %}
+ &#160;{{ tr.enumName }}
+ {% elif member.isEnumValue %}
+ &#160;{{ tr.enumValue }}
+ {% elif member.isTypedef %}
+ &#160;typedef
+ {% elif member.isFriend and member.type=='friend class' %}
+ &#160;class
+ {% elif member.isFunction or member.isSignal or member.isSlot or (member.isFriend and member.hasParameters) %}
+ {{ member.declArgs }}
+ {% endif %}
+ </td>
+ {% endif %}
+ {# class link #}
+ <td class="entry">
+ {% if member.category %}
+ {% with obj=member.category text=member.category.name %}
+ {% include 'htmlobjlink.tpl' %}
+ {% endwith %}
+ {% else %}
+ {% with obj=member.class text=member.class.name %}
+ {% include 'htmlobjlink.tpl' %}
+ {% endwith %}
+ {% endif %}
</td>
+ {# labels #}
+ {% if member.labels %}
+ <td class="entry">
+ {% for label in member.labels %}
+ <span class="mlabel">{{ label }}</span>
+ {% endfor %}
+ </td>
+ {% endif %}
+ {% endwith %}
+ {% endspaceless %}
</tr>
{% endfor %}
</table>
diff --git a/templates/html/htmlbase.tpl b/templates/html/htmlbase.tpl
index d394b45..84807ec 100644
--- a/templates/html/htmlbase.tpl
+++ b/templates/html/htmlbase.tpl
@@ -21,6 +21,9 @@
{% endif %}
{% if config.SEARCHENGINE %}
<link href="{{ page.relPath }}search/search.css" rel="stylesheet" type="text/css"/>
+ {% if not config.SERVER_BASED_SEARCH %}
+<script type="text/javascript" src="{{ page.relPath }}search/searchdata.js"></script>
+ {% endif %}
<script type="text/javascript" src="{{ page.relPath }}search/search.js"></script>
{% if config.SERVER_BASED_SEARCH %}
<script type="text/javascript">
@@ -38,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" />
@@ -117,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>
@@ -160,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">
@@ -194,7 +196,7 @@ $(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix
{% if config.HTML_TIMESTAMP %}
{{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }}
{% else %}
-{{ tr.generatedby }}
+{{ tr.generatedBy }}
{% endif %}
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="{{ page.relPath }}doxygen.png" alt="doxygen"/></a> {{ doxygen.version }} </li>
@@ -205,7 +207,7 @@ $(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix
{% if config.HTML_TIMESTAMP %}
{{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }}
{% else %}
-{{ tr.generatedby }}
+{{ tr.generatedBy }}
{% endif %}
&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="{{ page.relPath }}doxygen.png" alt="doxygen"/></a>
{{ doxygen.version }}
diff --git a/templates/html/htmlclass.tpl b/templates/html/htmlclass.tpl
index bb734b6..24694b3 100644
--- a/templates/html/htmlclass.tpl
+++ b/templates/html/htmlclass.tpl
@@ -180,7 +180,6 @@
</div>
{% endif %}
{# memberdecls #}
- {# TODO: isSimple #}
{# nestedClasses #}
{% with list=compound.classes label='nested-classes' title=tr.classes local=1 %}
{% include 'htmldeclcomp.tpl' %}
@@ -379,9 +378,9 @@
{% endif %}
{# member definitions #}
{# inline classes #}
- {% if compound.classes %}
- {# TODO write inlined simple classes: tr.classDocumentation / tr.typeDocumentation #}
- {% endif %}
+ {% with classList=compound.classes %}
+ {% include 'htmlinlineclasses.tpl' %}
+ {% endwith %}
{# typedefs #}
{% with memberListInfo=compound.detailedTypedefs %}
{% include 'htmlmemdef.tpl' %}
diff --git a/templates/html/htmlclasses.tpl b/templates/html/htmlclasses.tpl
index 803b1a9..8a1bf18 100644
--- a/templates/html/htmlclasses.tpl
+++ b/templates/html/htmlclasses.tpl
@@ -22,7 +22,7 @@
<li>
<span class="ai">
{% if forloop.first %}
- <a name="#letter_{{ section.label }}"></a>
+ <a name="letter_{{ section.label }}"></a>
<span class="ah">&#160;&#160;{{ section.letter }}&#160;&#160;</span><br/>
{% endif %}
{% with obj=cls text=cls.name %}
diff --git a/templates/html/htmldir.tpl b/templates/html/htmldir.tpl
index 7417f7b..a399759 100644
--- a/templates/html/htmldir.tpl
+++ b/templates/html/htmldir.tpl
@@ -45,7 +45,18 @@
{% endif %}
{% endif %}
{# dir graph #}
-{# TODO #}
+ {% if compound.hasDirGraph %}
+ {% with obj=compound %}
+ {% include 'htmldynheader.tpl' %}
+ {% endwith %}
+ {{ tr.dirDependencyGraphFor:compound.dirName }}
+ </div>
+ {% with obj=compound %}
+ {% include 'htmldyncontents.tpl' %}
+ {% endwith %}
+ {{ compound.dirGraph }}
+ </div>
+ {% endif %}
{# member declarations #}
{# directories #}
{% with list=compound.dirs label='subdirs' title=tr.directories local=False %}
diff --git a/templates/html/htmlfile.tpl b/templates/html/htmlfile.tpl
index 67af096..dbf0841 100644
--- a/templates/html/htmlfile.tpl
+++ b/templates/html/htmlfile.tpl
@@ -160,76 +160,9 @@
{% endif %}
{# member definitions #}
{# inline classes #}
- {% if compound.inlineClasses %}
- <h2 class="groupheader">{{ tr.classDocumentation }}</h2>
- {% for class in compound.inlineClasses %}
- {# write anchor #}
- <a class="anchor" id="{{ class.anchor }}"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
- </table>
- </div>
- <div class="memdoc">
- <div class="textblock">
- {# TODO: the stuff inside textblock can be the same as in htmlclass.tpl!! #}
- {# template specifier #}
- {% if class.language=='cpp' and class.templateDecls %}
- <h3>{% spaceless %}
- {% for targList in class.templateDecls %}
- template&lt;
- {% for targ in targList %}
- {{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %}&#160;= {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
- {% endfor %}
- &gt;<br/>
- {% endfor %}
- {% endspaceless %}
- {{ class.classType }}&#160;{{ class.name }}
- </h3>
- {% endif %}
- {# brief description #}
- {% if class.brief and config.REPEAT_BRIEF %}
- <p>{{ class.brief }}</p>
- {% endif %}
- {# detailed docs #}
- {{ class.details }}
- {# source def #}
- {% if class.sourceDef %}
- {% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
- {% with text=obj.text %}
- {% include 'htmlobjlink.tpl' %}
- {% endwith %}
- {% endmarkers %}
- {% endif %}
- </div><!-- textblock -->
- {# table with fields #}
- <table class="fieldtable">
- <tr><th colspan="3">{{ tr.compoundMembers }}</td></tr>
- {% for member in class.members %}
- <tr><td class="fieldtype">
- <a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
- </td>
- <td class="fieldname">
- {{ member.name }}
- {% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
- {{ member.bitfields }}
- </td>
- <td class="fielddoc">
- {% if member.brief and not member.details %}{# only brief #}
- {{ member.brief }}
- {% else %} {# only details or both #}
- {% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
- {{ member.details }}
- {% endif %}
- </td>
- </tr>
- {% endfor %}
- </table>
- </div><!-- memdoc -->
- </div><!-- memitem -->
- {% endfor %}
- {% endif %}
+ {% with classList=compound.inlineClasses %}
+ {% include 'htmlinlineclasses.tpl' %}
+ {% endwith %}
{# defines #}
{% with memberListInfo=compound.detailedMacros %}
{% include 'htmlmemdef.tpl' %}
diff --git a/templates/html/htmlinlineclasses.tpl b/templates/html/htmlinlineclasses.tpl
new file mode 100644
index 0000000..876c491
--- /dev/null
+++ b/templates/html/htmlinlineclasses.tpl
@@ -0,0 +1,70 @@
+{# input: classList #}
+{% if classList %}
+ <h2 class="groupheader">{{ tr.classDocumentation }}</h2>
+ {% for class in classList %}
+ {# write anchor #}
+ <a class="anchor" id="{{ class.anchor }}"></a>
+ <div class="memitem">
+ <div class="memproto">
+ <table class="memname">
+ <tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
+ </table>
+ </div>
+ <div class="memdoc">
+ <div class="textblock">
+ {# template specifier #}
+ {% if class.language=='cpp' and class.templateDecls %}
+ <h3>{% spaceless %}
+ {% for targList in class.templateDecls %}
+ template&lt;
+ {% for targ in targList %}
+ {{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %}&#160;= {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
+ {% endfor %}
+ &gt;<br/>
+ {% endfor %}
+ {% endspaceless %}
+ {{ class.classType }}&#160;{{ class.name }}
+ </h3>
+ {% endif %}
+ {# brief description #}
+ {% if class.brief and config.REPEAT_BRIEF %}
+ <p>{{ class.brief }}</p>
+ {% endif %}
+ {# detailed docs #}
+ {{ class.details }}
+ {# source def #}
+ {% if class.sourceDef %}
+ {% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
+ {% with text=obj.text %}
+ {% include 'htmlobjlink.tpl' %}
+ {% endwith %}
+ {% endmarkers %}
+ {% endif %}
+ </div><!-- textblock -->
+ {# table with fields #}
+ <table class="fieldtable">
+ <tr><th colspan="3">{{ tr.compoundMembers }}</th></tr>
+ {% for member in class.members %}
+ <tr><td class="fieldtype">
+ <a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
+ </td>
+ <td class="fieldname">
+ {{ member.name }}
+ {% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
+ {{ member.bitfields }}
+ </td>
+ <td class="fielddoc">
+ {% if member.brief and not member.details %}{# only brief #}
+ {{ member.brief }}
+ {% else %} {# only details or both #}
+ {% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
+ {{ member.details }}
+ {% endif %}
+ </td>
+ </tr>
+ {% endfor %}
+ </table>
+ </div><!-- memdoc -->
+ </div><!-- memitem -->
+ {% endfor %}
+{% endif %}
diff --git a/templates/html/htmljsnavtree.tpl b/templates/html/htmljsnavtree.tpl
index a7ad88e..99a269e 100644
--- a/templates/html/htmljsnavtree.tpl
+++ b/templates/html/htmljsnavtree.tpl
@@ -18,3 +18,6 @@ var NAVTREEINDEX =
{% endfor %}
{% endwith %}
];
+
+var SYNCONMSG = '{{ tr.panelSyncOn }}';
+var SYNCOFFMSG = '{{ tr.panelSyncOff }}';
diff --git a/templates/html/htmljssearchdata.tpl b/templates/html/htmljssearchdata.tpl
new file mode 100644
index 0000000..c48ea1d
--- /dev/null
+++ b/templates/html/htmljssearchdata.tpl
@@ -0,0 +1,31 @@
+{# input: si: SymbolIndex #}
+var indexSectionsWithContent =
+{
+{% set count=0 %}
+{% for idx in searchIndices %}
+ {% if idx.symbolIndices %}
+ {{ count }}:"{% for si in idx.symbolIndices %}{{ si.letter }}{% endfor %}"{%if not forloop.last %},{% endif %}
+ {% set count=count+1 %}
+ {% endif %}
+{% endfor %}
+};
+var indexSectionNames =
+{
+{% set count=0 %}
+{% for idx in searchIndices %}
+ {% if idx.symbolIndices %}
+ {{ count }}:"{{ idx.name }}"{% if not forloop.last %},{% endif %}
+ {% set count=count+1 %}
+ {% endif %}
+{% endfor %}
+};
+var IndexSectionLabels =
+{
+{% set count=0 %}
+{% for idx in searchIndices %}
+ {% if idx.symbolIndices %}
+ {{ count }}:"{{ idx.text }}"{% if not forloop.last %},{% endif %}
+ {% set count=count+1 %}
+ {% endif %}
+{% endfor %}
+};
diff --git a/templates/html/htmljssearchindex.tpl b/templates/html/htmljssearchindex.tpl
new file mode 100644
index 0000000..a16fa4f
--- /dev/null
+++ b/templates/html/htmljssearchindex.tpl
@@ -0,0 +1,15 @@
+{# input: si symbolIndex #}
+var searchData =
+[
+{% for group in si.symbolGroups %}['{{ group.id }}',['{{ group.name }}',
+{% for sym in group.symbols %}
+{% spaceless %}
+['{{ sym.relPath }}{{ sym.fileName }}{{ config.HTML_FILE_EXTENSION }}{% if sym.anchor %}#{{ sym.anchor }}{% endif %}',
+{% if not config.EXT_LINKS_IN_WINDOW %}1{% else %}0{% endif %},
+'{{ sym.scope|nowrap }}']
+{% endspaceless %}
+{% if not forloop.last %},{% endif %}
+{% endfor %}
+]]{% if not forloop.last %},{% endif %}
+{% endfor %}
+];
diff --git a/templates/html/htmllayout.tpl b/templates/html/htmllayout.tpl
index 9b82238..c21ef91 100644
--- a/templates/html/htmllayout.tpl
+++ b/templates/html/htmllayout.tpl
@@ -24,6 +24,14 @@
{% resource 'nav_g.png' %}
{% resource 'nav_h.lum' %}
{% resource 'navtree.css' %}
+{% resource 'navtree.js' %}
+{% resource 'resize.js' %}
+{% resource 'doc.luma' %}
+{% resource 'folderopen.luma' %}
+{% resource 'folderclosed.luma' %}
+{% resource 'arrowdown.luma' %}
+{% resource 'arrowright.luma' %}
+{% resource 'splitbar.lum' %}
{# general search resources #}
{% resource 'search_l.png' as 'search/search_l.png' %}
@@ -183,7 +191,9 @@
{% endwith %}
{% with page=classHierarchy %}
{% if config.HAVE_DOT and config.GRAPHICAL_HIERARCHY %}
- {% create 'inherits'|append:config.HTML_FILE_EXTENSION from 'htmlgraphhierarchy.tpl' %}
+ {% with fileName='inherits' %}
+ {% create fileName|append:config.HTML_FILE_EXTENSION from 'htmlgraphhierarchy.tpl' %}
+ {% endwith %}
{% endif %}
{% endwith %}
{% endif %}
@@ -229,6 +239,19 @@
{# close the global navigation index #}
{% closesubindex nav %}
+{# write search data #}
+{% if config.SEARCHENGINE and not config.SERVER_BASED_SEARCH %}
+ {% create 'search/searchdata.js' from 'htmljssearchdata.tpl' %}
+ {% for idx in searchIndices %}
+ {% for si in idx.symbolIndices %}
+ {% with baseName=si.name|append:'_'|append:forloop.counter0 %}
+ {% create baseName|prepend:'search/'|append:config.HTML_FILE_EXTENSION from 'htmlsearchresult.tpl' %}
+ {% create baseName|prepend:'search/'|append:'.js' from 'htmljssearchindex.tpl' %}
+ {% endwith %}
+ {% endfor %}
+ {% endfor %}
+{% endif %}
+
{# write the navigation tree data #}
{% if config.GENERATE_TREEVIEW %}
{% create 'navtreedata.js' from 'htmljsnavtree.tpl' %}
diff --git a/templates/html/htmlmemdef.tpl b/templates/html/htmlmemdef.tpl
index c469f1f..be4d94e 100644
--- a/templates/html/htmlmemdef.tpl
+++ b/templates/html/htmlmemdef.tpl
@@ -1,6 +1,6 @@
{# inputs: memberListInfo #}
{% if memberListInfo %}
- {% if memberListInfo.members|length>0 %}
+ {% if memberListInfo.members %}
<h2 class="groupheader">{{ memberListInfo.title }}</h2>
{% for member in memberListInfo.members %}
{% if member.hasDetails %} {# TODO: not the same as isDetailedSectionVisible! #}
@@ -9,7 +9,7 @@
<div class="memitem">
<div class="memproto">
{# write template declarations #}
- {% if member.language=='cpp' and member.templateDecls|length>0 %}
+ {% if member.language=='cpp' and member.templateDecls %}
{% for targList in member.templateDecls %}
{% spaceless %}
<div class="memtemplate">
@@ -23,7 +23,7 @@
{% endfor %}
{% endif %}
{# start of labels if present #}
- {% if member.labels|length>0 %}
+ {% if member.labels %}
<table class="mlabels"><tr><td class="mlabels-left">
{% endif %}
<table class="memname">
@@ -31,9 +31,11 @@
{{ member.definition }}
{# write argument list #}
{# TODO: TCL #}
- {% if member.hasParameterList %}
+ {% if member.hasParameters %}
{% if member.isObjCMethod %}
+ {% if member.parameters %}
</td><td></td>
+ {% endif %}
{% for arg in member.parameters %}
{% if not forloop.first %}
<tr><td class="paramkey">{{ arg.namePart }}</td><td></td>
@@ -43,7 +45,7 @@
<em>{% if not arg.name %}{{ arg.type }}{% else %}{{ arg.name }}{% endif %}</em>
{% endif %}
{% if not forloop.last %}
- ,</td></tr>
+ </td></tr>
{% endif %}
{% endfor %}
{% else %}
@@ -109,7 +111,7 @@
</td></tr>
</table>
{# end of labels if present #}
- {% if member.labels|length>0 %}
+ {% if member.labels %}
</td><td class="mlabels-right">{% spaceless %}
{% for label in member.labels %}
<span class="mlabel">{{ label }}</span>
diff --git a/templates/html/htmlmodule.tpl b/templates/html/htmlmodule.tpl
index ff97b2c..887da1b 100644
--- a/templates/html/htmlmodule.tpl
+++ b/templates/html/htmlmodule.tpl
@@ -214,76 +214,9 @@
{% endif %}
{# member definitions #}
{# inline classes #}
- {% if compound.inlineClasses %}
- <h2 class="groupheader">{{ tr.classDocumentation }}</h2>
- {% for class in compound.inlineClasses %}
- {# write anchor #}
- <a class="anchor" id="{{ class.anchor }}"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
- </table>
- </div>
- <div class="memdoc">
- <div class="textblock">
- {# TODO: the stuff inside textblock can be the same as in htmlclass.tpl!! #}
- {# template specifier #}
- {% if class.language=='cpp' and class.templateDecls %}
- <h3>{% spaceless %}
- {% for targList in class.templateDecls %}
- template&lt;
- {% for targ in targList %}
- {{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %}&#160;= {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
- {% endfor %}
- &gt;<br/>
- {% endfor %}
- {% endspaceless %}
- {{ class.classType }}&#160;{{ class.name }}
- </h3>
- {% endif %}
- {# brief description #}
- {% if class.brief and config.REPEAT_BRIEF %}
- <p>{{ class.brief }}</p>
- {% endif %}
- {# detailed docs #}
- {{ class.details }}
- {# source def #}
- {% if class.sourceDef %}
- {% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
- {% with text=obj.text %}
- {% include 'htmlobjlink.tpl' %}
- {% endwith %}
- {% endmarkers %}
- {% endif %}
- </div><!-- textblock -->
- {# table with fields #}
- <table class="fieldtable">
- <tr><th colspan="3">{{ tr.compoundMembers }}</td></tr>
- {% for member in class.members %}
- <tr><td class="fieldtype">
- <a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
- </td>
- <td class="fieldname">
- {{ member.name }}
- {% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
- {{ member.bitfields }}
- </td>
- <td class="fielddoc">
- {% if member.brief and not member.details %}{# only brief #}
- {{ member.brief }}
- {% else %} {# only details or both #}
- {% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
- {{ member.details }}
- {% endif %}
- </td>
- </tr>
- {% endfor %}
- </table>
- </div><!-- memdoc -->
- </div><!-- memitem -->
- {% endfor %}
- {% endif %}
+ {% with classList=compound.inlineClasses %}
+ {% include 'htmlinlineclasses.tpl' %}
+ {% endwith %}
{# defines #}
{% with memberListInfo=compound.detailedMacros %}
{% include 'htmlmemdef.tpl' %}
diff --git a/templates/html/htmlnamespace.tpl b/templates/html/htmlnamespace.tpl
index e21ba9d..eb127de 100644
--- a/templates/html/htmlnamespace.tpl
+++ b/templates/html/htmlnamespace.tpl
@@ -114,76 +114,9 @@
{% endif %}
{# member definitions #}
{# inline classes #}
- {% if compound.inlineClasses %}
- <h2 class="groupheader">{{ tr.classDocumentation }}</h2>
- {% for class in compound.inlineClasses %}
- {# write anchor #}
- <a class="anchor" id="{{ class.anchor }}"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
- </table>
- </div>
- <div class="memdoc">
- <div class="textblock">
- {# TODO: the stuff inside textblock can be the same as in htmlclass.tpl!! #}
- {# template specifier #}
- {% if class.language=='cpp' and class.templateDecls %}
- <h3>{% spaceless %}
- {% for targList in class.templateDecls %}
- template&lt;
- {% for targ in targList %}
- {{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %}&#160;= {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
- {% endfor %}
- &gt;<br/>
- {% endfor %}
- {% endspaceless %}
- {{ class.classType }}&#160;{{ class.name }}
- </h3>
- {% endif %}
- {# brief description #}
- {% if class.brief and config.REPEAT_BRIEF %}
- <p>{{ class.brief }}</p>
- {% endif %}
- {# detailed docs #}
- {{ class.details }}
- {# source def #}
- {% if class.sourceDef %}
- {% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
- {% with text=obj.text %}
- {% include 'htmlobjlink.tpl' %}
- {% endwith %}
- {% endmarkers %}
- {% endif %}
- </div><!-- textblock -->
- {# table with fields #}
- <table class="fieldtable">
- <tr><th colspan="3">{{ tr.compoundMembers }}</td></tr>
- {% for member in class.members %}
- <tr><td class="fieldtype">
- <a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
- </td>
- <td class="fieldname">
- {{ member.name }}
- {% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
- {{ member.bitfields }}
- </td>
- <td class="fielddoc">
- {% if member.brief and not member.details %}{# only brief #}
- {{ member.brief }}
- {% else %} {# only details or both #}
- {% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
- {{ member.details }}
- {% endif %}
- </td>
- </tr>
- {% endfor %}
- </table>
- </div><!-- memdoc -->
- </div><!-- memitem -->
- {% endfor %}
- {% endif %}
+ {% with classList=compound.inlineClasses %}
+ {% include 'htmlinlineclasses.tpl' %}
+ {% endwith %}
{# typedefs #}
{% with memberListInfo=compound.detailedTypedefs %}
{% include 'htmlmemdef.tpl' %}
diff --git a/templates/html/htmlsearchresult.tpl b/templates/html/htmlsearchresult.tpl
new file mode 100644
index 0000000..2cf45fc
--- /dev/null
+++ b/templates/html/htmlsearchresult.tpl
@@ -0,0 +1,27 @@
+{# input: baseName #}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen {{ doxygen.version }}"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="{{ baseName }}.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">{{ tr.loading }}</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">{{ tr.searching }}</div>
+<div class="SRStatus" id="NoMatches">{{ tr.noMatches }}</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/templates/html/htmltabs.tpl b/templates/html/htmltabs.tpl
index 9ce8c44..4c48f54 100644
--- a/templates/html/htmltabs.tpl
+++ b/templates/html/htmltabs.tpl
@@ -69,6 +69,7 @@
</ul>
</div>
{# second navigation row #}
+{% if page.highlight=='namespace' or page.highlight=='classes' or page.highlight=='files' %}
<div id="navrow2" class="tabs2">
<ul class="tablist">
{# namespace subtabs #}
@@ -94,3 +95,4 @@
{% endif %}
</ul>
</div>
+{% endif %}
diff --git a/templates/html/htmltypeconstraints.tpl b/templates/html/htmltypeconstraints.tpl
index 12c9581..b5a8cd0 100644
--- a/templates/html/htmltypeconstraints.tpl
+++ b/templates/html/htmltypeconstraints.tpl
@@ -1,5 +1,5 @@
{# obj should be a class or member #}
-{% if obj.typeConstraints|length>0 %}
+{% if obj.typeConstraints %}
<div class="typecontraint">
<dl><dt><b>{{ tr.typeConstraints }}</b></dt>
<dd><table border="0" cellspacing="2" cellpadding="0">
diff --git a/templates/latex/doxygen.sty b/templates/latex/doxygen.sty
index 2051b30..3f21871 100644
--- a/templates/latex/doxygen.sty
+++ b/templates/latex/doxygen.sty
@@ -409,10 +409,10 @@
% Used by parameter lists and simple sections
\newenvironment{Desc}
{\begin{list}{}{%
- \settowidth{\labelwidth}{40pt}%
- \setlength{\leftmargin}{\labelwidth}%
+ \settowidth{\labelwidth}{20pt}%
\setlength{\parsep}{0pt}%
- \setlength{\itemsep}{-4pt}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\leftmargin}{\labelwidth+\labelsep}%
\renewcommand{\makelabel}{\entrylabel}%
}
}{%
diff --git a/templates/latex/latexannotated.tpl b/templates/latex/latexannotated.tpl
new file mode 100644
index 0000000..0b6ecb5
--- /dev/null
+++ b/templates/latex/latexannotated.tpl
@@ -0,0 +1,9 @@
+\section{<{ tr.classList }>}
+<{ tr.classListDescription }>
+\begin{DoxyCompactList}
+<% for cls in classList %>
+\item\contentsline{section}
+{<% with obj=cls text=cls.name %><% include 'latexobjlink.tpl' %><% endwith %><% if cls.brief %>\\*<{ cls.brief }><% endif %>}
+{\pageref{<{ cls.fileName|raw }>}}{}
+<% endfor %>
+\end{DoxyCompactList}
diff --git a/templates/latex/latexclass.tpl b/templates/latex/latexclass.tpl
new file mode 100644
index 0000000..7671de0
--- /dev/null
+++ b/templates/latex/latexclass.tpl
@@ -0,0 +1,114 @@
+<# input: compound #>
+<% msg %>Generating LaTeX output for class <{ compound.name }><% endmsg %>
+\hypertarget{<{ compound.fileName|raw }>}{}\section{<{ compound.title }>}
+\label{<{ compound.fileName|raw }>}\index{<{ compound.name|texLabel }>@{<{ compound.name|texIndex }>}}
+<# brief description #>
+<% if compound.brief %>
+ <{ compound.brief }>
+
+<% endif %>
+<# compound includes #>
+<% if compound.includeInfo %>
+ <% with ii=compound.includeInfo %>
+ <% include 'latexinclude.tpl' %>
+ <% endwith %>
+
+
+<% endif %>
+<# inheritance graph #>
+ <% if compound.hasInheritanceDiagram %>
+ <{ tr.inheritanceDiagramFor:compound.name }>
+ <{ compound.inheritanceDiagram }>
+ <% else %>
+ <# textual inheritance list #>
+ <% if compound.inherits|length>0 %>
+ <% markers c in compound.inherits with tr.inheritsList:compound.inherits|length %>
+ <% with obj=c.class text=c.name %>
+ <% include 'latexobjlink.tpl' %>
+ <% endwith %>
+ <% endmarkers %>
+
+
+ <% endif %>
+ <% if compound.inheritedBy|length>0 %>
+ <% markers c in compound.inheritedBy with tr.inheritedByList:compound.inheritedBy|length %>
+ <% with obj=c.class text=c.name %>
+ <% include 'latexobjlink.tpl' %>
+ <% endwith %>
+ <% endmarkers %>
+
+
+ <% endif %>
+ <% endif %>
+<# collaboration graph #>
+ <% if compound.hasCollaborationDiagram %>
+ <{ tr.collaborationDiagramFor:compound.name }>
+ <{ compound.collaborationDiagram }>
+
+
+ <% endif %>
+<# member declarations #>
+<% if compound.hasDetails %>
+ <% if compound.anchor %>
+ \label{<{ compound.anchor|raw }>}
+ <% if config.PDF_HYPERLINKS and config.USE_PDFLATEX %>
+ \hypertarget{<% if compound.fileName %><{ compound.fileName|raw }>_<% endif %><{ compound.anchor|raw }>}{}
+ <% endif %>
+ <% endif %>
+ <% if config.COMPACT_LATEX %>\subsubsection<% else %>\subsection<% endif %>{<{ tr.detailedDesc }>}
+ <# template specifier #>
+ <% if compound.language=='cpp' and compound.templateDecls %>
+ <% spaceless %>
+ \subsubsection*{
+ <% for targList in compound.templateDecls %>
+ template$<$
+ <% for targ in targList %>
+ <{ targ.type }><% if targ.name %><{ space }><{ targ.name }><% endif %><% if targ.defVal %><{ space }>= <{ targ.defVal }><% endif %><% if not forloop.last %>, <% endif %>
+ <% endfor %>
+ $>$\\*
+ <% endfor %>
+ <{ compound.compoundType }><{ space }><{ compound.name }>
+ }
+ <% endspaceless %>
+
+
+ <% endif %>
+ <% if compound.brief and config.REPEAT_BRIEF %>
+ <{ compound.brief }>
+
+
+ <% endif %>
+ <{ compound.details }>
+
+
+ <# type constraints #>
+ <% with obj=compound %>
+ <% include 'latextypeconstraints.tpl' %>
+ <% endwith %>
+
+
+<% endif %>
+<% msg %>
+ <# examples #>
+ <% if compound.examples %>
+ <dl><dt><b><{ tr.examples }></b><dd>
+ <% markers obj in compound.examples with tr.exampleList:compound.examples|length %>
+ <% with text=obj.text %>
+ <% include 'htmlobjlink.tpl' %>
+ <% endwith %>
+ <% endmarkers %>
+ </dd></dl>
+ <% endif %>
+ <# source definition #>
+ <% if compound.sourceDef %>
+ <% markers obj in compound.sourceDef with tr.definedAtLineInSourceFile %>
+ <% with text=obj.text %>
+ <% include 'htmlobjlink.tpl' %>
+ <% endwith %>
+ <% endmarkers %>
+ <% endif %>
+<% endmsg %>
+<# detailed description #>
+<# member definitions #>
+<# used files #>
+<# separate member pages #>
diff --git a/templates/latex/latexfiles.tpl b/templates/latex/latexfiles.tpl
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/templates/latex/latexfiles.tpl
diff --git a/templates/latex/latexinclude.tpl b/templates/latex/latexinclude.tpl
new file mode 100644
index 0000000..c333056
--- /dev/null
+++ b/templates/latex/latexinclude.tpl
@@ -0,0 +1,32 @@
+<# input: ii with attributes (file,name,isImport,isLocal), compound with attribute language #>
+<% spaceless %>
+<% if ii.file or ii.name %>
+{\ttfamily<{ space }>
+ <% if compound.language=='java' or compound.language=='idl' %>
+ import
+ <% else %>
+ <% if ii.isImport %>
+ \#import
+ <% else %>
+ \#include
+ <% endif %>
+ <% endif %>
+ <{ space }>
+ <% if ii.isLocal %>
+ \char`\"{}
+ <% else %>
+ $<$
+ <% endif %>
+ <% if ii.name %>
+ <{ ii.name }>
+ <% else %>
+ <{ ii.file.name }>
+ <% endif %>
+ <% if ii.isLocal %>
+ \char`\"{}
+ <% else %>
+ $>$
+ <% endif %>
+}
+<% endif %>
+<% endspaceless %>
diff --git a/templates/latex/latexlayout.tpl b/templates/latex/latexlayout.tpl
new file mode 100644
index 0000000..290a4d5
--- /dev/null
+++ b/templates/latex/latexlayout.tpl
@@ -0,0 +1,35 @@
+{% msg %}----- Start generating LaTeX output for {{ config.PROJECT_NAME }} from template ----{% endmsg %}
+
+{% create 'refman.tex' from 'latexrefman.tpl' %}
+{% create 'Makefile' from 'latexmakefile.tpl' %}
+
+{# module index #}
+{% if moduleTree.tree %}
+ {% create 'modules.tex' from 'latexmodules.tpl' %}
+{% endif %}
+
+{# namespace index #}
+{% if namespaceTree.tree %}
+ {% create 'namespaces.tex' from 'latexnamespaces.tpl' %}
+{% endif %}
+
+{# class index #}
+{% if classTree.tree %}
+ {% create 'annotated.tex' from 'latexannotated.tpl' %}
+{% endif %}
+
+{# file index #}
+{% if fileTree.tree %}
+ {% create 'files.tex' from 'latexfiles.tpl' %}
+{% endif %}
+
+{# TODO: pages #}
+{# TODO: examples #}
+{# TODO: directories #}
+
+{# write class documentation pages #}
+{% for compound in classList %}
+ {% create compound.fileName|append:'.tex' from 'latexclass.tpl' %}
+{% endfor %}
+
+{% msg %}----- End generating LaTeX output for {{ config.PROJECT_NAME }} from template ----{% endmsg %}
diff --git a/templates/latex/latexmakefile.tpl b/templates/latex/latexmakefile.tpl
new file mode 100644
index 0000000..ba1eb76
--- /dev/null
+++ b/templates/latex/latexmakefile.tpl
@@ -0,0 +1,64 @@
+{% if config.USE_PDFLATEX %}
+all: refman.pdf
+
+pdf: refman.pdf
+
+refman.pdf: clean refman.tex
+ pdflatex refman
+ {{ config.MAKEINDEX_CMD_NAME }} refman.idx
+{# TODO: generateBib #}
+ pdflatex refman
+ latex_count=8 ; \
+ while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+ do \
+ echo "Rerunning latex...." ;\
+ pdflatex refman ;\
+ latex_count=`expr $$latex_count - 1` ;\
+ done
+ {{ config.MAKEINDEX_CMD_NAME }} refman.idx
+ pdflatex refman
+{% else %}
+all: refman.dvi
+
+ps: refman.ps
+
+pdf: refman.pdf
+
+ps_2on1: refman_2on1.ps
+
+pdf_2on1: refman_2on1.pdf
+
+refman.ps: refman.dvi
+ dvips -o refman.ps refman.dvi
+
+refman.pdf: refman.ps
+ ps2pdf refman.ps refman.pdf
+
+refman.dvi: clean refman.tex doxygen.sty
+ echo "Running latex..."
+ {{ config.LATEX_CMD_NAME }} refman.tex
+ echo "Running makeindex..."
+ {{ config.MAKEINDEX_CMD_NAME }} refman.idx
+{# TODO: generateBib #}
+ echo "Rerunning latex...."
+ {{ config.LATEX_CMD_NAME }} refman.tex
+ latex_count=8 ; \
+ while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+ do \
+ echo "Rerunning latex...." ;\
+ {{ config.LATEX_CMD_NAME }} refman.tex ;\
+ latex_count=`expr $$latex_count - 1` ;\
+ done
+ {{ config.MAKEINDEX_CMD_NAME }} refman.idx
+ {{ config.LATEX_CMD_NAME }} refman.tex
+
+refman_2on1.ps: refman.ps
+ psnup -2 refman.ps >refman_2on1.ps
+
+refman_2on1.pdf: refman_2on1.ps
+ ps2pdf refman_2on1.ps refman_2on1.pdf
+{% endif %}
+
+clean:
+ rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf
+
diff --git a/templates/latex/latexmodules.tpl b/templates/latex/latexmodules.tpl
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/templates/latex/latexmodules.tpl
diff --git a/templates/latex/latexnamespaces.tpl b/templates/latex/latexnamespaces.tpl
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/templates/latex/latexnamespaces.tpl
diff --git a/templates/latex/latexobjlink.tpl b/templates/latex/latexobjlink.tpl
new file mode 100644
index 0000000..89ecc2e
--- /dev/null
+++ b/templates/latex/latexobjlink.tpl
@@ -0,0 +1,6 @@
+<# inputs: obj, text #>
+<% if config.PDF_HYPERLINKS %>
+\hyperlink{<{ obj.fileName|raw }><% if obj.anchor %>_<{ obj.anchor }><% endif %>}{<{ text }>}
+<% else %>
+{\bf <{ text }>}
+<% endif %>
diff --git a/templates/latex/latexrefman.tpl b/templates/latex/latexrefman.tpl
new file mode 100644
index 0000000..27b7ea0
--- /dev/null
+++ b/templates/latex/latexrefman.tpl
@@ -0,0 +1,227 @@
+\documentclass[twoside]{<% if config.COMPACT_LATEX %>article<% else %>book<% endif %>}
+
+% Packages required by doxygen
+\usepackage{fixltx2e}
+\usepackage{calc}
+\usepackage{doxygen}
+\usepackage[export]{adjustbox} % also loads graphicx
+<% for package in config.LATEX_EXTRA_STYLESHEET %>
+\usepackage{<{package|stripExtension:'.sty'}>}
+<% endfor %>
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage{makeidx}
+\usepackage{multicol}
+\usepackage{multirow}
+\PassOptionsToPackage{warn}{textcomp}
+\usepackage{textcomp}
+\usepackage[nointegrals]{wasysym}
+\usepackage[table]{xcolor}
+
+<# TODO: languageSupportCommand #>
+
+% Font selection
+\usepackage[T1]{fontenc}
+\usepackage[scaled=.90]{helvet}
+\usepackage{courier}
+\usepackage{amssymb}
+\usepackage{sectsty}
+\renewcommand{\familydefault}{\sfdefault}
+\allsectionsfont{
+ \fontseries{bc}\selectfont
+ \color{darkgray}
+}
+\renewcommand{\DoxyLabelFont}{
+ \fontseries{bc}\selectfont
+ \color{darkgray}
+}
+\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
+
+% Page & text layout
+\usepackage{geometry}
+\geometry{
+ <{ config.PAPER_TYPE }>paper,
+ top=2.5cm,
+ bottom=2.5cm,
+ left=2.5cm,
+ right=2.5cm
+}
+\tolerance=750
+\hfuzz=15pt
+\hbadness=750
+\setlength{\emergencystretch}{15pt}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{0.2cm}
+\makeatletter
+\renewcommand{\paragraph}{
+ \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{
+ \normalfont\normalsize\bfseries\SS@parafont
+ }
+}
+\renewcommand{\subparagraph}{
+ \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{
+ \normalfont\normalsize\bfseries\SS@subparafont
+ }
+}
+\makeatother
+
+% Headers & footers
+\usepackage{fancyhdr}
+\pagestyle{fancyplain}
+\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
+\fancyhead[CE]{\fancyplain{}{}}
+\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
+\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
+\fancyhead[CO]{\fancyplain{}{}}
+\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
+\fancyfoot[LE]{\fancyplain{}{}}
+\fancyfoot[CE]{\fancyplain{}{}}
+\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize <{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }>}}
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize <{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }>}}
+\fancyfoot[CO]{\fancyplain{}{}}
+\fancyfoot[RO]{\fancyplain{}{}}
+\renewcommand{\footrulewidth}{0.4pt}
+<% if not config.COMPACT_LATEX %>
+\renewcommand{\chaptermark}[1]{
+ \markboth{ #1}{}%
+}
+<% endif %>
+\renewcommand{\sectionmark}[1]{
+ \markright{\thesection\ #1}
+}
+
+% Indices & bibliography
+\usepackage{natbib}
+\usepackage[titles]{tocloft}
+\setcounter{tocdepth}{3}
+\setcounter{secnumdepth}{5}
+\makeindex
+
+<% if config.EXTRA_PACKAGES %>
+% Packages requested by user
+<% for package in config.EXTRA_PACKAGES %>
+\usepackage{<{ package }>}
+<% endfor %>
+<% endif %>
+
+<% if config.PDF_HYPERLINKS %>
+% Hyperlinks (required, but should be loaded last)
+\usepackage{ifpdf}
+\ifpdf
+ \usepackage[pdftex,pagebackref=true]{hyperref}
+\else
+ \usepackage[ps2pdf,pagebackref=true]{hyperref}
+\fi
+\hypersetup{
+ colorlinks=true,
+ linkcolor=blue,
+ citecolor=blue,
+ unicode
+}
+<% endif %>
+
+% Custom commands
+\newcommand{\clearemptydoublepage}{
+ \newpage{\pagestyle{empty}\cleardoublepage}
+}
+
+%===== C O N T E N T S =====
+
+\begin{document}
+<# TODO: select language for greek #>
+
+% Titlepage & ToC
+<% if config.USE_PDFLATEX and config.PDF_HYPERLINKS %>
+\hypersetup{pageanchor=false,
+ bookmarks=true,
+ bookmarksnumbered=true,
+ pdfencoding=unicode
+ }
+<% endif %>
+\pagenumbering{roman}
+\begin{titlepage}
+<% tabbing %>
+\vspace*{7cm}
+\begin{center}%
+{\Large
+<% if config.PROJECT_NAME %>
+ <{ config.PROJECT_NAME }>
+<% else %>
+ <{ tr.referenceManual }>
+<% endif %>
+<% if config.PROJECT_NUMBER %>
+\\[1ex]\large <{ config.PROJECT_NUMBER }>
+<% endif %>
+}\\
+\vspace*{1cm}{\large <{ tr.generatedBy }> Doxygen <{ doxygen.version }>}\\
+\vspace*{0.5cm}{\small <{ doxygen.date }>}\\
+\end{center}
+<% endtabbing %>
+\end{titlepage}
+<% if not config.COMPACT_LATEX %>\clearemptydoublepage<% endif %>
+
+\tableofcontents
+<% if not config.COMPACT_LATEX %>\clearemptydoublepage<% endif %>
+\pagenumbering{arabic}
+<% if config.USE_PDFLATEX and config.PDF_HYPERLINKS %>
+\hypersetup{pageanchor=true}
+<% endif %>
+
+%--- Begin generated contents ---
+<# TODO: loop over pages #>
+<% if moduleTree.tree %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.moduleIndex }>}
+\input{modules}
+<% endif %>
+<% if namespaceTree.tree %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.namespaceIndex }>}
+\input{namespaces}
+<% endif %>
+<% if classTree.tree %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.classIndex }>}
+\input{annotated}
+<% endif %>
+<% if fileTree.tree %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.fileIndex }>}
+\input{files}
+<% endif %>
+<% if moduleList %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.moduleDocumentation }>}
+<% for compound in moduleList %>
+\input{<{ compound.fileName|raw }>}
+<% endfor %>
+<% endif %>
+<% if namespaceList %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.namespaceDocumentation }>}
+<% for compound in namespaceList %>
+\input{<{ compound.fileName|raw }>}
+<% endfor %>
+<% endif %>
+<% if classList %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.classDocumentation }>}
+<% for compound in classList %>
+\input{<{ compound.fileName|raw }>}
+<% endfor %>
+<% endif %>
+<% if fileList %>
+<% if config.COMPACT_LATEX %>\section<% else %>\chapter<% endif %>{<{ tr.fileDocumentation }>}
+<% for compound in fileList %>
+\input{<{ compound.fileName|raw }>}
+<% endfor %>
+<% endif %>
+%--- End generated contents ---
+
+<# TODO: write bibliography #>
+% Index
+<% if not config.COMPACT_LATEX %>
+\backmatter
+<% endif %>
+\newpage
+\phantomsection
+\clearemptydoublepage
+\addcontentsline{toc}{<% if config.COMPACT_LATEX %>section<% else %>chapter<% endif %>}{<{ tr.index }>}
+\printindex
+
+\end{document}
+
+
diff --git a/templates/latex/latextypeconstraints.tpl b/templates/latex/latextypeconstraints.tpl
new file mode 100644
index 0000000..2853ab2
--- /dev/null
+++ b/templates/latex/latextypeconstraints.tpl
@@ -0,0 +1,12 @@
+<# obj should be a class or member #>
+<% msg %>type constraints = <{ obj.typeConstraints|length }><% endmsg %>
+<% if obj.typeConstraints %>
+\begin{Desc}
+\item[<{ tr.typeConstraints }>]
+\begin{description}
+<% for arg in obj.typeConstraints %>
+ \item[{\em <{ arg.name }>} : {\em <{ arg.type }>}] <{ arg.docs }>
+<% endfor %>
+\end{description}
+\end{Desc}
+<% endif %>