LyX:LaTeX 命令内的文本未以 XHTML 格式导出

LyX:LaTeX 命令内的文本未以 XHTML 格式导出

我的 LyX 文档的序言中有这个 LaTeX 命令:

  \newcommand{\scenebreak}{%
    \par
    \vspace{\baselineskip}
    \填充
    {\大的 * * *}
    \填充
    \vspace{\baselineskip}
    \par}

我可能做错了。在 PDF 导出中,我得到了我想要的:3 个居中的大星号,上面和下面有一点垂直空间,用于场景之间的间隔。

在 XHTML 导出中:什么都没有。嗯,我认为是一个空段落。在纯文本导出中,只有一个额外的空白行。

这可以做到吗?还是我每次都必须自己输入这些星号?

我正在使用 XHTML 导出作为 Calibre 的源来制作 MOBI 和 EPUB 文件,因此我也会投票支持以更好的方式满足该目标的答案。

答案1

原因是使用 LyXHTML 时,LyX 会直接导出为 HTML。它无法将 ERT 导出为 HTML,因为LyX 不会将 LaTeX 转换为 HTML。例如,LyX 知道什么是粗体文本(如果您使用 LyX 机制而不是 ERT),如果输出是 LaTeX,它会导出\textbf,如果是 HTML,它会导出<b>。LyX 不知道您的 ERT 中有什么,因为那是您添加的自定义 LaTeX。LyX 不会解析它。它只是输出它。但对于 LyXHTML 来说,输出它是没有意义的。

答案2

我认为你可能发现了 LyX 中的一个 bug,可以考虑报告。我认为这可能是一个错误,因为没有什么我在 LyX 中插入的 Evil Red Text 由 LyXHTML 导出。

但您不必每次都输入星号,因为 LyX 有一个非常强大的快捷模式,您可以使用它来避免使用 ERT。

转到Tools > Preferences > Editing > Shortcuts > New并插入为函数

command-sequence paragraph-break; inset-insert vspace medskip; paragraph-params \align center; font-size larger; math-insert * * *; char-forward; inset-insert vspace medskip; paragraph-break; paragraph-params \align default

这将插入非常接近您要查找的内容,尽管星号处于数学模式并且空格medskip。我无法立即弄清楚如何插入纯文本星号,但为此,您可以检查Help > LyX Functions

我希望这足以修复错误:)

答案3

我有一个部分解决方法,将其插入到“文档”>“设置”>“本地布局”中

Style Scenebreak

  Font
    Size Large
  EndFont

  Align center
  LatexType paragraph

  TopSep 1.5
  BottomSep 1.5

  NextNoIndent 1

  HTMLStyle
    div.scenebreak {
    font-size: 150%;
    text-align: center;
    }
  EndHTMLStyle

End

这给了我一个“Scenebreak”样式,我只需在其中输入星号或其他内容即可。我需要做更多的工作才能使其在 LaTeX 中正确显示,但 XHTML 输出已经足够了。

相关内容