我有一个坏习惯,就是不给标题贴标签,而且事后再贴标签很麻烦。有没有脚本/程序可以自动根据标题创建标签,这样
\section{headline1}
\subsection{subsection headline 1}
\section{headline2}
变成
\section{headline1} \label{sec:headline1}
\subsection{subsection headline 1} \label{sec:subsection headline 1}
\section{headline2} \label{sec:headline2}
一般来说,将标题从命令复制到命令\XXXsection{}
中的宏\label{}
?
如果没有,是否有可能制作类似的东西,如何制作?它不必是 tex 编辑器的一部分,也许只是将 .tex 文件视为 .txt?
编辑: 在我的例子中,标题只包含几个单词。除此之外,只有非格式化的文本,没有特殊符号。
答案1
如果您没有使用任何分段包,那么您可以\@sect
使用补丁 - 所有(未加星号的)分段命令来设置标题:
\documentclass{article}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@sect}% <cmd>
{\@xsect}% <search>
{\label{sec:#8}\@xsect}% <replace>
{}{}% <successs><failure>
\makeatother
\begin{document}
\section{headline1}
\subsection{subsection headline 1}
\section{headline2}
Section~\ref{sec:headline1};
Subsection~\ref{sec:subsection headline 1};
Section~\ref{sec:headline2}
\end{document}
我不鼓励这样做,因为\label
应该使用可能与实际标题完全不相关的描述性参考。
上述补丁适用于hyperref
假设它是在之后加载的\patchcmd
。