我尝试在描述中添加带有变音符号的词汇表项,但出现此错误:
./mwe-glossary.gls:3:包 inputenc 错误:无效的 UTF-8 字节序列。
问题似乎是,生成的 gl* 文件不是 UTF-8 的:
$ file mwe-glossary.tex mwe-glossary.gl*
mwe-glossary.tex: LaTeX 2e document, UTF-8 Unicode text
mwe-glossary.glo: LaTeX raw glossary, ISO-8859 text
mwe-glossary.gls: LaTeX document, ISO-8859 text
有人可以帮我解决这个问题吗?
latexmkrc
add_cus_dep('acn', 'acr', 0, 'run_makeindex');
add_cus_dep('glo', 'gls', 0, 'run_makeindex');
sub run_makeindex {
if ( $silent ) {
system("makeindex -q -s '$_[0].gst' -o '$_[0].gls' '$_[0].glo'");
}
else {
system("makeindex -s '$_[0].gst' -o '$_[0].gls' '$_[0].glo'");
};
}
push @generated_exts, 'acn', 'acr', 'alg';
push @generated_exts, 'glo', 'gls', 'glg';
$clean_ext .= ' %R.ist %R.xdy';
mwe-词汇表.tex
\documentclass{memoir}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\makeglossary
\begin{document}
\printglossary
\glossary{Umlaute}{ÄäÖöÜü}
\dots
\end{document}
(已复制)mwe-词汇表.gst
%%% basic.gst basic makindex glossary style file
%%% Output style parameters
preamble "\\begin{theglossary}"
postamble "\n\\end{theglossary}\n"
item_0 "\n\\glossitem"
delim_0 "{\\memglonum{"
encap_suffix "}}}"
%%% Input style parameters
keyword "\\glossaryentry"
我运行的命令是:
$ latexmk -pdf -file-line-error -interaction=nonstopmode
答案1
编辑 2020/02/24:这似乎是一个更简单的补丁
\makeatletter
\renewcommand{\@ctualm@mwritetoglo}[5]{%
% \immediate\write \memglofile
\immediate@protected@write\memglofile{}% the only line changed
{\string\glossaryentry{#1\@nameuse{memglsact\m@mgf}
{\string\memgloterm{#2}}{\string\memglodesc{#3}}
{\string\memgloref{#4}}\@nameuse{memglsnf\m@mgf}}{#5}}%
\endgroup}
\makeatother
- 我虽然已经测试过了,但显然还不够彻底。
这个补丁似乎有效
\makeatletter
\renewcommand{\@ctualm@mwritetoglo}[5]{%
\immediate\write\memglofile{\string\glossaryentry{\detokenize{#1}\@nameuse{memglsact\m@mgf}
{\string\memgloterm{\detokenize{#2}}}{\string\memglodesc{\detokenize{#3}}}
{\string\memgloref{\detokenize{#4}}}\@nameuse{memglsnf\m@mgf}}{\detokenize{#5}}}%
\endgroup}
\makeatother
我会把它添加到下一本回忆录中。虽然不知道什么时候
答案2
我找到了解决这个问题的办法,就是使用图标。不过,看上去不对。
latexmkrc
add_cus_dep('acn', 'acr', 0, 'run_makeindex');
add_cus_dep('glo', 'gls', 0, 'run_makeindex');
sub run_makeindex {
if ( $silent ) {
system("makeindex -q -s '$_[0].gst' -o '$_[0].gls' '$_[0].glo'");
}
else {
system("makeindex -s '$_[0].gst' -o '$_[0].gls' '$_[0].glo'");
};
# XXX: using iconv doesn't look right to me
system("iconv -f iso-8859-1 -t utf-8 -o '$_[0].gls' '$_[0].gls'");
}
push @generated_exts, 'acn', 'acr', 'alg';
push @generated_exts, 'glo', 'gls', 'glg';
$clean_ext .= ' %R.ist %R.xdy';