\newcolumntype{L}[1]{>{\RaggedRight\arraybackslash}p{#1}}
建议的列类型这里不会对没有连字符的长单词进行连字符连接,而是让它们超出列的范围。
难道不是\RaggedRight
专门为了方便连字而设计的吗?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage{ragged2e}
\newcolumntype{L}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\begin{document}
raggedright:
\begin{tabularx}{40pt}{|>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}p{40pt}|}
Synthetically do
\end{tabularx}
\bigskip
raggedright with finalhyphendemerits=0:
\begin{tabularx}{40pt}{|>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}p{40pt}|}
\finalhyphendemerits=0
Synthetically do
\end{tabularx}
\bigskip
RaggedRight:
\begin{tabular}{|L{40pt}|}
Synthetically do
\end{tabular}
\end{document}
答案1
\RaggedRight
实际上使连字更多的相对于标准来说可能\raggedright
,但比标准对齐段落的可能性较小。
通常在对齐段落时,tex 对字间距只有很小的灵活性,因此经常需要使用连字来达到目标行宽。
由于\raggedright
在每行的右侧添加了可无限拉伸的粘连线,因此 TeX 永远不需要连字符,除非单词长于行宽,因为它总是有可用的空白。
\RaggedRight
允许小有限每行末尾的可拉伸量,因此将优先于连字采用该选项,但如果避免连字会导致行太短,则(与 不同\raggedright
)将对行进行连字,以便行末尾的空白在指定的范围内。
TeX 不会对段落的第一个单词进行连字符连接,因此您需要插入,\hspace{0pt}
但在 RaggedRight 情况下您还没有这样做。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage{ragged2e}
\newcolumntype{L}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\begin{document}
RaggedRight:
\begin{tabular}{|L{40pt}|}
Synthetically do
\end{tabular}
\begin{tabular}{|L{40pt}|}
\hspace*{0pt}Synthetically do
\end{tabular}
\end{document}