当前位置: 首页 > 知识库问答 >
问题:

如何在web输出中为目录指定navtitle,而在pdf输出中不指定?

阴宏爽
2023-03-14

鉴于网页输出的目录区域相当狭窄,我想假设网页的导航标题较小,但继续在PDF输出中呈现较长的主题标题。

以下标记似乎根本不起作用(有或没有< code>audience属性):

<task id="guid-76a10a16-9952-44fa-ad32-9b9cf2c3eee6">
    <title>Primary Topic Title</title>
    <titlealts audience="web">
        <navtitle>Short Title</navtitle>
    </titlealts>
</task>

在地图中添加locktitle=“yes”似乎也没有什么区别:

<topicref type="task" href="primary-topic-title.dita" locktitle="yes"/>

以下内容适用于web,但不幸的是,在PDF目录中也有简短的标题:

<topicref type="task" href="primary-topic-title.dita" locktitle="yes">
    <topicmeta>
        <navtitle>Short Title</navtitle>
    </topicmeta>
</topicref>

我尝试使用下面的代码分别指向Web和PDF,但是这导致在转换过程中出现错误,表明我试图引用处理上下文之外的主题。这对于web来说很好,但是当检查PDF输出时,会有到。dita”文件,而不是PDF文件中的交叉引用。

<topicref audience="pdf" type="task" href="primary-topic-title.dita"/>

<topicref audience="web" type="task" href="primary-topic-title.dita" locktitle="yes">
    <topicmeta>
        <navtitle>Short Title</navtitle>
    </topicmeta>
</topicref>

注意:我使用的是XML Mind的Ditac处理器

共有2个答案

符功
2023-03-14

不幸的是,DITA只有<code>print</code>属性可以根据输出类型进行筛选,不能直接用于<code>navtitle</code>元素。你可以使用

<topicref print="printonly" href="primary-topic-title.dita"/>
<topicref print="no" href="primary-topic-title.dita" locktitle="yes">
  <topicmeta>
    <navtitle>Short Title</navtitle>
  </topicmeta>
</topicref>

但是那会重复主题引用。基于< code>props添加自定义分析属性并基于该属性进行筛选可能更容易。这样,您只能调节< code>navtitle。

羊渝
2023-03-14

虽然我不熟悉DITAC工具,但我将描述在DITA Open Toolkit和其他为DITA规范提供全面支持的工具中工作的方法。

您最初的方法是正确的:

<task id="guid-76a10a16-9952-44fa-ad32-9b9cf2c3eee6">
    <title>Primary Topic Title</title>
    <titlealts audience="web">
        <navtitle>Short Title</navtitle>
    </titlealts>
</task>

您的处理必须为PDF和web输出使用不同的ditaval文件。PDF ditaval文件必须包括:

<prop action="exclude" att="audience" val="web" />

Web dit的文件必须包括:

<prop action="include" att="audience" val="web" />
 类似资料:
  • win11 go run .会生成exe文件到缓存目录,每次都弹出防火墙很烦,能不能指定生成目录? 谢谢

  • 问题内容: 实际上,我有一个xml文件和多个xsl文件(C:/ Users / santhanamk / Desktop / newxslt / Xslt输入/ xsl列表)。当我将xml和xsl0作为输入时,我需要以字符串形式获取输出。因此,在获得输出之后,我需要为xsl1提供与输入字符串相同的输出,以获取另一个输出(字符串)。然后,我需要将输出作为xsl2的输入字符串,以获取另一个输出。当给定

  • #include <stdio.h> int main(void) { int i; for (i = 0; i < 100; i++) { printf("i = %d\n", i); } return 0; } 技巧 在gdb中,缺省情况下程序的输入输出是和gdb使用同一个终端。你也可以为程序指定一个单独的输入输出终端。 首先,打开一个新终端,使

  • 问题内容: Gradle 4.0昨天发布了,我为此更新了我的项目。 现在,我收到以下警告: Gradle现在为每种JVM语言使用单独的输出目录,但是此构建为源集中的所有类假定一个目录。此行为已被弃用,并计划在Gradle 5.0中删除。 我想为每种语言使用单独的输出目录。我需要进行哪些更改才能实现这一目标? 我尝试过的事情: 其次是 删除构建目录然后运行。 删除gradle和build目录,然后运

  • Hello!. 我发现system函数可以调用bash语句,但不能回收结果. 现在我的方案是中调用的bash语句里把输出重定向到某个文件,然后在C语言中去读那个文件的内容. 我感觉这样非常别扭,有没有更合适的方案?

  • 问题内容: 在基于ReactJS的应用程序中,我执行以下操作: 问题是:“某些文本”包装在DOM中的其他span元素中。有什么办法可以避免这种现象,只输出原始文本? 要明确:我想输出 不 问题答案: 更新: 这在 React v15(2016-04-06)中 已“修复” –现在,注释节点已添加到每段文本周围,但不再包装在标签中。 我们收到了来自社区的一些惊人的贡献在此版本中,我们想强调这种拉请求由