在我之前的 OP 中,题为“有什麼特別的呢。“,我们发现一个办法要使该问题的 MWE 编译,请通过更改
\begin{document}
进入
\begin{document} \catcode`\﹑=12 \catcode`\~=12
然而,当我尝试别人的代码时,我想到了一个新的平均能量损失(因此又有新的 OP)上面的解决方案不再有效。与此同时,我还发现罪魁祸首是\usepackage{luatexja-fontspec}
。
确实,平均能量损失下面是一个简洁的分隔符代码,它可以将文本分隔开\maincommand{
...}
并将命令应用于所包含文本的每个字符,同时将其他命令应用于标点符号本身(\punctdef
)。这对我尝试过的无数标点符号都有效。有或无均可正在加载包裹\usepackage{luatexja-fontspec}
。
但有一个例外:看来不能同时拥有两者:
\usepackage{luatexja-fontspec}
以及下列一项或两项:
\punctdef~{~}
\punctdef﹑{﹑}
我的问题是:如何解决包luatexja-fontspec
与发出的命令之间的不兼容性~
?﹑
请注意,可以取消\usepackage{luatexja-fontspec}
注释平均能量损失下面查看问题。
改变
\begin{document}
进入
\begin{document} \catcode`\﹑=12 \catcode`\~=12
在这种情况下没有帮助。
平均能量损失
% !TEX TS-program = lualatexmk
\documentclass{scrreprt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% For luatexja-fontspec
\usepackage{fontspec}
% \usepackage{luatexja-fontspec} % IF YOU UNCOMMENT \usepackage{luatexja-fontspec}, THIS CODE WILL FAIL, UNLESS YOU REPLACE ALL INSTANCES OF ~ AND ALL INSTANCES OF ﹑ BY SOME OTHER PUNCTUATION MARK
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Separator (\maincommand)
\def\chinchar#1{[#1]} % redefine it if you want...
\def\punctdef#1{\expandafter\def\csname p-#1\endcsname}
\def\maincommand#1{\maincommandA#1\relax}
\def\maincommandA#1{\ifx\relax#1\else
\expandafter\ifx\csname p-#1\endcsname\relax \chinchar{#1}%
\else \csname p-#1\endcsname\fi
\expandafter\maincommandA\fi
}
%
\punctdef~{~\kern1em}
\punctdef﹑{﹑\kern1em}
\punctdef,{,\kern1em}
\punctdef:{:\kern1em}
\punctdef;{;\kern13pt}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document} \catcode`\﹑=12 \catcode`\~=12
\maincommand{AB~C,,,DE;FG:H}
\end{document}
答案1
~ 字符在\usepackage{luatexja-fontspec}
使用时被设置为 catcode 11(字母)。因此被\punctdef~
解释为一个控制序列,当然是未定义的控制序列。从错误报告中可以清楚地看出:
! Undefined control sequence.
l.23 \punctdef~
解决方案很简单。在这种情况下使用。此外,\punctdef{~}{...}
之后的设置完全不相关。删除它。\punctdef~{...}
\catcode
\begin{document}
编辑我在这里添加了其他信息以便停止创建下一个和下一个新问题。
该﹑
字符还有另一个问题。当您使用它时,它不会被打印。您可以在日志文件中看到以下消息:
Missing character: There is no ﹑ (U+FE51) in font IPAExMincho:jfm=ujis!
但是你可以\punctdef
定义另一种方式来打印此类字符。例如:
\punctdef{﹑}{\leavevmode\lower1ex\hbox{\tt`}\kern1em}