创建 ConTeXt/LaTeX 混合模块

创建 ConTeXt/LaTeX 混合模块

我有一个简单的标题页,我想让 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

相关内容