自动创建标签

自动创建标签

我有一个坏习惯,就是不给标题贴标签,而且事后再贴标签很麻烦。有没有脚本/程序可以自动根据标题创建标签,这样

\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

相关内容