货币符号:法国法郎II

货币符号:法国法郎II

这是货币符号:法国法郎

考虑下面的例子:

\documentclass{article}

\usepackage{fontspec}
\usepackage{siunitx}

\DeclareRobustCommand*{\myfranc}{%
  \begingroup
    \fontspec{FreeSerif.otf}%
    ^^^^20a3%
  \endgroup
}
\DeclareSIUnit{\franc}{\myfranc}

\setmainfont[
  BoldFont = lmroman10-bold.otf,
  ItalicFont = lmroman10-italic.otf,
  BoldItalicFont = lmroman10-bolditalic.otf,
  SlantedFont = lmromanslant10-regular.otf,
  BoldSlantedFont = lmromanslant10-bold.otf,
  SmallCapsFont = lmromancaps10-regular.otf
]{lmroman10-regular.otf}


\begin{document}

\SI{1000}{\franc}

\end{document}

这是 Heiko Oberdiek 在他的回答) 以前可以正常工作,但现在不行了;现在只打印数量,不打印单位(法郎符号)。我该如何解决这个问题?

另外,我该如何删除以下字体警告?

\normalsize输入行 26 上的数学模式下的命令无效。

答案1

该命令\fontspec永远不应在文档中使用;定义一个字体系列并使用它。

\documentclass{article}

\usepackage{fontspec}
\usepackage{siunitx}

\DeclareRobustCommand*{\myfranc}{%
  \mbox{\freeserif^^^^20a3}%
}
\DeclareSIUnit{\franc}{\myfranc}

\setmainfont[
  BoldFont = lmroman10-bold.otf,
  ItalicFont = lmroman10-italic.otf,
  BoldItalicFont = lmroman10-bolditalic.otf,
  SlantedFont = lmromanslant10-regular.otf,
  BoldSlantedFont = lmromanslant10-bold.otf,
  SmallCapsFont = lmromancaps10-regular.otf
]{lmroman10-regular.otf}
\newfontfamily{\freeserif}{FreeSerif.otf}

\begin{document}

\SI{1000}{\franc}

\end{document}

在此处输入图片描述

如果您愿意,也可以直接输入:

\documentclass{article}

\usepackage{fontspec}
\usepackage{siunitx}
\usepackage{newunicodechar}

\setmainfont[
  BoldFont = lmroman10-bold.otf,
  ItalicFont = lmroman10-italic.otf,
  BoldItalicFont = lmroman10-bolditalic.otf,
  SlantedFont = lmromanslant10-regular.otf,
  BoldSlantedFont = lmromanslant10-bold.otf,
  SmallCapsFont = lmromancaps10-regular.otf
]{lmroman10-regular.otf}
\newfontfamily{\freeserif}{FreeSerif.otf}

\newunicodechar{₣}{\text{\freeserif ₣}}
\newcommand{\FF}{₣}
\DeclareSIUnit{\franc}{\FF}

\begin{document}

\SI{1000}{\franc} is 1000\,₣ or \SI{1000}{₣}

\end{document}

在此处输入图片描述

答案2

看来问题是由于 v2.6 的siunitx将模式选项的标准设置从text切换到math

\documentclass{article}

\usepackage{fontspec}
\usepackage{siunitx}

\DeclareRobustCommand*{\myfranc}{% thanks to egreg and Manuel
  \begingroup
   \freeserif^^^^20a3%
  \endgroup
}
\DeclareSIUnit[mode = text]{\franc}{\myfranc}

\newfontfamily{\freeserif}{FreeSerif.otf}

\begin{document}

\SI{1000}{\franc}

\end{document}

输出

相关内容