我使用seqsplit
来拆分单元格内的长单词longtable
。我也使用utf8x
和包。我从这些文件ucs
中生成 PDF 。.tex
当单词包含 UTF-8 字符时,序列中的第一个字符会引发错误。
\seqsplit{Música} using utf8x appears as `M[U+FFFD]sica`
这是它引发的错误:
! Package utf8x Error: MalformedUTF-8sequence.
See the utf8x package documentation for explanation.
Type H <return> for immediate help.
...
l.398 .. com} & \seqsplit{Música}
Ifthecharacterisanargument,putitin{}
Package ucs Warning: Unknown character 65533 = 0xFFFD appeared again. on input
line 398.
如果我删除seqsplit
,单词就会正确显示,但我需要使用这个包,也许有人知道我可以使用的替代方案或宏。
最有趣的是,如果单词包含两个或更多 UTF-8 字符,我得到的是:
\seqsplit{Múúsica} `M[U+FFFD]úsica`
仅第一个字符失败,因此我确信 UTF-8 编码已正确完成。
答案1
Unicode 点 > 7 位在 UTF-8 中用几个字节编码。包seqsplit
不知道这一点,因为它是为长 DNA/RNA/蛋白质/... 序列编写的。它是错误的自然文本包。语言有规则,允许在单词中使用断点(通常不在每个字母后),并且要求插入连字符。
因此,对于窄列,我建议使用与类似的ragged2e
命令进行打包,但允许使用连字符。因此,它可以更好地填充可用空间。\Raggedright
\raggedright
然而,如果的序列\seqsplit
包含 UTF-8 字符,并且未使用 Unicode TeX 引擎(XeTeX、LuaTeX),则可以对 UTF-8 序列进行分组和保护\seqsplit
:
\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage{seqsplit}
\begin{document}
\seqsplit{M{ú}sica}
\end{document}