文档中包含俄语,主要语言为日语(LuaLaTeX + ltjsarticle)

文档中包含俄语,主要语言为日语(LuaLaTeX + ltjsarticle)

我需要在ltjs文章类,提供LuaLaTeX的日文字幕等日文设置。

在当前的 MWE 中,

  • 俄语字母之间间隔很大。
  • 没有连字符。
  • 表格名称变成了俄语,但是我的文档中的主要语言是日语,所以我需要保留日语名称(巴别塔或者多语包,所以我不能将其指定为\setmainlanguage日语或俄语)。

在此处输入图片描述

\documentclass[a4paper]{ltjsarticle} 
\usepackage{luatexja-fontspec}

\setmainjfont[BoldFont=HGMinchoB]{MS Mincho}
\setsansjfont[BoldFont=KozGoPro-Bold]{MS Gothic}

\setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
\setsansfont[Ligatures=TeX,Scale=MatchLowercase]{TeX Gyre Heros}
\usepackage{fontspec}

\usepackage{array}
\usepackage{booktabs}

\usepackage[russian]{babel}
\usepackage{multicol}

\begin{document}

此れは日本語の試験です。表示されるようです。

\begin{table}\centering
\begin{tabular}{|c|c|c|c|c|} \toprule 
あ&い&う&え&お\\ \hline
か&き&く&け&こ\\ \hline
さ&し&す&せ&そ\\ \midrule
\dots&\dots&\dots&\dots&\dots\\ \midrule
わ&ゐ&ん&ゑ&を\\ \bottomrule
\end{tabular}\caption{You must to see [表] before table number, \textbf{not} [Table] or [Таблица]}
\end{table}

Теперь русский. The letters is too wide, isn't it?

\begin{multicols}{3}
Now the hyphenation test. There are no the [-] symbol, isn't it? Тест переносов. Так как осуществляется набор в три колонки, то и вероятность того, что произойдёт перенос слова, значительно возрастает.
\end{multicols}

\begin{table}[ht!]\centering
\begin{tabular}{|c|c|c|c|c|} \toprule 
あ&い&う&え&お\\ \hline
か&き&く&け&こ\\ \hline
さ&し&す&せ&そ\\ \midrule
\dots&\dots&\dots&\dots&\dots\\ \midrule
わ&ゐ&ん&ゑ&を\\ \bottomrule
\end{tabular}\caption{You must to see [表] before table number, \textbf{not} [Table] or [Таблица]}
\end{table}

\end{document}

我知道一些命令,例如\setotherlanguage\newfontfamily\cyrillicfont,但我也没有期望这些命令的结果。

  • 笔记:可能你没有获取字体。如果是,请替换字体命令。
  • 笔记:如果你需要ltjs文章课程,你可以得到它 这里

答案1

阅读文档可以发现,字符分为“ALchars”和“JAchars”,而西里尔字母则被分配给“JAchars”。

只需重新分配:

\ltjsetparameter{jacharrange={-1, -2, +3, -4, -5, +6, +7, +8}}

(标准声明有+2,参见文档第 4.1 节)。

当然,您必须使用支持西里尔字母的字体,但 TeX Gyre Pagella 不支持。

\documentclass[a4paper]{ltjsarticle} 
\usepackage{luatexja-fontspec}

\setmainjfont{Hiragino Mincho Pro}
\setsansjfont{Hiragino Sans GB}

\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setsansfont[Ligatures=TeX]{Linux Biolinum O}

\ltjsetparameter{jacharrange={-1, -2, +3, -4, -5, +6, +7, +8}}

\usepackage{array}
\usepackage{booktabs}

\usepackage[russian]{babel}
\usepackage{multicol}

\begin{document}

此れは日本語の試験です。表示されるようです。

\begin{table}\centering
\begin{tabular}{|c|c|c|c|c|} \toprule 
あ&い&う&え&お\\ \hline
か&き&く&け&こ\\ \hline
さ&し&す&せ&そ\\ \midrule
\dots&\dots&\dots&\dots&\dots\\ \midrule
わ&ゐ&ん&ゑ&を\\ \bottomrule
\end{tabular}\caption{You must to see [表] before table number, \textbf{not} [Table] or [Таблица]}
\end{table}

Теперь русский. The letters is too wide, isn't it?

\begin{multicols}{3}
Now the hyphenation test. There are no the [-] symbol, isn't it? Тест переносов. Так как осуществляется набор в три колонки, то и вероятность того, что произойдёт перенос слова, значительно возрастает.
\end{multicols}

\begin{table}[ht!]\centering
\begin{tabular}{|c|c|c|c|c|} \toprule 
あ&い&う&え&お\\ \hline
か&き&く&け&こ\\ \hline
さ&し&す&せ&そ\\ \midrule
\dots&\dots&\dots&\dots&\dots\\ \midrule
わ&ゐ&ん&ゑ&を\\ \bottomrule
\end{tabular}\caption{You must to see [表] before table number, \textbf{not} [Table] or [Таблица]}
\end{table}

\end{document}

在此处输入图片描述

luatexja与没有真正的集成babel,因此这样做\usepackage[russian]{babel}会覆盖所有设置。据我所知,仅支持日语和英语。

您可以通过执行以下操作来纠正此问题\usepackage[russian,english]{babel}。如果您需要更长的俄语段落,并使用正确的连字符,请使用

\begin{otherlanguage*}{russian}
...
\end{otherlanguage*}

对于较短的部分\foreignlanguage{russian}{...}可以使用(或者对于单个单词根本不使用任何部分,但不会使用连字符)。

babel我提供了一些修复luatexja,但要做好准备找到其他可能出错的地方。

\documentclass[a4paper]{ltjsarticle} 
\usepackage{luatexja-fontspec}

\setmainjfont{Hiragino Mincho Pro}
\setsansjfont{Hiragino Sans GB}

\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setsansfont[Ligatures=TeX]{Linux Biolinum O}

\ltjsetparameter{jacharrange={-1, -2, +3, -4, -5, +6, +7, +8}}

\usepackage{array}
\usepackage{booktabs}

\usepackage[russian,english]{babel}
\usepackage{multicol}

\makeatletter
\renewcommand\captionsenglish{%
  \renewcommand{\prepartname}{\if@english Part~\else 第\fi}%
  \renewcommand{\postpartname}{\if@english\else 部\fi}%
  \renewcommand{\presectionname}{}%  第
  \renewcommand{\postsectionname}{}% 節
  \renewcommand{\contentsname}{\if@english Contents\else 目次\fi}%
  \renewcommand{\listfigurename}{\if@english List of Figures\else 図目次\fi}%
  \renewcommand{\listtablename}{\if@english List of Tables\else 表目次\fi}%
  \renewcommand{\refname}{\if@english References\else 参考文献\fi}%
  \renewcommand{\bibname}{\if@english Bibliography\else 参考文献\fi}%
  \renewcommand{\indexname}{\if@english Index\else 索引\fi}%
  \renewcommand{\figurename}{\if@english Fig.~\else 図\fi}%
  \renewcommand{\tablename}{\if@english Table~\else 表\fi}%
  \renewcommand{\appendixname}{\if@english \else 付録\fi}%
  \renewcommand{\abstractname}{\if@english Abstract\else 概要\fi}%
}
\makeatother



\begin{document}

此れは日本語の試験です。表示されるようです。

\begin{table}\centering
\begin{tabular}{|c|c|c|c|c|} \toprule 
あ&い&う&え&お\\ \hline
か&き&く&け&こ\\ \hline
さ&し&す&せ&そ\\ \midrule
\dots&\dots&\dots&\dots&\dots\\ \midrule
わ&ゐ&ん&ゑ&を\\ \bottomrule
\end{tabular}\caption{You must to see [表] before table number, \textbf{not} [Table] or [Таблица]}
\end{table}

Теперь русский. The letters is too wide, isn't it?

\begin{multicols}{3}
Now the hyphenation test. There are no the [-] symbol, isn't it? Тест переносов. Так как осуществляется набор в три колонки, то и вероятность того, что произойдёт перенос слова, значительно возрастает.
\end{multicols}

\begin{table}[ht!]\centering
\begin{tabular}{|c|c|c|c|c|} \toprule 
あ&い&う&え&お\\ \hline
か&き&く&け&こ\\ \hline
さ&し&す&せ&そ\\ \midrule
\dots&\dots&\dots&\dots&\dots\\ \midrule
わ&ゐ&ん&ゑ&を\\ \bottomrule
\end{tabular}\caption{You must to see [表] before table number, \textbf{not} [Table] or [Таблица]}
\end{table}

\end{document}

在此处输入图片描述

相关内容