【问题标题】:syntax highlighting for javadoc?javadoc的语法高亮显示?
【发布时间】:2010-11-26 08:53:59
【问题描述】:

目前我在我的 javadoc 中使用 PRE 标记格式化代码示例,例如:

/**
 * Example javadoc
 * 
<pre>
String foo = "bar";
</pre>
 *
 * @return   true if the operation completed
 */

但这在生成的 javadoc 中显得相当单调乏味,我更希望有一些类似于 SyntaxHighlighter 的语法突出显示。

如何做到这一点?

【问题讨论】:

    标签: java syntax-highlighting javadoc


    【解决方案1】:

    这里的其他答案都有效,但会引入额外的依赖项或增加额外的构建复杂性。如果您使用 Maven 生成文档,并希望以最简单的方式使其在没有额外文件或依赖项的情况下工作,请添加到 maven-javadoc-plugin 配置:

    <additionalOptions>-html5 --allow-script-in-comments</additionalOptions>
    <header><![CDATA[
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/vs.min.css">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
        <script type="text/javascript">hljs.initHighlightingOnLoad();</script>
    ]]></header>
    

    完整的插件配置如下所示:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
            <additionalOptions>-html5 --allow-script-in-comments</additionalOptions>
            <nohelp>true</nohelp>
            <show>private</show>
            <header><![CDATA[
                <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/vs.min.css">
                <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
                <script type="text/javascript">hljs.initHighlightingOnLoad();</script>
            ]]></header>
        </configuration>
        <executions>
            <execution>
                <id>attach-javadocs</id>
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    Pick your theme from here 并将上面的“vs”替换为您喜欢的主题(所有小写字母,单词之间带有破折号,例如mono-blue;如果您想要的主题不起作用,您可以查看here获取可用文件列表)。

    然后像这样写你的例子:

     /**
      * Does something cool.
      * <pre><code class="java">{@code
          // some example code here
          int x = 5;
      * }</code></pre>
      */
    

    https://burningmime.gitlab.io/setmatch/javadoc/com/burningmime/setmatch/RuleDB.html

    编辑:您实际上并不需要 &lt;pre&gt;&lt;code class="java"&gt; 中的课程。您可以修改该 javascript 位,以便根本不需要更改源文件,并且 {@code} 部分中的任何内容都将突出显示,因为 Javadoc 已经添加了 &lt;code&gt; 标记。我不知道足够多的 JavaScript 来做到这一点,但应该不会太难。该解决方案可能是所有解决方案中侵入性最小的,因为它只是构建配置中的几行代码。

    我正在标记这个社区 wiki,所以如果有人想加入并添加它,请这样做。

    【讨论】:

      【解决方案2】:

      另一种选择是使用pegdown-doclet,它允许您使用 Github 风格的防护代码块。

      ```java
      public static class Example {}
      ```
      

      【讨论】:

        【解决方案3】:

        发现这个问题正在寻找其他东西。在此期间,我编写了一个工具,将 gist 示例嵌入到 JavaDoc 中:https://www.codenameone.com/blog/javadoc-source-samples-that-dont-suck.html

        您可以在我们的代码中看到这一点,例如: https://www.codenameone.com/javadoc/com/codename1/components/MediaPlayer.html

        https://www.codenameone.com/javadoc/com/codename1/ui/package-summary.html

        【讨论】:

          【解决方案4】:

          迟到总比没有好。

          我的这个answer 解释了——尽管它的标题——如何使用 SyntaxHighlighter 作为 OP 请求向您的 Javadocs 添加语法突出显示功能。

          答案假设您使用的是Maven,但它的好处是所有您的项目将自动继承在Javadoc 中进行语法高亮显示的能力。您将不必为每个项目都这样做。有了这个秘籍,您无需在每个项目中执行任何操作即可拥有该功能。

          此外,如果您想要进行样式自定义(即您的 Javadoc 的外观),这与您将使用的机制相同。

          【讨论】:

            【解决方案5】:

            您可以使用jQuery 使用beautyOfCode 插件来完成它。我不确定是否有一种简单的方法可以连接到 javadoc 生成,但事后您可以在标题中执行以下操作:

            $(function(){  
                $("pre").beautifyCode('java');  
            });
            

            PRE 标记中的所有文本都将突出显示为 java.lang.查看上面的链接了解更多信息。

            【讨论】:

              猜你喜欢
              • 2016-06-09
              • 1970-01-01
              • 2011-08-26
              • 2011-09-22
              • 2016-08-16
              • 2015-05-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多