我使用 showlabel 来跟踪方程式标签和部分标签。出于各种原因,我需要标签位于文本的边缘内,而不是在其外。根据我使用的 showlabel 参数,我可以将方程式标签或部分标签保持在边缘内,但不能同时保持两者。这是一个最小的工作示例:
\documentclass[12pt,letterpaper]{amsart}
\usepackage[inline]{showlabels}
\begin{document}
\section{First Section}
\label{sec:first}
\begin{equation}
x^2 + y^2 = z^2
\label{pythagorean}
\end{equation}
\end{document}
使用此设置,部分标签位于文本边距内,但不位于公式标签内。如果我将 showlabel 命令更改为
\usepackage[right]{showlabels}
那么公式标签在边距内,但不在部分标签内。我曾尝试过例如
\usepackage[right,inline]{showlabels}
但 latex 似乎只接受第一个选项。我需要做什么才能实现这两个设置?谢谢!
答案1
这是一个老问题,它showlabels
并不喜欢左对齐的方程式数字;其文档指出
[...] 这个包 [...] 也不能与该
leqno
选项一起使用(在某些时候它应该被修改为至少识别并警告任何情况下的冲突,虽然我不知道如何做到这一点)。
并且leqno
是 的默认值amsart
。
我有一个破解方法,但我必须承认我还没有真正彻底地测试过它,所以没有保证。
\documentclass[12pt]{amsart}
\usepackage[inline]{showlabels}
\makeatletter
\def\SL@eqntext#1{\rlap{\quad\SL@margintext{#1}}}
% alternative:
% \def\SL@eqntext#1{\rlap{\quad{\showlabelsetlabel{\SL@prlabelname{#1}}}}}
\makeatother
\begin{document}
\section{First Section}
\label{sec:first}
To show the margins just some text text text text text text text text
text text text text text text text text
\begin{equation}
x^2 + y^2 = z^2
\label{pythagorean}
\end{equation}
\end{document}
如果您使用注释行,您将避免使用标签周围的括号(以及有关未定义字体的烦人的警告)。