如何只使用来自某个包的一个符号而不影响文档的其余部分

如何只使用来自某个包的一个符号而不影响文档的其余部分

{免责声明:我是 LaTeX 和编码方面的新手}

我想使用“oz”包中的一个符号。它是$\fcmp$符号。

但是,当我在文档中使用 \usepackage{oz} 时,它几乎会更改所有符号。这是一个问题,因为它在数学模式下默认为斜体字母,而我使用斜体字母来表示其他内容。它还会更改我文档中的许多逻辑符号。

我不想使用整个包,只想使用一些特殊符号。

如果有帮助的话,这些就是我正在使用的包。

\documentclass{article}
\usepackage{oz}
\usepackage[utf8]{inputenc}
\usepackage{multirow}
\usepackage{array}
\usepackage[table]{xcolor}
\usepackage{amsmath}
\usepackage{newtxmath}
\usepackage{tikz}
\usepackage{mathtools}
\usepackage{xcolor}

我对这里缺少代码和表格感到抱歉,这是我第一次使用这个堆栈交换。

答案1

唉,你正在寻找的精确的东西并不完全可能。TeX 引擎是在计算资源相当有限的时代设计的,当时命名空间不在菜单上。

相反,您需要做的是查看oz源代码来了解如何\fcmp定义。

运行 LaTeX 时,您将看到一行指示oz.styLaTeX 正在读取文件的位置,这样您就知道文件在哪里,并且可以在您最喜欢的文本编辑器中打开它(很可能是您用来编辑 LaTeX 文件的编辑器)。通过 ¹ 进行搜索oz.sty将显示以下定义:

\def \fcmp  {\mathbin{\raise 0.6ex\hbox{\oalign{\hfil$\scriptscriptstyle
     \mathrm{o}$\hfil\cr\hfil$\scriptscriptstyle\mathrm{9}$\hfil}}}}

它显示了\fcmp命令是如何定义的。

现在,有一点幸运的是,这不使用任何内部 LaTeX 命令,所以你可以直接将其粘贴到你的序言中代替\usepackage{oz},但这里有一个警告:命令的定义方式显然对 的objectz包做出了一些必要的假设,其中oz是部分²,后面\fcmp有一个空格不是由于使用了纯 TeX命令和定义\def后面的空格,因此是可选的。最好这样写:\fcmp

\NewDocumentCommand\fcmp{}{\mathbin{\raise 0.6ex\hbox{\oalign{\hfil$\scriptscriptstyle
     \mathrm{o}$\hfil\cr\hfil$\scriptscriptstyle\mathrm{9}$\hfil}}}}

它将\fcmp以更加 LaTeX 原生的方式进行定义。


  1. 部分(但不是全部)LaTeX 软件包会提供源代码文档,这些文档可能会解释在实施软件包时所做的选择。ObjectZ 虽然会分发.dtx生成文档的文件,但没有关于所做选择的内部文档。
  2. 或者,这可能只是软件包编写者的一个错误。

答案2

我建议不是使用\fcmpfrom oz.sty(一组 kludge),但分号 frombbold\fatsemifrom stmaryrd

以下是一个比较。

\documentclass{article}
\usepackage{amsmath}

\NewDocumentCommand\fcmp{}{%
  \mathbin{%
    \raise 0.6ex\hbox{%
      \oalign{%
        \hfil$\scriptscriptstyle\mathrm{o}$\hfil\cr
        \hfil$\scriptscriptstyle\mathrm{9}$\hfil
      }%
    }%
  }%
}

\NewDocumentCommand{\altfcmp}{}{\mathbin{\text{\usefont{U}{bbold}{m}{n};}}}

\NewDocumentCommand{\altfcmpbis}{}{\mathbin{\text{\usefont{U}{stmry}{m}{n}\symbol{"23}}}}

\begin{document}

$a\fcmp b$

$a\altfcmp b$

$a\altfcmpbis b$

\end{document}

您可以决定是否希望该符号\mathbin具有不同的状态。

在此处输入图片描述

我是怎么找到的\fatsemi?首先,我查看了手册stmaryrd,发现该字形被称为\fatsemi。接下来是包代码,其中有

\DeclareSymbolFont{stmry}{U}{stmry}{m}{n}

\stmry@if\DeclareMathSymbol\fatsemi\mathbin{stmry}{"23}\fi

因此,我拥有定义命令的所有要素,而不会仅仅为了单个符号而浪费数学符号字体​​。

请选择并使用\fcmp(或任何您喜欢的名称)来代替我为了进行比较而使用的名称。

相关内容