无法将 \c{char} 分配给 const 变量

无法将 \c{char} 分配给 const 变量

为什么?有解决办法吗?

\documentclass{article}
\usepackage[utf8]{inputenc}
\inputencoding{latin1}
\usepackage{xparse}
\usepackage{etoolbox}

\ExplSyntaxOn

\tl_const:Nx \lang_and
{
  croatian=i,
  czech=a,
  hungarian=\'es,
%  romanian=\c{s}i, % ERROR: Illegal parameter number in definition of \erw_foo.
  slovak=a,
  slovenian=in
}

\ExplSyntaxOff

\begin{document}

\ifcsdef{c}{
  romanian=\c{s}i,
  }{}

\end{document}

在此处输入图片描述

答案1

因为 \c 不可扩展(\' 也不可扩展:请尝试 \show \lang_and 查看),并且它会因 x 扩展而爆炸。请使用 \tl_const:Nn 或使用 \exp_not:n { romanian=\c{s}i } 来避免 \c 的扩展 – Phelype Oleinik

答案2

我看不出有什么理由

  1. \inputencoding{latin1}加载后utf8
  2. 一个标记列表常量;
  3. x扩张。

最有可能的是你想要

\prop_gset_from_keyval:Nn \g_erwann_lang_and_prop
 {
  croatian=i,
  czech=a,
  hungarian=\'es,
  romanian=\textcommabelow{s}i,
  slovak=a,
  slovenian=in
 }

相关内容