我希望製作一些編輯器工具:當我只處理文件的草稿時,我想在每個方程式後面顯示equation
(由 設定)的「名稱」 。\label
例如,如果
\begin{equation}
\label{eq::einstein}
E=mc^2
\end{equation}
我想看到類似的東西
E=mc^2 (1)
(等式::愛因斯坦)
我必須嘗試重新定義\label
以儲存參數,\@currentlabelname
然後重新定義以在(到頁邊註釋框中)之後environment
equation
列印。\@currentlabelname
equation
我的 MnWE:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{marginnote}
\usepackage{tikz}
\setlength{\marginparwidth}{1.5cm}
\usepackage{todonotes}
\usepackage{regexpatch}
\makeatletter
\xpatchcmd{\@todo}{\setkeys{todonotes}{#1}}{\setkeys{todonotes}{size=\tiny,#1}}{}{}
\makeatother
\newcommand{\note}[2][yellow]{\todo[color=#1]{\tiny #2}}
\makeatletter
\let\oldlabel\label
%%
%% Problem occurs here
%%
\def\label#1{\oldlabel \gdef\@currentlabelname{#1}}
\let\Oldequation\equation
\let\Oldendequation\endequation
\renewenvironment{equation}{\Oldequation}{\Oldendequation \note[blue!90!black]{\textcolor{white}{\@currentlabelname}}}
\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{equation}
\label{equ::lenvente}
d_{twin}=\frac{1}{\beta}
\end{equation}
\lipsum[1]
\end{document}
感謝您的時間!
答案1
你的例子中一個明顯的錯誤是
\def\label#1{\oldlabel \gdef\@currentlabelname{#1}}
正如\oldlabel
預期的那樣(\let\oldlabel\label
!)並且正在吞噬\gdef
。你可以嘗試
\def\label#1{\oldlabel{#1} \gdef\@currentlabelname{#1}}
但無論如何,你想要的東西很容易實現
\documentclass{article}
\usepackage{xcolor}
\usepackage{showkeys}
\makeatletter
\renewcommand*\showkeyslabelformat[1]{\colorbox{blue!90!black}{\textcolor{white}{#1}}}
\makeatother
\begin{document}
\begin{equation}
\label{equ::lenvente}
d_{\mathrm{twin}}=\frac{1}{\beta}
\end{equation}
\end{document}