我如何检测我正在使用哪个 tikzmark 版本?

我如何检测我正在使用哪个 tikzmark 版本?

我们\listfiles可以轻松列出所有已加载包的当前版本。

但它没有透露有关 TikZlibrary 版本的任何信息tikzmark

我怎样才能检测到它?

问题特别在于,当我使用 Overleaf 时,我无法使用类似texdoc tikzmark或类似的分发工具找到该版本。

梅威瑟:

\listfiles
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document}
    Something with \tikzmarknode{A}{TikZ Mark}
    \begin{tikzpicture}[remember picture, overlay]
        \draw[<-, red] (A) -- ++(1,-1);
    \end{tikzpicture}   
\end{document}

日志中的文件列表:

 *File List*
 article.cls    2018/09/03 v1.4i Standard LaTeX document class
  size10.clo    2018/09/03 v1.4i Standard LaTeX file (size option)
    tikz.sty    2019/02/02 v3.1.1 (3.1.1)
     pgf.sty    2019/02/02 v3.1.1 (3.1.1)
  pgfrcs.sty    2019/02/02 v3.1.1 (3.1.1)
everyshi.sty    2001/05/15 v3.00 EveryShipout Package (MS)
  pgfrcs.code.tex
 pgfcore.sty    2019/02/02 v3.1.1 (3.1.1)
graphicx.sty    2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR)
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)
graphics.sty    2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR)
    trig.sty    2016/01/03 v1.10 sin cos tan (DPC)
graphics.cfg    2016/06/04 v1.11 sample graphics configuration
  pdftex.def    2018/01/08 v1.0l Graphics/color driver for pdftex
  pgfsys.sty    2019/02/02 v3.1.1 (3.1.1)
  pgfsys.code.tex
pgfsyssoftpath.code.tex    2019/02/02 v3.1.1 (3.1.1)
pgfsysprotocol.code.tex    2019/02/02 v3.1.1 (3.1.1)
  xcolor.sty    2016/05/11 v2.12 LaTeX color extensions (UK)
   color.cfg    2016/01/02 v1.6 sample color configuration
 pgfcore.code.tex
pgfcomp-version-0-65.sty    2019/02/02 v3.1.1 (3.1.1)
pgfcomp-version-1-18.sty    2019/02/02 v3.1.1 (3.1.1)
  pgffor.sty    2019/02/02 v3.1.1 (3.1.1)
 pgfkeys.sty    
 pgfkeys.code.tex
 pgfmath.sty    
 pgfmath.code.tex
  pgffor.code.tex
    tikz.code.tex
   expl3.sty    2019-01-28 L3 programming layer (loader) 
expl3-code.tex    2019-01-28 L3 programming layer 
l3pdfmode.def    2019-01-28 v L3 Experimental driver: PDF mode
l3keys2e.sty    2018-10-17 LaTeX2e option processing using LaTeX3 keys
  xparse.sty    2018-10-17 L3 Experimental document command parser
supp-pdf.mkii
epstopdf-base.sty    2016/05/15 v2.6 Base part for package epstopdf
infwarerr.sty    2016/05/16 v1.4 Providing info/warning/error messages (HO)
  grfext.sty    2016/05/16 v1.2 Manage graphics extensions (HO)
kvdefinekeys.sty    2016/05/16 v1.4 Define keys (HO)
 ltxcmds.sty    2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
kvoptions.sty    2016/05/16 v3.12 Key value format for package options (HO)
kvsetkeys.sty    2016/05/16 v1.17 Key value parser (HO)
etexcmds.sty    2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
ifluatex.sty    2016/05/16 v1.4 Provides the ifluatex switch (HO)
pdftexcmds.sty    2018/09/10 v0.29 Utility functions of pdfTeX for LuaTeX (HO)
   ifpdf.sty    2018/09/07 v3.3 Provides the ifpdf switch
epstopdf-sys.cfg    2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
 ***********

答案1

我最近类似问题尝试查找 Overleaf 上使用的 Inkscape 版本。随后,我发现了以下方法:


首先,你可以使用

\input|"texdoc -l tikzmark"

获取 texmf 路径,这已经告诉我们一些有关 TeX Live 版本的信息。目前,Overleaf 生成

/usr/local/texlive/2017/texmf-dist/doc/latex/tikzmark/tikzmark.pdf

所以他们使用的是 2017 版本的 TeX Live。


此时,我只想通过graphicx或将文档(第一页)pdfpages包含到文档中,但那行不通。我还尝试使用将手册文件复制到项目目录中,但没有成功cp。尝试使用inkscape(可用于在 Overleaf* 中将.svg文件转换为.pdf)执行相同操作(使用-A-e选项)也没有成功。看来他们的系统已经针对此类恶作剧进行了保护。

* 我不知道在执行此操作时(通过包)将.pdf.pdf_tex文件放在哪里svg。用户似乎无权访问它们。有了这些信息,可能会发现在正确目录中执行此操作的另一种途径,其中的权限不同。


然而,我们确实可以访问tikzmark源代码。我们可以使用以下命令打印它:

\verbatiminput{/usr/local/texlive/2017/texmf-dist/source/latex/tikzmark/tikzmark.dtx}

(或列出的软件包之一)。瞧,往下几页我们找到了版本:

% \date{v1.3~from 2017/06/01}

正如 Phelype Oleinik 在评论中指出的那样,我们可以用来kpsewhich直接获取文件的路径.dtx

\documentclass{article}

\usepackage{verbatim}
\usepackage{catchfile}

\begin{document}

\CatchFileDef\filepath{|"kpsewhich tikzmark.dtx"}{}
\verbatiminput{\filepath}

\end{document}

答案2

这是一个相当愚蠢的检查,但它确实有效:)

据 CTAN 报道,有三个版本tikzmark,所以可能没有人(包括 Overleaf 用户)拥有除这三个之外的其他版本。

这三个版本分别于 2016 年、2017 年和 2018 年发布。幸运的是,我可以访问这三个版本。通过比较源代码,我发现每个版本中都存在/不存在宏。以下宏检查这些宏是否存在并打印版本日期:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\makeatletter
\newcommand\tikzmarkversion{%
  \@ifundefined{tikzmark@inside}%
    {2016-04-09}%
    {%
      \@ifundefined{tikzmarknode}%
        {2017-06-02}%
        {2018-10-20}%
    }%
}
\makeatother

\begin{document}
    I have Ti\emph{k}Zmark version \tikzmarkversion

    Something with \tikzmarknode{A}{TikZ Mark}
    \begin{tikzpicture}[remember picture, overlay]
        \draw[<-, red] (A) -- ++(1,-1);
    \end{tikzpicture}
\end{document}

在我的计算机上打印:

在此处输入图片描述

以及 Overleaf 报道:I have TikZmark version 2017-06-02

其他版本抱怨\tikzmarknode不存在,但版本日期是正确的。


更新:tikzmark我找到了2013 年之前冻结的 TeXLive 版本的存档版本。tikzmark在 TeXLive 中首次出现是在 2013 年。此版本 3 年内保持不变。它在 TeXLive 2016 中进行了更新,在 TeXLive 2017 中保持不变。第三次更新是针对 TeXLive 2018。因此,更合适的检查是(当然,直到今天):

\makeatletter
\newcommand\tikzmarkversion{%
  \@ifundefined{tikzmark@inside}%
    {TL 2013--2015}%
    {%
      \@ifundefined{tikzmarknode}%
        {TL 2016--2017}%
        {TL >2018}%
    }%
}
\makeatother

当然,这只显示了 TeXLive 的冻结版本。该软件包可能在一年内更新了两次,因此中间的某个版本可能被覆盖,没有在冻结时生效。可能有许多未公布的更新,正如 moewe 所说,因此很难确定。但是,我会选择第二次测试,因为通常如果没有当前的 TeXLive,他们的版本就是冻结的,所以这个测试可能比 CTAN 的公告更确定。

OverleafI have TikZmark version TL 2016–2017在此文中进行了报道(这符合他们使用 TeXLive 2016 的说法:)。

我想我tikzmark现在是一名历史学家了:)

答案3

如果你有本地 TeX 安装,只需查看手册即可了解版本。例如,在我的 Mac 上,我只需输入

 texdoc tikzmark

在控制台上发现我的机器已受到祝福(我真的是说在这里受到了祝福!)v1.6 from 2018/10/18

如果你没有安装 LaTeX,因为你正在使用 overleaf,那么,我不知道。不过,我觉得这个问题应该有一个答案

如何获取 overleaf 上使用的软件包版本的手册?

但可能 overleaf 帮助中心(而不是本网站)对此有更多说明。至少我对此无话可说(我想说的是,如果某家公司以免费软件包为基础提供服务,那么该公司至少应该让用户轻松获得软件包版本信息)。

相关内容