我怎样才能使我的源适应包的不同版本中命令名称的变化?

我怎样才能使我的源适应包的不同版本中命令名称的变化?

我正在尝试在两个系统(一个是 Overleaf)上编译一个文档,但它们的 texlive 安装似乎存在差异,特别是软件包的版本acro。在一个系统上,如果我使用,我可以编译\acroifusedTF{}。在另一个系统上,我必须\acifused{}在同一个地方使用。我可以在序言中添加一些内容,例如“如果找不到 acifused,则 acifused 表示 acroifusedTF”吗?

我希望它能与 Overleaf 编译器配合使用,以便更轻松地共享文档。我希望它在本地工作,因为本地编辑和编译有时更快。我使用 git 保持它们同步。我在 Overleaf 中尝试了 2020 和 2019 texlive 选项。

一个简单的例子:

\documentclass{article}
\usepackage[utf8]{inputenc}

\title{test}
\author{tester}
\date{date}

\usepackage{acro}
\DeclareAcronym{DTS}{short=DTS, long=Divertor Thomson Scattering}

\begin{document}

\maketitle

Table~\ref{tab:my_label} uses an acronym before it appears in the body.
\begin{table}[!htb]
    \centering
    \begin{tabular}{c|c}
        a & b \\
        \hline
        c & d
    \end{tabular}
    \caption{An acronym is used in the caption of a float before being used in the body: \acroifusedTF{DTS}{\ac{DTS}}{\ac{DTS}\acreset{DTS}}.}
    \label{tab:my_label}
\end{table}


Now the acronym is used again, this time in the body, after it was already used in a caption:
\ac{DTS}.
I don't want the acronym to be used up in a float caption before it is used in the body.
Subsequent use: \ac{DTS}.

\end{document}

在此处输入图片描述

答案1

\providecommand{\acroifusedTF}{\acifused}

即使\acroifusedTF在定义 的旧系统上,也可以使用。这只是名称更改;功能没有改变。\acifused\acroifusedTF

答案2

我想出了一个基于的解决方案\ifcsname,在序言中添加了以下部分:

\newcommand{\acifusedadapt}[3]{%
  \ifcsname acifused \endcsname%
    \acifused{#1}{#2}{#3}%
  \else%
    \acroifusedTF{#1}{#2}{#3}%
  \fi%
}

然后使用\acifusedadapt{DTS}{\ac{DTS}}{\ac{DTS}\acreset{DTS}}.}later, 代替\acroifusedTF{...}

相关内容