答案1
如果你使用 LuaLaTeX 来编译文档,你可以设置一个实用程序宏,允许在字符串的任意位置进行换行(当然,右边除外)。前一个标点符号)。在下面的代码中,LaTeX 实用程序宏被调用\addZWSP
——我想是“添加零宽度空格”的缩写。此宏调用一个名为的 Lua 函数,add_ZWSP
该函数完成所有实际工作。
% !TEX TS-program = lualatex
\documentclass{article} % or some other suitable document class
\usepackage{tabularx,booktabs,ragged2e}
\newcolumntype{L}{>{\RaggedRight}X}
\usepackage{fontspec}
\setmainfont{Noto Serif SC} % I don't have the NSimSun font
\usepackage{luacode} % for "\luastringN" macro and "luacode" env.
\begin{luacode}
-- The Lua function 'add_ZWSP' does most of the work:
function add_ZWSP ( s )
t = ""
for i = 1 , unicode.utf8.len(s) do
t = t .. unicode.utf8.sub ( s , i , i )
u = unicode.utf8.sub ( s , i+1 , i+1 )
if not unicode.utf8.match ( u , "[,。]" ) then
t = t .. "\\hspace{0pt}"
end
end
return t
end
\end{luacode}
%% Set up a utility LaTeX macro to access the Lua function:
\newcommand\addZWSP[1]{\directlua{tex.sprint(add_ZWSP(\luastringN{#1}))}}
\begin{document}
\noindent
%% Use "L" col. type in columns 3 and 4 to allow automatic line breaking
\begin{tabularx}{\textwidth}{@{} ll LL @{}}
\toprule
驾轻就熟 &
jià qīng jiù shú &
\addZWSP{驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。} &
\addZWSP{驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。} \\
\bottomrule
\end{tabularx}
\end{document}
答案2
如果您使用 XeLaTeX,则需要设置几个换行参数。
\documentclass{article}
\usepackage{fontspec}
\usepackage{array}
%\setmainfont{NSimSun}
\setmainfont{SimSong}
\XeTeXlinebreaklocale=ZH
\XeTeXlinebreakskip=0pt plus 1pt
\begin{document}
\begin{tabular}{|l|l|p{5cm}|}
驾轻就熟 &
jià qīng jiù shú & \raggedright\arraybackslash
驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。\\
\hline
驾轻就熟 &
jià qīng jiù shú &
驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。
\end{tabular}
\end{document}
我将字体更改为我机器上的字体,但它与业务无关。
对于 LuaLaTeX,luatexja
按照建议使用https://tex.stackexchange.com/a/224734/4427
\documentclass{article}
\usepackage{luatexja-fontspec}
\usepackage{array}
%\setmainfont{NSimSun}
\setmainjfont{STSong}
\begin{document}
\begin{tabular}{|l|l|p{5cm}|}
驾轻就熟 &
jià qīng jiù shú & \raggedright\arraybackslash
驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。\\
\hline
驾轻就熟 &
jià qīng jiù shú &
驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。
\end{tabular}
\end{document}
注意\setmainjfont
:使用您已有的字体。
答案3
babel
软件包可以用于 和LuaLaTeX
。XeLaTeX
如果你想要一份多语言文档。Babel 是个不错的选择。如果只用于XeLaTeX
,xeCJK
是一个不错的软件包,可以帮你搞定一切。以下是使用 的示例babel
:
\documentclass{article}
\usepackage{array}
\usepackage{lipsum}
\usepackage{zhlipsum}
\usepackage[chinese,english,provide+=*]{babel}
% declare two languages, babel treat second one as the main language.
% you can switch to Chinese using {\selectlanguage{chinese} ...some chinese} in the document.
% make sure your put curly brackets in between otherwise it will applied for
% rest of the documents
\babelfont{rm}{Noto Serif CJK SC}% Select font for both english and chinese
%\babelfont[chinese]{rm}{Noto Serif CJK SC}
%\babelfont[english]{rm}{Libertinus Serif}
% Or you can select different font for different language individually
\begin{document}
{\selectlanguage{chinese}
\begin{table}[ht]
\centering
\begin{tabular}{|l|l|p{3.5cm}|p{3cm}|}
驾轻就熟 & jià qīng jiù shú & 驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。 & 驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。 \\
\end{tabular}
\end{table}
\zhlipsum[1][name=zhufu]
}
\lipsum[1]
\end{document}