# Introduction to Doxygen
###### tags: `tutorial` `electrical_system` `NTURT`
##### Author: @QuantumSpawner
## Why using doxygen
Coding in a perplexing manner is one's own right when working on a project alone, but it's a totally different story when collaborating with others. Hence **every sigle person** should document their code for others to understand.
Doxygen has been the synonym for documenting C/C++ programs, it even supports other programming languages such as python javascript, etc.
It also generate beautiful web page such as: [VTK documentation](https://vtk.org/doc/nightly/html/index.html) for others new to the program have a greate place to start.
## Using doxygen
Doxygen with latex support can be installed in (debian-based) linux by:
```bash=
sudo apt install doxygen-latex
```
or a very handly [VS code extension for doxygen](https://marketplace.visualstudio.com/items?itemName=cschlosser.doxdocgen) can be used to generate and highlight the syntax of doxygen.
### External resources
Official website: [doxygen](https://doxygen.nl/)
Tutorial: [How to document your code using doxygen](https://flcwiki.desy.de/How%20to%20document%20your%20code%20using%20doxygen)
Parameters to use when using doxygen: [Doxygen parameters](https://www.doxygen.nl/manual/commands.html)
:::info
Note: In order to use latex in doxygen, please change `USE_MATHJAX` setting to `YES` (default to `NO`) in the doxygen config file `Doxyfile`.
:::
## Doxygen homework
Since all code should be documented, plase document your code using doxygen when you see
:::success
Please document your code using doxygen.
:::
in `homework`or`topic` section of other tutorials.
The documentation should include but not exclusive for `\author`, `\brief`, `\param` and `\return` parameters. And then generate a `html` file. Please submit both the generated `html` file and the documented code when submitting homeworks/topics.