reStructuredText 是否与回忆录类兼容?

reStructuredText 是否与回忆录类兼容?

虽然我可以用功能齐全的 LaTeX 编写“真正的”文档,但我经常切换到重新结构化文本作为简单文档(如会议记录等)的轻量级标记语言。我对我的工作流程非常满意(file.txt -> rst2latex-2.6.py -> pdflatex -> file.pdf),直到最近我决定要使用该类memoir,就像我处理真实文档一样。

reStructuredText 的文档指出该类通过--documentclass=memoir选项受支持。但是,我的文档现在无法编译,因为存在一些我不太明白的命令脆弱性问题:

标题和章节标题将转换为如下内容:

\title{\phantomsection%
  This it the title%
  \label{this-it-the-title}}

看起来没什么article问题,但最后却memoir出错了(日志文件中大约有 15 个错误)。

这是一个明显但未记录的错误,还是我首先做了一些明显错误的事情?

最小(不)工作示例:

#!/bin/sh

rm -f test.*

cat >> test.txt <<EOF
This it the title
=================

this is dummy text
EOF

rst2latex-2.6.py -V
rst2latex-2.6.py --verbose --documentclass=memoir test.txt test.tex
pdflatex -interaction=nonstopmode test.tex 

至于输出,我得到了:

rst2latex-2.6.py (Docutils 0.9 [release], Python 2.6.8, on darwin)
This is pdfTeX, Version 3.1415926-2.3-1.40.12 (TeX Live 2011/MacPorts 2011_5)
...
(...then the usual latex yada yada, including about 15 "errors"...)
...
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on test.log.

以防万一,这里是 docutils 生成的完整(且不正确的)LateX 文档:

\documentclass[a4paper]{memoir}
% generated by Docutils <http://docutils.sourceforge.net/>
\usepackage{fixltx2e} % LaTeX patches, \textsubscript
\usepackage{cmap} % fix search and cut-and-paste in Acrobat
\usepackage{ifthen}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

%%% Custom LaTeX preamble
% PDF Standard Fonts
\usepackage{mathptmx} % Times
\usepackage[scaled=.90]{helvet}
\usepackage{courier}

%%% User specified packages and stylesheets

%%% Fallback definitions for Docutils-specific commands

% hyperlinks:
\ifthenelse{\isundefined{\hypersetup}}{
  \usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref}
  \urlstyle{same} % normal text font (alternatives: tt, rm, sf)
}{}
\hypersetup{
  pdftitle={This it the title},
}

%%% Title Data
\title{\phantomsection%
  This it the title%
  \label{this-it-the-title}}
\author{}
\date{}

%%% Body
\begin{document}
\maketitle

this is dummy text

\end{document}

答案1

问题出在生成的代码中

%%% Title Data
\title{\phantomsection%
  This it the title%
  \label{this-it-the-title}}

article在和其他类中有效,但memoir由于扩展不及时,在 中无效。

一个解决方法是说服 rst2latex 放在和\protect之前,但我真的不明白里面的那些命令应该做什么。\phantomsection\label\title

答案2

吉奥姆,

我建议你采取以下措施回答,这解释了当 hyperref 与目录中未包含的节标题(带有星号的节命令)一起使用时或在目录中手动包含标题时,需要此说明,以正确引用标题而不是不同的段落。

相关内容