摘自我手头的文档
\documentclass[a4paper,12pt,twoside]{book}
\usepackage[utf8]{inputenc}
\usepackage[polutonikogreek,ngerman]{babel}
\usepackage{betababel}
\usepackage[T1]{fontenc}
\begin{document}
\bcode{Schisma}
\bcode{Σχίσμα}
\end{document}
无论我如何尝试希腊 UTF-8 字符,我都会得到 ΣχίσμαJJ,即该单词后面总是有两个大写拉丁字母“J”。如果我使用德语拼写“Schisma”,我会得到 σvξηισvμα。我只想要 Σχίσμα,仅此而已。无法理解发生了什么。
答案1
可能你不需要 betababel 包。至少这似乎可以按预期工作:
\documentclass[a4paper,12pt,twoside]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[polutonikogreek,ngerman]{babel}
%\usepackage{betababel}
\usepackage[T1]{fontenc}
\begin{document}
{\selectlanguage{polutonikogreek}Schisma}
{\selectlanguage{polutonikogreek}Σχίσμα}
Und hier geht der Text weiter.
\end{document}
答案2
包文档很清楚:在环境的参数中\bcode
或内部,betacode
您只应该使用拉丁字符和重音符号以及其他变音符号。
出现这个J
情况是因为包内部使用它作为分隔符(该字符应该是不是出现在 betacode 上下文中),但多字节 UTF-8 字符会让解析器感到困惑。对此我们无能为力。
只需使用\textgreek
:
\documentclass[a4paper,12pt,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[polutonikogreek,ngerman]{babel}
\usepackage[ngerman]{betababel}
% fix a bug of betababel
\toks0=\expandafter{\bcode}
\edef\bcode{\noexpand\leavevmode\the\toks0}
% end of fix
\begin{document}
\bcode{*sxi/sma}
\textgreek{Σχίσμα}
\end{document}
顺便说一句,我添加了一个修复程序,\bcode
该修复程序不会开始一个段落,如果您排版(没有修复),您可以看到它
\documentclass[a4paper,12pt,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[polutonikogreek,ngerman]{babel}
\usepackage[ngerman]{betababel}
\begin{document}
Some text with indent
\bcode{*sxi/sma} and following text
Some text with indent and \bcode{*sxi/sma}
\end{document}
如您所见,以 开头的段落\bcode
没有缩进。如果添加修复,输出将正确。