乌莱姆的行为很奇怪吗?

乌莱姆的行为很奇怪吗?

我知道,这很丑陋,看起来很愚蠢,但我需要重新定义。我尝试了很多方法(\edef\expandafter...)似乎都不起作用。没有换行符。

    \documentclass{article}
\usepackage{ulem}
\def\texteSouligne#1{\uline{#1}}
\def\texteGras#1{{\textbf{#1}}}
\def\texteItalique#1{{\it #1}}

\begin{document}
Voici du texte \texteSouligne{souligné \texteItalique{et eded  e defn même temps italique bla blabla blabla blabla blabla blabla blabla blabla bla.}}

Voici du texte \texteSouligne{souligné \texteGras{et en même bla blabla blabla blabla blabla blabla blabla blabla blabla blabla bla temps gras.}}

\texteSouligne{Voici du texte souligné,  bla bla blabla bla blabla bla blabla bla blabla bla blabla bla blabla bla bla \texteGras{en gras \texteItalique{et en même temps italique.}}}
\end{document}

答案1

这是软件包的限制ulem。从其文档,“3 并发症”一节:

大括号和宏替换的一个重要不兼容性:所有括号内的文本或来自宏的文本都排版在一个框中(如同在 中一样\mbox)。因此,括号将抑制其所括文本的拉伸和换行。

包裹soul

问题中的示例可以使用包进行排版soul。它有自己的局限性,请参阅其文档。以下示例使用包soulutf8为 8 位 TeX 引擎添加 UTF-8 支持。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{soulutf8}
\newcommand{\texteSouligne}[1]{\ul{#1}}
\newcommand{\texteGras}[1]{\textbf{#1}}
\newcommand{\texteItalique}[1]{\textit{#1}}

\soulregister{\texteGras}{1}
\soulregister{\texteItalique}{1}

\begin{document}

Voici du texte \texteSouligne{souligné \texteItalique{et eded  e defn même
temps italique bla blabla blabla blabla blabla blabla blabla blabla bla.}}

Voici du texte \texteSouligne{souligné \texteGras{et en même bla blabla
blabla blabla blabla blabla blabla blabla blabla blabla bla temps gras.}}

\texteSouligne{Voici du texte souligné,  bla bla blabla bla blabla bla
blabla bla blabla bla blabla bla blabla bla bla \texteGras{en gras
\texteItalique{et en même temps italique.}}}

\end{document}

结果

相关内容