穷人的“命名空间”

穷人的“命名空间”

我搜索过“命名空间”,但所有这些帖子似乎都要求一些更高级的东西。

我遇到的问题可以通过重命名所有内容来解决,但这似乎并不“正确”。我的文档中有很多命令,例如\renewcommand{\vec}[1]{\mathbf{#1}}物理部分中的向量。但是,我想在我的最终论文中包含论文,有时相同的命令使用不同的定义(不同的领域)。因此,文件会自行编译,但如果我将它们包含在更大的文档中(这样它们就会获得页码并包含在目录中),这会导致冲突。

所以我的问题是:是否可以按文件“重写”命令中的前缀?也就是说,我定义\newcommand{\jonas@vec}[1]{\mathbf{#1}}并在我的特定文档中将jonas.tex所有命令重写\jonas@vec为不带 的部分\jonas@。这将允许我使用相同的语法,但具有不同的定义。

答案1

好的,我尝试给出一个答案。如果它对您的特定情况没有帮助,也许我们可以一起重新制定。

重新定义的关键当地的对于特定文档来说分组相应的代码,正如评论中已经指出的那样。

主要问题是如何包含单个文档。假设您正在使用该类combine,则主文档可能如下所示:

\documentclass[report]{combine}

\usepackage[paperwidth=3in,paperheight=4.5in]{geometry}

\usepackage{combinet}

\begin{document}

\title{My title Main}

\author{Myself}

\maketitle

\tableofcontents

\begin{papers}

  \import{testinclude1}

  \import{testinclude2}

\end{papers}

\chapter{Main Chapter}

$\vec{A}$

\end{document}

进一步testinclude1.tex假设

\documentclass{article}

\renewcommand{\vec}[1]{\mathbf{#1}}

\begin{document}

\title{My title One}

\author{Myself}

\maketitle

foo bar

$\vec{A}$

\end{document}

然后的重新定义\vec将“溢出”到 中testinclude2.tex,但不会溢出papers环境(因为它是环境局部的)。

如果将\import调用括在内{}(也形成一个组),那么的重新定义\vec将完全局限于testinclude1.tex

{\import{testinclude1}}

{\import{testinclude2}}

由于不了解该combine类别的详细信息,我预计分组不会产生任何不利影响,因为诸如目录条目之类的内容都会通过文件起作用.aux

示例输出

这对你有帮助吗?

相关内容