在表格中使用中文

在表格中使用中文

在表中输入中文时,尽管尝试用限制列大小p{5cm},但短语不会移动到下一行。

\documentclass{article}
\usepackage{fontspec}
\usepackage{array}

\setmainfont{NSimSun}

\begin{document}
\begin{tabular}{|l|l|p{5cm}|l}
驾轻就熟 & jià qīng jiù shú & 驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。 & 驾轻车,走熟路。比喻对某事有经验,很熟悉,做起来容易。 \\
\end{tabular}
\end{document}

在此处输入图片描述

答案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软件包可以用于 和LuaLaTeXXeLaTeX如果你想要一份多语言文档。Babel 是个不错的选择。如果只用于XeLaTeXxeCJK是一个不错的软件包,可以帮你搞定一切。以下是使用 的示例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}

在此处输入图片描述

相关内容