Latex使用区分不同操作系统的宏命令

 
Category: LaTeX

写在前面

由于不同 的操作系统(例如我常用的 MacOS 以及Windows)下的 LaTeX 字体是不一样的, 一个明显的区别就是宋体在 Windows 下是 simsun(中易宋体), 而在 MacOS 下是华文宋体.

这在跨平台模板的制作中很麻烦, 如果使用下面的命令:

\setCJKmainfont{}

Windows 一般来说括号里面要写汉字即宋体, 而 MacOS 就要写 simsun.

下面用宏来重新定义一下.

一个例子

\documentclass{article}
\usepackage{ifplatform}
% must run with shell escape option!!!
% xelatex --shell-escape test.tex


\begin{document}
Now the \TeX~is running in :
\ifwindows
  Windows
\fi
\ifmacosx
  macOS
\fi
\iflinux
  Linux
\fi

\end{document}

注意这里有个坑点, 如果直接用 xelatex 编译的话不会出来具体的平台名称, 这是因为:

Package ifplatform Warning: 
    shell escape is disabled, so I can only detect \ifwindows.

所以一定要加上 ` –shell-escape`, 这里为了方便, 就写个全局的 latexmk 配置了. 具体可以看

latexmk conf for nvim and vimtex on mac;

运行之后的结果为:

Screenshot

字体设置

```latex \ifwindows \setCJKmainfont{宋体}%衬线字体 缺省中文字体为 \else \setCJKmainfont{SimSun} \fi

\ifwindows \setCJKsansfont{黑体}%serif是有衬线字体sans serif无衬线字体。 \else \setCJKmainfont{SimHei} \fi