我需要在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}