我正在尝试实现与此线程相同的目标:我的 LaTeX 文件如何检测它们是否在 Overleaf 上进行编译?。
但是,\homepath
一直抛出以下错误:
Undefined control sequence.
C:\Users\USER
我该如何在 Windows 上解决这个问题?我相信需要在以下代码块中进行一些修改,但不知道该怎么做...
\makeatletter
\begingroup\endlinechar=-1\relax
\everyeof{\noexpand}%
\edef\x{\endgroup\def\noexpand\homepath{%
\@@input|"kpsewhich --var-value=HOME" }}\x
\makeatother
答案1
您可以使用包\ifwindows
中的ifplatform
命令跳过 Windows 上的路径查找,只需分配一些虚拟路径即可。此包需要 shell 转义来检测 Linux 和 Mac 之间的差异,但不需要命令\ifwindows
。
\documentclass{article}
\usepackage{ifplatform}
\makeatletter
\ifwindows\def\homepath{windows}\else
\begingroup\endlinechar=-1\relax
\everyeof{\noexpand}%
\edef\x{\endgroup\def\noexpand\homepath{%
\@@input|"kpsewhich --var-value=HOME" }}\x
\fi
\makeatother
\def\overleafhome{/home/whatever}% change as appropriate
\begin{document}
Homepath: \homepath
\ifx\homepath\overleafhome
Overleaf.
\else
Not Overleaf.
\fi
\end{document}