最近在学习 Mathematica,想用 LaTeX 做一些笔记,发现 Mathematica 提供了一个 TeXForm 函数,但是处理这个的时候:
输出是\text{Graph}[\{a\unicode{f3d5}b\}]
我知道\unicode{}
命令是什么,因为当我在 Mathematica 中使用“ExportString”时,我得到了
%% AMS-LaTeX Created with the Wolfram Language : www.wolfram.com
\documentclass{article}
\usepackage{amsmath, amssymb, graphics, setspace}
\newcommand{\mathsym}[1]{{}}
\newcommand{\unicode}[1]{{}}
\newcounter{mathematicapage}
\begin{document}
\[\text{Graph}[\{a\unicode{f3d5}b\}]\]
\end{document}
然而,当我生成 pdf 文件时,我只得到了
很明显,a
和之间的符号b
没有显示出来。
然后我在字体MathematicaMono(mathematica用来显示符号的字体)中查找Unicode f3d5,找到了我想要的符号,但是我怎样才能将这个符号(或字符)放入我的pdf文件中,也就是说,如何将这个符号应用到latex环境中displaymath
。
顺便说一下,我正在使用 WinEdt10.1,带有 MiKTeX 和 PDFTeXify(PDFLaTeX、LuaLaTeX、XeLaTeX 或其他版本也可用)。
答案1
谢谢你们所有人,@jon、@DavidCarlisle 和 @BrunoLeFloch。没有你们的帮助,我无法独自解决这个问题。
这是一个示例,展示了我应该如何解决它。使用 winedt10.1、XeLaTeX 和包fontspec
。
\documentclass{article}
\usepackage{fontspec} %this line is added.
\usepackage{amsmath, amssymb, graphics, setspace}
\newcommand{\mathsym}[1]{{}}
\newcommand{\unicode}[1]{\textnormal{\fontspec{MathematicaMono}\uppercase{\symbol{"#1}}}} %this line is modified.
\newcounter{mathematicapage}
\begin{document}
\[\text{Graph}[\{a\unicode{f3d5}b\}]\]
\end{document}
除带有注释的行外,其他行均由 Mathematica 直接生成。
这就是关键:
\newcommand{\unicode}[1]{\textnormal{\fontspec{MathematicaMono}\uppercase{\symbol{"#1}}}}
当然,您需要先安装字体MathematicaMono,然后您就可以直接从Mathematica导入您的公式而无需进行任何修改。
代码的更好版本:
\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{fontspec}
\newfontfamily{\mathematicamono}{MathematicaMono}
\ExplSyntaxOn
\NewDocumentCommand{\mmono}{m}
{
\text{\mathematicamono#1}
}
\NewDocumentCommand{\unicode}{m}
{
\mmono { \symbol { \int_from_hex:n { #1 } } }
}
\ExplSyntaxOff
\begin{document}
\[\text{Graph}[\{a\unicode{f3d5}b\}]\]
\[\text{Graph}[\{a\mathrel{\unicode{f3d5}}b\}]\]
\end{document}