我有一个简单的标题页,我想让 ConTeXt 和 LaTeX 用户都可以使用它。每个用户只需分别输入\usemodule[myTitlepage]
或 即可\usepackage{myTitlepage}
。
我想通过确定是否使用 LaTeX 来做到这一点,如果是,则将所有使用的 ConTeXt 宏定义为它们的 LaTeX 等效项,以便可以用 ConTeXt 编写标题页,类似于:
\ifLaTeX
\newcommand{\starttikzpicture}[1]{\begin{tikzpicture}[#1]}
\newcommand{\stopttikzpicture} {\end {tikzpicture} }
\newcommand{\crlf}{\\}
...
\else
\doConTeXtRelatedStuff
\fi
\starttikzpicture[scale=3]
\node [text centered] {it works! \crlf or does it?};
\stoptikzpicture
我该用什么来代替伪代码\ifLaTeX
并且整个想法是否可行?
答案1
您可以检查仅在 LaTeX 或 ConTeXt 中定义的一些宏。例如,ConTeXt 定义\contextformat
和\contextversion
,但愿它们不应由 LaTeX 包定义。同样,LaTeX 定义\documentclass
未由任何 ConTeXt 模块定义的。
但是,更好的解决方案可能是让kpse
您选择格式。创建一个名为的文件,mytitlepage.tex
其中$TEXMF/tex/genereic/....
包含通用代码。然后mytitlepage.sty
在创建一个$TEXMF/tex/latex/...
包含 latex 特定代码和加载的文件,并在创建一个包含 ConTeXt 特定代码和加载的mytitlepage.tex
文件。这样,根据格式选择正确的文件。t-mytitlepage.(tex|mkii|mkiv|lua)
$TEXMF/tex/context/third/...
mytitlepage.tex