谢谢这,物种的自动缩写和一些技术术语对于我这个 LaTeX 初学者来说变得可以理解了 :-) 然而,我的博士生导师(不是 LaTeX 用户)批评了我使用这些缩写太频繁,降低文本理解能力。
我发现了一个Basically: No.
回答类似的数学问题,而且重置词汇表包的选项。然而后者似乎需要有意识地设置重置命令,这与简单地手动写出术语相比并不会节省太多时间。
因此,我想知道是否有一种方法可以全局重新定义缩写宏,以考虑其使用的上下文。例如,为了以基于规则或上下文敏感的方式拼写出一个术语,例如,,,in every heading
等等,upon every 1st use within a (sub)section
in every figure caption
同时继续在正常段落中使用缩写是否有可以实现此目的的软件包?如果有,该如何实现?如果没有,您知道有哪些软件可以实现此目的吗?
答案1
虽然它没有实现我的一些更高级的想法,但这里有一个可能有用的方法。它基于我以前的相关答案甚至来自 Marco Daniel 的旧技巧(\ifenv
)。
代码:
\usepackage{acronym}
\usepackage{etoolbox}
\makeatletter
\def\ifenv#1{
\def\@tempa{#1}%
\ifx\@tempa\@currenvir
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
\newcommand*{\acn}{\AC@starredfalse\protect\@acn}%
\WithSuffix\newcommand\acn*{\AC@starredtrue\protect\@acn}%
\newcommand{\@acn}[1]{%
\ifAC@dua
\ifAC@starred\acl*{#1}\else\acl{#1}\fi%
\else
\ifenv{figure}{%
\ifAC@starred\acl*{#1}\else\aclu{#1}\fi%
}{%
\expandafter\ifx\csname AC@#1\endcsname\AC@used%
\ifAC@starred\acs*{#1}\else\acs{#1}\fi%
\else
\ifAC@starred\acl*{#1}\else\aclu{#1}\fi%
\fi
\fi}}
\makeatother
\preto\section{\acresetall}
\acn
acronym
是的克隆\ac
,但它不是使用全名(包括括号中的缩写形式),而是在第一次使用时只打印全名。与我的旧答案相比,新答案是测试我们是否处于图形环境中,在这种情况下始终使用全名形式。
我还告诉所有首字母缩略词在每个部分的开头重新设置(上面的最后一行)。您可以轻松用\section
或\chapter
替换\subsection
。
用法:
\begin{document}
\acrodef{ecoli}[\emph{E. coli}]{\emph{Escherichia Coli}}
\section{Intro}
Here were are going to write about \acn{ecoli}. We are interested in \acn{ecoli}.
\section{Background}
Some more about \acn{ecoli}. And a few more \acn{ecoli} facts.
\begin{figure}[h]
\centering\bfseries{This is a figure}
\caption{A picture of \acn{ecoli}}
\end{figure}
\end{document}