Can Doxygen process pages other than MainPage.dox - documentation

If you put a MainPage.dox file in Doxygen's search path, it will add it to the output in Doxygen/html above the source documentation. But can you have multiple files like MainPage.dox? Or are you limited to one?

Doxygen will recognize and parse any file that has a *.dox extension and include it in the resulting documentation. What those files will produce is dictated by the doxygen comments located in the file. For example, if you want to modify the main page, you'll need a comment like:
/**
* #mainpage
* Documentation you want to occur on the main page.
*/
You can also create documentation that should appear on other pages using this technique:
/**
* #page another_page Another Page
* Documentation that will occur on another page.
*/
Assuming HTML output, this form will create a file named another_page.html at the same level as index.html. The title will be Another Page, and the content referenced will follow. An additional tab will also be produced named Related Pages which will have links to all of the related pages created in this manner.
Blocks like this can occur in any file that doxygen parses (including header or source files), and can contain definitions for multiple pages (both of the comments above could be in a single file). The file they're located in does not have an impact on the output that is produced.

As of 1.8.4, .md markdown pages can also be included as separate pages without need for .dox C++ like comments /** */ if they are to be considered by doxygen according to your INPUT and FILE_PATTERNS configs.
One difference between using .md and .dox is that .md files produce a Related page with the same name as the basename without extension of the .md file, while .dox only produces pages with names given by \page commands.
It is still possible to use \page commands from .md files.
For example, if file md_page.md contains:
Inside md_page.
\page md_page2 Md Page 2
Inside md_page2
this will generate 2 pages under "Related Pages" entitled:
md_page
Md Page 2

Related

Doxygen : link to a Related Page

Say I have a page, in the Related Pages section, named states.md.
Now, in the doc of a specific method, I want to tell users to go see that file for more details, like "See states.md", with an hyperlink to the page.
The problem is, I have no problem generating the link (I can use the \ref command like See the \ref states.md "states.md", but it seems to work the same if I just write the name of the file), however the link goes to a empty and useless page rather than the actual page :
If I "manually" go to the Related Pages tab, states.md appears in the list, if I click on it from here I can see the content of the file.
How can I make Doxygen generate a link to the actual content of my file, like it appears in the Related Pages tab ?
You can add an anchor in the headline of markdown and link it directly. This is more clean then linking to the created html file. See official doc.
Here is an examlple:
doit.md:
# Specific Information on doIt() {#doit_specific}
- First do this
- Then that
- And finish up
Then you can link it in your doxygen. e.g. doIt.h:
//! Does it
//!
//! See \ref doit_specific "specific information".
//!
void doIt();
Note: You can also just \ref doit_specific and it will use the headline as the text.
Additional info: Make sure, the markdown page appears in the related page sections. If it does not, you need to edit the doxygen settings. See https://stackoverflow.com/a/9522667/4675668

Keystone.JS render multiple template files

I use keystone.js together with handlebars as template engine. Until now I had one .hbs-file for each page. However, HTML-Code is growing over time and I would like to split the HTML into several files. Does keystone.js offer a simple way to render multiple template files?
I'd prefer not to use technologies like webpack just for that "simple" task.
You can use partials to break up your templates, so you can include one .hbs file in another file.
Add a new file in the templates/views/partials directory, for example myPartial.hbs, and then you can include it in another file like so:
{{> myPartial }}
KeystoneJS will handle registration of .hbs files in the templates/views/partials directory.
You can read more here:
http://handlebarsjs.com/partials.html
If you use the KeystoneJS generator to set up your project, you can see this in action where pagination.hbs is included in blog.hbs.

How to use Pingendo 4 with themes and templates

I'm using Pingendo V4 (not-beta).
I assume templates are partly completed pages that I can start with and modify, and that Themes are only selections of shapes, colors that I can use on my own pages. Is that correct?
Can I download a (I assume Bootstrap) theme or template, use it locally and then transfer the files to my web site? How is the download done and them integrated with Pingendo?
Thx.
Templates are completed pages that you can edit and customize to your liking. Themes are sets of customizations. Sometimes themes and templates are made for particular business types, for example pingendo has a app, resteraunt, and fasion templates complete with there coresponding themes. With Pingendo you can download your theme by doing the following: Go to the HTML tab, which gives you the HTML view of your page. Copy and paste that into your own index.html page. Secondly go to the sass view in Pingendo and copy and past it into a custom.sass file that you create. Keep in mind you will want to convert that sass to css, there are free tools that do this online. Depending on your webhost the method of putting them online will be different. Most of the time you will need to FTP your files on to the server, put your html into the main folder may be names something like public_html. Put your css into a folder in the main folder called css, make sure your link to the css in your index.html reflects the file path. Once you have it downloaded there is no need to reintegrate it into Pingendo, the only time you will need to go back there is if you need to make changes. Of course you could always hand code the changes as well.

Is it possible to add Google Analytics to doxygen generated files?

Is it possible to add Google Analytics to the HTML files generated by doxygen dynamically (e.g. in the Doxyfile) at the time they are auto-created? Can someone give an example of how this could be done from within the GUI or from within the Doxyfile?
Assuming the same HTML code needs to be added to each of the generated HTML files, you could replace Doxygen header using the HTML_HEADER option on the Doxyfile:
HTML_HEADER= = header.html
Doxygen can generate an initial header.html using the following command:
doxygen -w html <header> <footer> <stylesheet>
Where <header>, <footer> and <stylesheet> are the filenames that should be generated for the respective components.

How to create MSDN like links in Sandcastle documentation website?

I've generated a website documentation of my project with Sandcastle. This website uses frames so when I click though sites my URL in browser does not change.
I would like to have URL changed in browser when I browse through website documentation generated with Sandcastle. Why? Because I would like to link to concrete subpages of documentation from other parts of my developer environment.
And further more I would like to have this links permanent. So when I generate once again documentation from new version of my project, links will not change so that I will not need to change all links to new.
Is this possible and how to acomplish this?
If you add the code below to the top of SplitScreen.js the browser will "inject" the TOC frame and focus on the content you linked directly to (using the trick Vitaly Shibaev showed).
if (window==top) {
window.location = "/?topic=" + (window.location.pathname.substring(1));
}
This code works it the documentation is placed at the root of your website - if you have it in a sub-folder you need to expand on "/?topic" and remove the sub-folder part from the pathname part.
With this change you can use the "direct links". I also expect people who find you via Google get a better experience (getting the content they searched for AND the TOC bar).
In order to create correct links to specific subpages of documentation you may use similar request: $DOCUMENTATION_ROOT$/Index.aspx?topic=html/$TOPIC_ID$.htm
E.g. http://www.ewoodruff.us/shfbdocs/Index.aspx?topic=html/8dcbb69b-7a1a-4049-8e6b-2bf344efbbc9.htm
instead of http://www.ewoodruff.us/shfbdocs/html/8dcbb69b-7a1a-4049-8e6b-2bf344efbbc9.htm
Vitaliy and mawtex have solved the 'how to link to documentation subpages' part of your question.
The "making links permanent so they do not change when regenerating documentation" part of your questions is solved automatically, since the html file names created are based on a hash of the topic name by default. I.e. If you do not change the part of your code that you are documenting, then it will use the same file name.
You can change the way that html file names are generated, but all given methods are based on the member name or a hash of the topic ID, so links shouldn't break if the code hasn't changed.
See Sandcastle Help File Builder's NamingMethod documentation for more info.