**LaTeX** 插入 Unicode 字符(关系数据库字符)

**LaTeX** 插入 Unicode 字符(关系数据库字符)

我最近尝试插入关系代数的字符(左/右(半)连接,...),但到目前为止失败了。我知道 Unicode 和 ASCII 编码存在问题,但我认为它[utf8]{inputenc}应该可以工作。

\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\DeclareUnicodeCharacter{27d7}{⟗}

\begin{document}
\end{document}

不起作用。

! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.3 \DeclareUnicodeCharacter{27d7}{⟗}

? q
OK, entering \batchmode

是字体的问题还是我做错了什么?

哦,对我来说最好的事情就是知道如何创建一个命令\fullOuterJoin来为我插入字符(比复制字符更容易)。

答案1

您想在全面的 LaTeX 符号列表, 或者这里的方法之一。 在这种情况下,Ulrike Fischer 为您找到了它并将其发布在评论中:\fullouterjoin来自stix(或也stix2)。

的第一个参数\DeclareUnicodeCharacter应该大写,所以27D4。第二个参数应该是命令来生成字符。也就是说,如果你已经有命令\fullouterjoin,你可以使用\DeclareUnicodeCharacter将字符 ⟖ 转换为运行该命令的宏。

在这种情况下,\fullouterjoin是一个数学模式命令,stix并且您想在文本模式下使用它,这样\ensuremath{\fullouterjoin}就可以了。

\documentclass{scrartcl}

\usepackage[utf8]{inputenc} % The default since 2018
\usepackage[T1]{fontenc}
\usepackage{stix2}

\DeclareUnicodeCharacter{27D7}{\ensuremath{\fullouterjoin}}

\begin{document}
\( \textnormal{foo} ⟗ \textnormal{bar} \)
\end{document}

STIX 2 样品

另一种方法\DeclareUnicodeCharacter与 LuaLaTeX 或 XeLaTeX 兼容,它是newunicodechar

\documentclass{scrartcl}

\usepackage[utf8]{inputenc} % The default since 2018
\usepackage[T1]{fontenc}
\usepackage{stix2}

\usepackage{newunicodechar}
\newunicodechar{⟗}{\ensuremath{\fullouterjoin}}

\begin{document}
\( \textnormal{foo} ⟗ \textnormal{bar} \)
\end{document}

这两种方法的缺点是,要加载一个符号,你必须加载整个stixstix2包。没有标准仅加载一个符号的方法来自传统的 TeX 包,但是这里有一些在这种情况下可以工作的代码:

\documentclass{scrartcl}

\usepackage[utf8]{inputenc} % The default since 2018
\usepackage[T1]{fontenc}
\usepackage{amsmath}

\DeclareFontEncoding{LS1}{}{}
\DeclareFontSubstitution{LS1}{stix2}{m}{n}
\DeclareFontFamily{LS1}{stix2frak}{\skewchar\font127 }
\DeclareFontShape{LS1}{stix2frak}{m}{n} {<-> stix2-mathfrak}{}
\DeclareFontShape{LS1}{stix2frak}{b}{n} {<-> stix2-mathfrak-bold}{}

\newcommand\textfullouterjoin{%
  {\fontencoding{LS1}\fontfamily{stix2frak}\fontshape{n}\selectfont\symbol{"13}}}

\newcommand\fullouterjoin{%
  \ifmmode\mathbin{\text{\textfullouterjoin}}%
  \else\textfullouterjoin%
  \fi}

\DeclareUnicodeCharacter{27D7}{\fullouterjoin}

\begin{document}
\( \textnormal{foo} ⟗ \textnormal{bar} \)
\end{document}

Computer Modern/STIX 2 示例

由于手册中stix2-type1有一张字体图表,说明了此符号位于哪种字体的哪个位置,因此我从软件包的源文件中复制了相关行.sty.fdd以设置符号字体。然后,我编写了一个命令,要么在文本模式下将字形作为文本符号插入,要么在数学模式下将其排版为二元运算符。(因此它不再需要\ensuremath。)最后,我从第一个示例中复制了代码,以使 Unicode 字符扩展为该命令。

相关内容