在我的私人笔记中,我使用非标准数学符号:我喜欢用 0 来表示空集。如果我在论文中这样做,我的导师会很不喜欢,这很合理。所以,我希望在我的论文版本和\emptyset
他的(以及其他人)的论文版本中使用 0。
理想情况下,我只能拥有一个版本的 LaTeX 源,它可以生成两个不同版本的论文。更好的是,它会生成一个 PDF 文件,在我的环境中显示 0,而 \emptyset
在他的环境中显示结果。(我使用 Debian,他使用 Mac OS 作为我们的工作站。)
这些有可能吗?这里似乎有几个问题需要解决 - 解释两个符号大小的差异,并实际实现条件。
答案1
老年人(包括很多教授和我)倾向于阅读打印在纸上的文档。因此,您可能会创建一个打印出来的文档,其显示效果与 PDF 查看器中显示的文档不同(前提是使用符合标准的查看器,例如 AR,这对这群人来说很可能会发生):
\documentclass{article}
\usepackage{ocgx2}
\newcommand\0{%
\makebox[0pt][l]{%
\begin{ocg}[printocg=never, showingui=never]{for me}{forMe}{on}
0
\end{ocg}%
}%
\begin{ocg}[printocg=always, showingui=never]{for print}{forPrint}{off}
\emptyset
\end{ocg}%
}
\begin{document}
Is $\0=0$?
\end{document}
答案2
您可以重新定义您的版本/您的机器中设置的方式\emptyset
,但要使其与他的版本/他的机器中的原始定义相匹配。为此,我假设您只会共享您的.tex
源代码(也许还有一些图像)。但是,在您的工作文件夹中保留一个名为 的特殊文件,emptysetaszero.tex
其中包含以下内容
\AtBeginDocument{\renewcommand{\emptyset}{0}}% Your new definition for \emptyset
现在,在你的论文中添加
\InputIfFileExists{}{emptysetaszero}% Update the way \emptyset is represented
如果文件存在 - 在您的机器上 -emptysetaszero.tex
将被输入,这将重新定义显示方式\emptyset
。如果文件不存在 - 在他的机器上 - 则不会发生任何事情。一个来源,两个不同的结果,只要emptysetaszero.tex
不共享。
\emptyset
我们推迟对的重新定义\AtBeginDocument
,以防其他事物(包)也可能对其进行重新定义。
答案3
我会定义一个新的布尔值,例如\newif\ifUnofficial
,然后使用它作为开关,根据您的喜好给出不同的定义。话虽如此,我建议使用标准符号:)
\documentclass{article}
\newif\ifUnofficial
\Unofficialtrue % mine versions
%\Unofficialfalse % the rest of the world
\ifUnofficial
\newcommand\0{0}
\else
\newcommand\0{\emptyset}
\fi
\begin{document}
Is $\0=0$?
\end{document}