使用 luainputenc 通过 lualatex 进行西里尔字母连字符

使用 luainputenc 通过 lualatex 进行西里尔字母连字符

似乎使用Cyrillic连字符不起作用。有解决办法吗?lualatex\usepackage[lutf8x]{luainputenc}

% !TeX program = lualatex
% !TeX encoding = utf8
% !TeX spellcheck = uk_UA
% !BIB program = bibtex8

\documentclass{article}

\usepackage[T2A]{fontenc}
\usepackage[lutf8x]{luainputenc}
\usepackage[english,russian, ukrainian]{babel}

\begin{document}

    Матеріали конференції присвячені сучасним проблемам фізики та фізичних технологій,
        перспективним напрямкам фізики енергетичних систем,
        теорії безпеки, криптографічного захисту інформації та криптоаналізу, захисту
        інформації в комп’ютерних мережах та комунікаціях, забезпеченню цілісності баз даних,
        захисту від витоку інформації по каналах побічного електромагнітного випромінювання,
        локальним мережам різної струк\-тури, технічного захисту об’єктів, а також науковим
        дослідженням фундаментального та прикладного характеру у сфері інформаційних наук.

\end{document}

答案1

经过一些测试,下面的方法对我的 TeXLive15 和最新版本babel(3.9q,必需,因为它是带有新加载器的版本luatex)有效。使用以下命令创建本地language.dat文件:

english     hyphen.tex  % do not change!
=usenglish
=USenglish
=american
nohyphenation   zerohyph.tex
russian   hyph-ru.t2a.tex
ukrainian   hyph-uk.t2a.tex

我说的“本地”是指在同一个目录中(或者在不干扰全局的情况下您的文档可以找到它的另一个地方language.dat)。还有一个小问题,因为 Unicode 引擎不完全符合标准 LaTeX 所要求的 lccodes。添加到文档中tex

\lccode"F7="F7

我只测试了乌克兰语(没有测试过俄语)。

答案2

如果您愿意使用不带 luainputenc 的解决方案,该解决方案可以在所有三个编译器中工作(尽管 (xe|lua)latex 的字体设置有些麻烦):

% !TeX encoding = utf8
% !TeX spellcheck = uk_UA
% !BIB program = bibtex8
%%% Defining function to check compiler %%%
\RequirePackage{iftex}
\newif\ifxetexorluatex % new if operator (http://tex.stackexchange.com/a/47579)
\ifXeTeX
    \xetexorluatextrue
\else
    \ifLuaTeX
        \xetexorluatextrue
    \else
        \xetexorluatexfalse
    \fi
\fi

%%% Main class setting %%%
\documentclass{article} % If papersize not set explicitly, each compiler can use whatever default has.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Big block of settings for three compilers %%
\ifxetexorluatex
%%% Language setting for (xe|lua)latex %%%
    \usepackage{polyglossia} % Loads fontspec also.
    \setmainlanguage{ukrainian}
    \setotherlanguage[babelshorthands=true]{russian}
    \setotherlanguage{english}

%%% Font setting for (xe|lua)latex %%%
    \defaultfontfeatures{Ligatures=TeX}
    \setmainfont{CMU Serif}
    \setsansfont{CMU Sans Serif}
    \setmonofont{CMU Typewriter Text}
%    \newfontfamily\cyrillicfont{CMU Serif} % Uncomment if asked to define cyrillic fonts.
%    \newfontfamily\cyrillicfontsf{CMU Sans Serif} % Uncomment if asked to define cyrillic fonts.
%    \newfontfamily\cyrillicfonttt{CMU Typewriter Text} % Uncomment if asked to define cyrillic fonts.
\else
    \RequirePDFTeX % Tests for PDFTEX use and throws an error if a different engine is being used.

%%% For proper copypasting of text from pdf %%%
    \usepackage{cmap} % Better search and copypasting of cyrillic text from pdf-file. Can cause errors if used together with pdfx package.
    \defaulthyphenchar=127 % Better hyphenation for copypasting. Must be set just before fontenc.

%%% Language setting for pdflatex %%%
    \usepackage[T2A]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[english,russian, ukrainian]{babel}
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

    Матеріали конференції присвячені сучасним проблемам фізики та фізичних технологій,
        перспективним напрямкам фізики енергетичних систем,
        теорії безпеки, криптографічного захисту інформації та криптоаналізу, захисту
        інформації в комп’ютерних мережах та комунікаціях, забезпеченню цілісності баз даних,
        захисту від витоку інформації по каналах побічного електромагнітного випромінювання,
        локальним мережам різної струк\-тури, технічного захисту об’єктів, а також науковим
        дослідженням фундаментального та прикладного характеру у сфері інформаційних наук.

\end{document}

相关内容