J'ai essayé d'incorporer une formule dans Javadoc

introduction

J'utilise Doxygen depuis de nombreuses années parce que je voulais intégrer des formules dans la documentation API de Java, mais Javadoc semble également être capable d'incorporer des formules à l'aide de MathJax, alors je l'ai essayé.

environnement

Paramètres POM

Avec Apache Maven Javadoc Plugin, si vous ajoutez le CDN de MathJax à l'en-tête, vous devriez pouvoir incorporer des formules dans la documentation de l'API Javadoc, mais un message d'erreur indiquant que vous ne pouvez pas incorporer JavaScript dans les commentaires. Apparemment, il est devenu plus strict depuis Java 8. Par conséquent, spécifier --allow-script-in-comments``` comme option avec '' ne fonctionne pas. Après une enquête plus approfondie, Javadoc Plugin 3.0.0 a changé la spécification de l'option de '' à <additionalOptions> ''. En passant, j'ai ajouté un Doclet qui peut utiliser Markdown afin que Markdown puisse être utilisé. Les paramètres finaux du fichier POM sont les suivants. ( ... </ plugins> </ build> ``)

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <additionalOptions>
            <additionalOption>--allow-script-in-comments</additionalOption>
        </additionalOptions>
    <header>
        <![CDATA[
        <script type="text/javascript"
        src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
        </script>
        ]]>
    </header>
    <doclet>ch.raffael.mddoclet.MarkdownDoclet</doclet>
    <docletArtifact>
        <groupId>ch.raffael.markdown-doclet</groupId>
        <artifactId>markdown-doclet</artifactId>
        <version>1.4</version>
    </docletArtifact>
    <useStandardDocletOptions>true</useStandardDocletOptions>

Échantillon de formule

En guise de test, j'ai intégré l'exemple de formule suivant dans javadoc.

/**
 * 
 * @author hoge
 * 
 * MathJax Samples
 * ===
 * 
 * This javadoc API document is configured to use MathJax's CommonHTML mode with
 * web fonts to display the equations, which produces uniform layout and 
 * typesetting across browsers. But MathJax can also be configured to use 
 * HTML-CSS (for legacy browsers), SVG, and native MathML rendering when 
 * available in a browser. You can try the various output modes using the 
 * MathJax context Menu (which you access by ctrl+clicking / alt-clicking an 
 * equation) or the button below. 
 * 
 * - The Quadratic Formula
 * $$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$
 * 
 * - Cauchy's Integral Formula
 * 
 * $$ f(a) = \frac{1}{2\pi i} \oint\frac{f(z)}{z-a}dz $$
 * 
 * - Double angle formula for Cosines
 * 
 * $$ \cos(\theta+\phi)=\cos(\theta)\cos(\phi)−\sin(\theta)\sin(\phi) $$
 * 
 * 
 */
public class Main {
    
}

La figure ci-dessous est un document API généré automatiquement à partir du Javadoc ci-dessus. La formule s'affiche proprement. J'ai pu confirmer que je pouvais intégrer des formules dans Javadoc sans avoir à me soucier d'utiliser Doxygen.

Résumé

J'utilise Doxygen pour intégrer des formules dans la documentation de l'API, mais j'ai confirmé que Javadoc pouvait également gérer de jolies formules. Javadoc est un outil standard qui génère des spécifications d'API HTML à partir du code source Java, c'est donc un grand avantage de pouvoir migrer de Doxygen vers Javadoc. Doxygen a utilisé le style Javadoc, donc la migration ne semble pas non plus si difficile. Le Doclet nouvellement introduit qui peut utiliser Markdown peut également générer automatiquement UML, donc on s'attend à ce que l'expression des documents API soit plus diversifiée.

Matériel de référence

Recommended Posts

J'ai essayé d'incorporer une formule dans Javadoc
J'ai essayé d'incorporer une formule dans Javadoc
J'ai essayé un problème de calendrier avec Ruby
J'ai essayé de créer une fonction de connexion avec Java
J'ai essayé la métaprogrammation avec Java
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
J'ai créé un client RESAS-API en Java
J'ai créé un PDF avec Java.
J'ai essayé un petit docker de digdag.
J'ai essayé de mettre Domino11 dans CentOS7
J'ai essayé de créer une application cartographique simple dans Android Studio
J'ai essayé d'écrire du code comme une déclaration de type en Ruby
J'ai essayé d'utiliser l'API Elasticsearch en Java
J'ai essayé le nouveau yuan à Java
J'ai essayé de jouer un peu avec BottomNavigationView ①
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
J'ai créé un programme de jugement des nombres premiers en Java
J'ai essayé de mettre facilement CentOS-7 dans un PC dont je n'ai plus besoin
[Pour les débutants] J'ai essayé d'utiliser DBUnit avec Eclipse
J'ai essayé d'implémenter des relations polymorphes à Nogizaka.
[Pour les débutants] J'ai essayé d'utiliser JUnit 5 avec Eclipse
J'ai essayé d'organiser la session en Rails
java j'ai essayé de casser un simple bloc
J'ai essayé de développer un outil de gestion des effectifs
J'ai essayé de développer un site Web pour étudier DUO3.0.
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
J'ai écrit un programme de jugement des nombres premiers en Java
J'ai créé un jeu Janken en Java (CLI)
J'ai essayé de créer une application de clonage LINE
J'ai créé une bibliothèque d'extension Ruby en C
J'ai essayé Spring.
J'ai essayé de mettre Tomcat
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
J'ai essayé youtubeDataApi.
J'ai essayé de refactoriser ①
J'ai essayé de mettre en place un référentiel distant pour Maven
J'ai essayé de développer une application en 2 langues
J'ai essayé de créer une compétence Alexa avec Java
J'ai écrit un programme de factorisation prime en Java
J'ai essayé de développer un site Web pour enregistrer les dépenses.
J'ai essayé d'implémenter un serveur en utilisant Netty
J'ai essayé de casser le bloc avec java (1)
J'ai essayé d'exécuter Java dans un terminal Mac
J'ai essayé JHipster 5.1
J'ai trébuché lorsque j'ai essayé d'utiliser neo4j dans l'environnement jenv, alors prenez note
J'ai fait un jeu de problèmes de calcul simple en Java
Essayé l'API Toot et Streaming de Mastodon en Java
J'ai essayé d'implémenter la notification push Firebase en Java
J'ai essayé de développer un site Web de partage de boutique de ramen.
# 2 [Note] J'ai essayé de calculer quatre-vingt-dix-neuf avec Java.