我正在尝试在两个系统(一个是 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{...}
。