是否存在一种方法或环境,可以用法语书写,就像在“guillemets”中引用一样,在破折号中自动插入不间断空格的文本?因此,我使用了这个简单的方法,但它在换行符处在破折号和示例之间切换:
beginning —~exemple~— end.
我正在使用[frenchb]{scrbook}
、[frenchb]{babel}
&[babel,french=guillemets*]{csquotes}
包,其中 xelatex & 编码 = UTF-8 Unicode。谢谢
答案1
您可以定义\dashquote
哪些是成对出现的。第一次(以及每个奇数)出现的\dashquote
就像--~
,第二次(以及每个偶数)出现的\dashqoute
就像~--
。最后,您可以将(在 XeTeX 中)unicode 字符设置—
为活动字符并将其定义为\dashquote
。
\def\dashquote{\bgroup\def\dashquote{\unskip~--\egroup}--~\ignorespaces}
\catcode`—=13 \def—{\dashquote} % the Unicode character — is defined here
Text — quoted example — text. % Works like: Text --~quoted example~-- text.
Text —quoted example— text. % Works the same, like: Text --~quoted example~-- text.
答案2
使用 UTF-8 字符 U+2014 (EM DASH) 或\textemdash
:
\documentclass{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[babel,french=guillemets*]{csquotes}
\begin{document}
\parbox{0pt}{beginning ---~exemple~--- end}
\bigskip
\parbox{0pt}{beginning \textemdash~exemple~\textemdash{} end}
\bigskip
\parbox{0pt}{beginning —~exemple~— end}
\end{document}
示例中的\parbox
只是为了尽可能强制 LaTeX 中断。第三个\parbox
包含—
相当于输入 的字符\textemdash
。
问题在于---
TeX 会在连字符-
或以该连字符结尾的任何连字符后添加一个空的自由选择符。
对于 XeLaTeX 有一个解决方法(由于神秘的原因,XeTeX 在破折号后添加了空的自由选择项):
\documentclass{scrbook}
\usepackage{fontspec}
\usepackage[french]{babel}
\usepackage[babel,french=guillemets*]{csquotes}
\usepackage{newunicodechar}
\newunicodechar{—}{\mbox{—}}
\begin{document}
\parbox{0pt}{beginning ---~exemple~--- end}
\bigskip
\parbox{0pt}{beginning —~exemple~— end}
\end{document}
答案3
我不知道是否有更好的系统。不过,这个系统只适用于两个破折号之间。编辑:我没看到你用过 XeLaTeX
\documentclass{scrbook}
\usepackage{expl3}
\usepackage{newunicodechar}
\newunicodechar{—}{\delimitedbyemdash}
\def\delimitedbyemdash#1—{\textemdash~\csname tl_trim_spaces:n\endcsname{#1}~\textemdash}
\begin{document}
Is this —what you mean— in the question?
\end{document}