Javadoc:没有HTML标记的换行符?


80

对不起,可能是常见问题,但我只是找不到答案。

据我所记得的Eclipse,Javadoc注释中的空白行显示为(在源Javadoc弹出窗口中)作为换行符(具有额外的垂直间距)。

但是,在Netbeans中并非如此。

我可以配置Javadoc将空白行解释为换行符吗?

附加问题:我可以为源Javadoc弹出窗口覆盖默认的Netbeans行为(与此相关)吗?

我在说的是:

资源

/**
 * Paragraph One
 *
 * Paragraph Two
 */
 void someMethod() { }

Eclipse解释

 Paragraph One

 Paragraph Two

Netbeans解释

 Paragraph One Paragraph Two

1
现在,其中的许多答案已被NetBeans8.2过时(已取代),请参见下面@fujy的答案,它的工作原理非常完美。
Webel IT Australia-upvoter

Answers:


78

它与Netbeans无关。我怀疑您在一种情况下正在查看源代码,而在另一种情况下正在查看Javadoc的输出。换行符在HTML中并不重要:ergo输出不会显示它们。如果要换行,请使用<p><br>


4
正如我在问题中提到的,Eclipse确实将空白行视为段落。因此,我的假设是必须可能通过某些javadoc配置(是否有Netbeans)来实现这一点。
2011年

Eclipse向您显示了源代码,但已对其进行了格式化。Netbeans 6.9.1也向您显示了源代码,同上,即它也不会忽略换行符。但是,如果您以任何方式查看Javadoc的输出,那么如果这样做不正确,则意味着不要忽略换行符。
洛恩侯爵

40

我不确定这是否对OP有用,但是我放好<pre></pre>了文档,因此netbean不会弄乱我的格式。所以看起来像

/**
 * <pre>
 * Paragraph One
 *
 * Paragraph Two
 * </pre>
 */

这是我最接近以文本格式显示新行的方法。我正在使用NetBeans 7.1.2。这种使用code formatoption的方式不会重新格式化文档。在提示中显示doc仍被格式化。

更新:在Netbeans 8.x中,代码格式化中有一个选项可以禁用格式化注释。


13

中已经有一个选项NetBeans-在8.2版中经过测试-可让您保留注释中的新行,和/或在需要时添加<p>标签Javadoc

  • 仅从Tools菜单中选择Options
  • 转到Editor标签,然后Formatting标签
  • Language菜单中选择Java,然后在Category菜单中选择Comments
  • 如果要保留注释中的新行,请Preserve New Lines选中该General部分中的复选框。这将保留新行而不添加<p>标签
  • 如果您还想添加标签,Generate "<p>" on Blank Lines选中该Javadoc部分中的复选框。<p>

在此处输入图片说明


2
绝对是NetBeans 8.2的最佳答案。简单。但是,您应该对其进行编辑,以添加它仅在对代码执行Format(具有现有换行符)时才真正生效。必须小心,如果<p>手工已经有一些东西,有时可能会<p>``<p>在第一时间增加一倍。此后,它按预期工作。
Webel IT Australia-upvoter

4

我同意您的意见,HTML不属于源代码。可悲的是,我没有在谷歌搜索周围找到太多帮助。实际上很容易实现。

这是您可以编译和使用的自定义Doclet:

import com.sun.javadoc.*;
import com.sun.tools.doclets.standard.*;

/**
 * Formats text-only comments with HTML.
 */
@SuppressWarnings("restriction")
public final class TextDoclet {
    private static final Pattern NEWLINE_REGEX = Pattern.compile("\\n");
    private static final String BR = "<br/>\n";

    public static boolean start(RootDoc rootDoc) {
        for ( ClassDoc classdoc : rootDoc.classes())
            classdoc.setRawCommentText(formatText(classdoc.getRawCommentText()));

        return Standard.start(rootDoc);     
    }

    private static String formatText(String text) {
        return NEWLINE_REGEX.matcher(text).replaceAll(BR);
    }
}

如何使用javadoc调用它的示例:

javadoc -docletpath ~/project/text-doclet/target/text-doclet-1.0.0-SNAPSHOT.jar -doclet com.myorg.textdoclet.TextDoclet -sourcepath ~/project/myapp/src/main/java -subpackages com.myorg.myapp

2

JavaDoc显示CSS样式的定义方式。您可以编辑与段落标签关联的CSS样式来执行以下操作:

p {
    line-height: 25px;
}

1
谢谢,但是我确定Netbeans根本不会将空白行解释为一个段落(请参阅我的问题中的“ Netbeans解释”)。我的意思是:只有行时才能定义行距。
java.is.for.desktop,2011年

嗯 我看到了。但不是很确定Netbeans是否提供编辑此选项的选项。
2011年

2

这是一个伪溶液
(其可悲仅影响生成的Javadoc,但并没有在源极的Javadoc显示影响Netbeans的)。

指定一个包含以下内容的样式表:

div.block {
    white-space: pre;
}

0

我不知道Eclipse在这里做什么,但是如果您想要一般的行为(不仅是IDE),您可能不得不创建一个新的Doclet(它可能基于默认的HTML doclet),而是<p>在其中插入一个每个空行等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.