在一个 (复杂的) 命令定义,我正在使用\hyperref{...
。但是包 hyperref 会减慢编译速度。所以我想让 make\hyperref
什么都不做,只要包 hyperref 没有加载。
\usepackage{hyperref}
在后期,当我不需要经常编译时,我会添加一些内容到我的文本中。
所以我想到了\providecommand
。我不知道如何定义它,\hyperref
让它什么都不做,但不会阻止我的其余复杂命令的执行。
我写了一个 MWE。如果hyperref
包未加载,\secref
则应像没有一样执行\hyperref
,这意味着在我的愚蠢示例中,应该只\ref
执行。
\documentclass{article}
\providecommand{\hyperref}{»DO NOTHING«}
\newcommand{\secref}[1]{%
\hyperref{%
\ref{#1}
}
}
\begin{document}
\section{Huhu}
\label{CLA:huhu}
Text \secref{CLA:huhu}
\end{document}
我知道我的例子行不通,如果我加载了hyperref
包,但这不是问题。我对 MWE 缺乏更好的想法。
答案1
该hyperref
软件包附带了nohyperref
命令语法,hyperref
无需实际复杂的hyperref
机制。这使其对草稿文档很有用,这似乎正是您正在寻找的。
例子:
\documentclass{article}
\usepackage{nohyperref}
\newcommand{\secref}[1]{%
\hyperref[#1]{section \ref*{#1}}%
}
\begin{document}
\section{Huhu}
\label{CLA:huhu}
Text \secref{CLA:huhu}
\end{document}
当您接近文档的最终版本时,您只需将其替换nohyperref
为hyperref
。
hyperref
另一种可能性是使用以下选项加载draft
:
\documentclass{article}
\usepackage[draft]{hyperref}
\newcommand{\secref}[1]{%
\hyperref[#1]{section \ref*{#1}}%
}
\begin{document}
\section{Huhu}
\label{CLA:huhu}
Text \secref{CLA:huhu}
\end{document}
这也加快了文档编译的速度。
答案2
您可以简单地使用\ignorespaces
:
\documentclass{article}
\providecommand{\hyperref}[4]{#1\ignorespaces}
\newcommand{\secref}[1]{%
\hyperref{%
\ref{#1}
}{}{}{}
}
\begin{document}
\section{Huhu}
\label{CLA:huhu}
Text \secref{CLA:huhu}
\end{document}