Skip to content

xeCJKfntef 和 ulem 联用时影响 \textbf 的作用范围 #278

@ChihSee-Hsie

Description

@ChihSee-Hsie

检查

  • 已在 issues 中进行搜索(包括已关闭的问题)

编译环境

  • 操作系统

    • Windows 11
    • Windows 8/8.1
    • Windows 7
    • 更早版本的 Windows
    • macOS
    • Linux(请附发行版)
  • TeX 发行版

    • TeX Live 2023
    • MiKTeX
    • CTeX 套装 2.9.2.164
    • 更早版本的 CTeX 套装

描述问题

在使用 ulem 宏包时,中文内容加上下划线不能正确折行。我参考 ctex-forum 上的例子,加入 xeCJKfntef,解决了这个问题。然而这个宏包带来了新的问题——有时我希望在划线的同时对句子中个别词汇加粗强调,这时会在 \uline{} 的花括号中联用 \textbf。在使用 xeCJKfntef 之前,这种用法如我的期望那样达成了既划线又加粗的效果,但加入之后,\textbf 命令就只能影响其后的第一个字了。我尝试将 \textbf{} 改成 {\bfseries },没有变化;使用英文,则 \textbf 效果正常;将 ulem 去掉,也能使 \textbf 正常工作,但这样不能达到我的排版需求。

最小工作示例(MWE)

\documentclass{article}
\usepackage{ulem}
\usepackage{ctex}
\usepackage{xeCJKfntef}

\begin{document}
\uline{这是\textbf{示例}文档}. \uline{this is minimal working example. \textbf{lorem} ipsum dolor sit amet. consectitur }
\end{document}

(用 XeLaTeX 编译后)输出

main.pdf

更改

上述的叙述是我不清楚 xeCJKfntef 的使用方式导致的,今重新叙述如右:使用 xeCJKfntef 后,在 \uline{} 中联用 \textbf 则后者的影响范围只限命令后紧接的一个字。我一开始说「将 ulem 去掉,也能使 \textbf 正常工作」是因为当时的 MWE 中用的划线命令是 \emph{},在没有 ulem 包时,这个命令等效于 \textit{},而在意大利体命令中联用粗体,其表现确实正常。

另外,使用了 xeCJKfntef 后,在 \uline 内部联用会出现问题的命令除了 \textbf 还有 \large、\textit 等,总之似乎这时所有在 \uline 内部联用的字体命令都只能影响到紧接着的一个字。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions