我在使用 LyX (2.1.1 版) 的交叉引用系统时遇到了麻烦。我使用 gui 中的标签功能将标签放在环境的一侧,以便将来能够引用。当我想添加引用时,我会使用 gui 中的引用功能。我选择了我想要的标签,而且由于我不仅想要数字,还想要环境名称(例如:部分、定理、ecc..),我还选择了“格式化引用”。
我使用 ams 类,因为我需要输入数学。具体来说,从“文档”>“设置”>“模块”中,我选择“定理(AMS,按类型编号)、定理(AMS 扩展,按类型编号)、定理(按章节内类型编号)”,以及其他与数学无关的定理(例如 fixcm)。我还在用意大利语编辑文档,所以我希望参考文献用意大利语标注。请记住,在 Lyx 编辑器和 pdf 中,我看到所有环境的名称都翻译正确。问题只出现在交叉引用中。
问题是,如果我引用定理,标签会自动显示,但用的是英文(定理而不是定理)。如果我引用定义,除了数字之外,什么也看不到。
似乎只显示某些类型的环境标签的问题很常见,但尝试一些建议的解决方案似乎对我不起作用。例如,添加以下内容:
\newcommand{\figref}[1]{Figure~\ref{#1}}
\newcommand{\tabref}[1]{Table~\ref{#1}}
\newcommand{\eqnref}[1]{Eq.~\ref{#1}}
\newcommand{\secref}[1]{Section~\ref{#1}}
\newcommand{\defref}[1]{Definition~\ref{#1}}
会出现错误,因为 LyX 似乎添加了某种定义,以便能够管理唯一有效的标签(定理、引理、章节),通过添加以下内容:
\AtBeginDocument{\providecommand\thmref[1]{\ref{thm:#1}}}
\RS@ifundefined{subref}
{\def\RSsubtxt{section~}\newref{sub}{name = \RSsubtxt}}
{}
\RS@ifundefined{thmref}
{\def\RSthmtxt{theorem~}\newref{thm}{name = \RSthmtxt}}
{}
\RS@ifundefined{lemref}
{\def\RSlemtxt{lemma~}\newref{lem}{name = \RSlemtxt}}
{}
有什么建议吗?我使用 LyX 的方式是否错误?任何帮助都将不胜感激。
答案1
LyX 决定在格式化引用前面放置什么的方式是根据事物的标签,例如,如果您对“thm:clever-result”进行格式化引用,那么它将被格式化为在前面带有“Theorem”(即使标签在引理中!)。因此,您需要确保每个标签中都有适当的前缀。对于定理,LyX 默认将“thm:”放在每个标签的开头,但由于历史原因,它不会在定义的开头放置任何内容,因此您需要自己做。我相信正确的前缀是“defn:”,但您需要尝试一下看看。
我认为前缀的语言由文档的语言决定:在文档设置中,选择语言页面,然后您可以在那里进行更改。这应该与您创建定理时使用的文本使用的语言相同。
答案2
我刚刚找到了一种个性化 LyX 呈现格式化参考文献的方式,我使用的是版本,2.2.2
因此您的里程可能会有所不同,它涉及 3 个步骤,我针对数字进行了此操作,
- 首先确保已办理登机
Use refstyle (not prettyref) ...
手续Document -> Settings -> Document Class
。 - 引用带有格式化参考的图形,假设标题是
fig:my-figure
,那么 LyX 将创建一个\figref{my-figure}
没有的fig:
。 - 添加
\renewcommand{\figref}[1]{Fig.~\ref{fig:#1}}
到文档的 LaTeX 序言中,注意我们fig:
在最后一步考虑了丢失的内容。另外,请注意,您可以Fig.~
根据需要更改内容,例如,\renewcommand{\figref}[1]{Figura~\ref{fig:#1}}
如果您使用的是西班牙语。
如果您从文档中删除所有图形格式的参考文献,则应该\renewcommand
从文档的 LATeX 序言中删除,否则它将无法编译。
笔记:
为了防止 LyX 格式化命令在您自己的命令之后运行,您可以用 包装它们\AtBeginDocument{...}
,例如:
\AtBeginDocument{\renewcommand{\eqref}[1]{Eq.~(\ref{eq:#1})}}