showlabel:将所有标签保留在边距内

showlabel:将所有标签保留在边距内

我使用 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}

在此处输入图片描述

如果您使用注释行,您将避免使用标签周围的括号(以及有关未定义字体的烦人的警告)。

相关内容