Reledmac - 任意段落编号/标签?

Reledmac - 任意段落编号/标签?

我用 Reledmac 编辑同一篇文章的两个不同版本。我把它们都作为独立的文本进行编辑,而不是让其中一个版本成为另一个版本的组成部分。两个版本中的一个版本偶尔会有一些段落是另一个版本所缺失的。

我希望能够为这些段落赋予不同于正常段落编号的标签 - 例如,如果版本 a 在第 1 段之后有一个段落,而版本 b 没有,我希望能够将此段落称为 1a。我试过,\setcounter{pstart}{value}但它只接受数字作为值;我也试过用 替换\numberpstarttrue\labelpstarttrue放在\label{1a}各个地方,但似乎没有在任何地方打印标签。

梅威瑟:

\documentclass[12pt, twoside]{book}
\usepackage{reledmac}
\begin{document}
\numberpstarttrue 
\beginnumbering
\pstart
This is paragraph 1.
\pend
\pstart
I would like to call this paragraph 1a.
\pend
\pstart
And then this would be paragraph 2.
\pend
\endnumbering
\end{document}

有没有办法做到这一点?

提前致谢!

答案1

这是我的解决方案自动化为您编号(和标签)。

在任何需要特殊标记的段落之前,您可以发出新命令\specialpar

此命令停止常规编号(不在计数器上加 1 pstart),而是推进一个新计数器pstartletter,然后以字母格式实现(“a”)。

然后,我们声明\thepstart应该始终打印数字字母(如果适用)。这意味着我们在段落开头以及在其他地方引用它时都会得到“1a”。

在对计数器和相关命令进行操作时,切勿破坏标签/引用机制。在我的示例中,我添加了选项\labelpstarttrue和包hyperref,以及\label{}s,以证明重新定义与之完美契合。请注意这不是必需的找到解决方案。

\thepstart这也是为什么我没有像 那样直接在 的定义中包含数字分隔符(“1a” 后面的点和空格)reledmac.sty。我们希望它位于段落开头,当然:

1a._Lorem ipsum...

但我们不想\ref{label}总是强迫自己使用点和空格,因为这可能会弄乱我们写作的标点符号:

请参阅文件 A 中缺少的段落 1a._...

(不过这只是一个建议,从技术上来说这并不是绝对必要的,是否采用取决于你。)

当特殊段落(或段落组)结束时,您可以发出\normalpar。计数器pstartletter将重置为 0,并且仅显示常规数字。

\documentclass{article}
\usepackage{reledmac}
\numberpstarttrue

\newcounter{pstartletter}
\newcommand{\specialpar}{\addtocounter{pstart}{-1}\stepcounter{pstartletter}}
\newcommand{\normalpar}{\setcounter{pstartletter}{0}}

\makeatletter
\renewcommand{\thepstart}{{\bfseries\@arabic\c@pstart\@alph\c@pstartletter}}    % no dot, for better format in label-ref
%\renewcommand{\thepstart}{{\bfseries\@arabic\c@pstart\@alph\c@pstartletter}. }     % dot included, as in reledmac.sty
\makeatother

\appto{\pstart}{. }     % for better format in label-ref

\labelpstarttrue        % for demonstration purposes
\usepackage[colorlinks]{hyperref}   % for demonstration purposes

\begin{document}
\beginnumbering

\pstart 
\label{p1}A shared paragraph, no. \ref{p1}. 
\pend

\specialpar % Execute this code before every "special" paragraph
\pstart 
\label{p1a}This is an extra paragraph, no. \ref{p1a}. 
\pend

\specialpar % Execute this code before **every** "special" paragraph
\pstart 
\label{p1b}This is another extra paragraph, no. \ref{p1b}. 
\pend
\normalpar % Execute this code at the end of **a group of** "special" paragraphs

\pstart 
\label{p2}A shared paragraph again, no. \ref{p2}. 
\pend

\pstart 
\label{p3}A shared paragraph, no. \ref{p3}. 
\pend

\specialpar
\pstart 
\label{p3a}This is one more extra paragraph, \ref{p3a}.
\pend
\normalpar

\pstart 
\label{p4}A shared paragraph again, no. \ref{p4}. 
\pend

\endnumbering
\end{document}

段落自动编号,可选字母

编辑

我现在意识到你没有明确要求自动编号段落。您要求一种随意更改段落标签的方法。很抱歉我仓促下结论!

您仍然可以使用上述框架并pstartletter手动设置第二个标签()。不要使用命令\specialpar\normalpar,而是在相关段落之前和之后使用以下组合:

\addtocounter{pstart}{-1}\setcounter{pstartletter}{1} % use 1 for a, 2 for b...
\pstart
This is my paragraph.
\pend
\setcounter{pstartletter}{0}

相关内容