![穷人的“命名空间”](https://linux22.com/image/257138/%E7%A9%B7%E4%BA%BA%E7%9A%84%E2%80%9C%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E2%80%9D.png)
我搜索过“命名空间”,但所有这些帖子似乎都要求一些更高级的东西。
我遇到的问题可以通过重命名所有内容来解决,但这似乎并不“正确”。我的文档中有很多命令,例如\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
。
这对你有帮助吗?