如果我使用 xelatex,则命令 \nobreakspace 在编码 EU1 时不可用

如果我使用 xelatex,则命令 \nobreakspace 在编码 EU1 时不可用

这是我的序言:

\documentclass[11pt, a4paper]{scrartcl}
\usepackage{iftex}
\ifXeTeX
  \usepackage{xunicode} %Если не ошибаюсь, то этот пакет уже загружает fontspec
  \usepackage{xltxtra}  %особой роли не должен вроде как играть и в будущем скорее всего не будет нужен
  \usepackage{polyglossia}

  \setdefaultlanguage{polish}
  \setmainfont{Liberation Serif}
\else
  \usepackage[utf8]{inputenc}
  \usepackage[MeX,T1, plmath]{polski}
  \usepackage{datetime}
\fi
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage[super]{cite}
\usepackage[hyperfootnotes=false]{hyperref}
\usepackage{siunitx}    %Для использоваия едениц измерений СИ, пример смотреть в тексте
\sisetup{
output-decimal-marker = {,},    %sisetup нужен, что бы вместо точки можно было использовать запятую.
per-mode = symbol   %Это что бы \per давала косую черту
}   %Для перечисления настроек обязательно нужна запятая между ними

% \DeclareTextCommandDefault{\nobreakspace}{\leavevmode\nobreak\ }

有了这个序言,我得到了

编码 EU1 时命令 \nobreakspace 不可用

如果我取消注释 \DeclareTextCommandDefault{\nobreakspace}{\leavevmode\nobreak\ } 我得到

未定义控制序列

答案1

xunicode在 之前不加载fontspec(由 加载xltxtra)。在当前系统中,您xunicode根本不需要加载,fontspec它会在正确的位置进行加载。

答案2

不幸的是,xunicode必须加载以一致的方式获得某些字母下方的点,除非诉诸另一种解决方案对于这些点。如果在 xunicode 或 xlxtra 之前加载 fontspec,这些点也无法正常工作。但如果先调用 xunicode,则会收到上面报告的错误“如果我使用 xelatex,则命令 \nobreakspace 在编码 EU1 中不可用”。

相反,我使用了解决方案建议在这里在使用 xunicode 时重新定义 \nobreakspace。

相关内容