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