具有新交叉引用属性的“标签多重定义”

具有新交叉引用属性的“标签多重定义”

记录多个不同的属性时(参见texdoc ltproperties-doc在线的),则会发出警告。我无法同时记录所有属性(有些属性必须在环境主体之前记录,有些则必须在之后记录;下面的 FOO 是环境每次使用的唯一“id”的替代品)。

文档中提到,如果“同时使用和”就会发生这种情况\label{ABC}\RecordProperties{ABC}{page}但即使不使用也会发生这种情况\label

避免这些警告的最佳方法是什么?

可能与我之前的问题

活动视频:

\NeedsTeXFormat{LaTeX2e}[2023/11/01]
\documentclass{article}

\NewProperty{property-a}{now}{}{a}
\NewProperty{property-b}{now}{}{b}

\begin{document}

\section{abc}

\RecordProperties{FOO}{property-a}

% stuff happens

\RecordProperties{FOO}{property-b}

Referring to them is fine: \RefProperty{FOO}{property-a} and \RefProperty{FOO}{property-b}

\end{document}

这将导致日志包含以下内容:

LaTeX Warning: Label `FOO' multiply defined.

LaTeX Warning: There were multiply-defined labels.

辅助功能如下:

\relax 
\@writefile{toc}{\contentsline {section}{\numberline {1}abc}{1}{}\protected@file@percent }
\new@label@record{FOO}{{property-a}{a}}
\new@label@record{FOO}{{property-b}{b}}
\gdef \@abspage@last{1}

答案1

\RecordProperties在文档中的特定“位置”记录所选属性的状态/值。如果您使用该命令两次,则有两个位置,因此应使用两个不同的“位置名称”。代码并不真正关心中间是否有内容或您记录了哪些属性。

示例中的引用工作归因于实现细节,并不是您应该依赖的东西(如果您在代码中稍后决定扩展属性列表,则很容易中断)。

\documentclass{article}

\NewProperty{property-a}{now}{}{a}
\NewProperty{property-b}{now}{}{b}

\begin{document}

\section{abc}

\RecordProperties{LOC1}{property-a}

% stuff happens

\RecordProperties{LOC2}{property-b}

Referring to them is fine: \RefProperty{LOC1}{property-a} and \RefProperty{LOC2}{property-b}

\end{document}

相关内容