免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

show 出 labels

在写较长论文或写书的时候,交叉引用会很多,通常较前写的 label 到后面就不记得了,需要翻查。

还好 PDF 与 tex 有双向搜索,从 PDF 双击跳到 tex 找到 label,复制,返回到正在写的地方粘贴,不算麻烦,但也有丁点儿麻烦,一直以来也就这样了。

今天无意中在某模板里看到一种处理方式,那就是新建一个命令,其定义是 label 后把名称也输出,在完稿后再改成仅 label。

这样在 PDF 就可以直接复制 label,不用在 tex 里跳来跳去,确实省事了些。

想法是好,不过该模板所给的定义却很粗糙:
  1. \newcommand{\mlabel}[1]{\label{#1}  % Use the next two lines to show names
  2. {\hfill \hspace{1cm}{\small\tt{{\ }\hfill(#1)}}}}
复制代码
实际使用时往往影响原内容的排版,特别是在公式中,因为这时 \hfill 没用,同时也占了公式的位置,很难看。

当然这些其实都无所谓,反正只是暂时的,完稿后就没用了,但我还是觉得有必要改进一下,毕竟写的时候太难看也会影响心情。

为了尽量不影响原内容的排版,显示的 label 名应该放到边注中去,但在公式中用 latex 自带的 \marginpar 似乎有问题,所以这里使用一个专门处理边注的宏包 marginnote。

测试代码:
  1. \documentclass{article}
  2. \usepackage{amsmath,amsthm,xcolor}
  3. \newif\ifshowlables
  4. \showlablestrue
  5. \ifshowlables
  6. \usepackage{marginnote}
  7. \newcommand\mlabel[1]{\label{#1}%
  8. \marginnote{\normalfont\small\texttt{\color{blue}#1}}}%
  9. \else\let\mlabel\label\fi
  10. \usepackage{hyperref}
  11. \newtheorem{thm}{theorem}
  12. \begin{document}
  13. \section{test}\mlabel{sec:01}
  14. some text
  15. \begin{thm}\mlabel{thm:AG}
  16. the AG inequality is:
  17. \begin{equation}\mlabel{eqn:AG}
  18. a+b\ge2\sqrt{ab}.
  19. \end{equation}
  20. \end{thm}
  21. ying yong: Section \ref {sec:01}, Theorem \ref {thm:AG} and Equation \ref {eqn:AG}.
  22. \end{document}
复制代码
效果:
QQ截图20180622215416.png
2018-6-22 21:55


完稿后,将上述代码的第四行注释掉,然后删除 .aux 文件再编译即可。
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
冇钱又冇样、冇型又冇款、冇身材又冇文采、冇学历又冇能力、冇高度冇速度冇力度兼夹冇野做!(粤语)
口号:珍爱生命,远离考试。

回复 1# kuing

这个命名好的话,应该不会有这些问题吧。比如那个sec:01的,就直接起名叫\label{sec:01},如果是在几级标题下面的,就叫c:1:s:1:eq:1之类的,到时候就好找了。

TOP

返回列表 回复 发帖