上下文相关的物种或缩写宏是否可能?

上下文相关的物种或缩写宏是否可能?

谢谢,物种的自动缩写和一些技术术语对于我这个 LaTeX 初学者来说变得可以理解了 :-) 然而,我的博士生导师(不是 LaTeX 用户)批评了我使用这些缩写太频繁,降低文本理解能力。

我发现了一个Basically: No.回答类似的数学问题,而且重置词汇表包的选项。然而后者似乎需要有意识地设置重置命令,这与简单地手动写出术语相比并不会节省太多时间。

因此,我想知道是否有一种方法可以全局重新定义缩写宏,以考虑其使用的上下文。例如,为了以基于规则或上下文敏感的方式拼写出一个术语,例如,,,in every heading等等,upon every 1st use within a (sub)sectionin 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}

\acnacronym是的克隆\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}

(只需将其粘贴到另一个块之后并编译两次即可获得: 上述代码的输出

相关内容