![具有新交叉引用属性的“标签多重定义”](https://linux22.com/image/471085/%E5%85%B7%E6%9C%89%E6%96%B0%E4%BA%A4%E5%8F%89%E5%BC%95%E7%94%A8%E5%B1%9E%E6%80%A7%E7%9A%84%E2%80%9C%E6%A0%87%E7%AD%BE%E5%A4%9A%E9%87%8D%E5%AE%9A%E4%B9%89%E2%80%9D.png)
记录多个不同的属性时(参见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}