Clemens 的enotez
软件包使排版尾注比使用传统方式有趣得多,并鼓励我在排版出版物时使用(更美观的)尾注而不是(更简单但看起来更笨拙的)脚注。
然而。
现在出现了以前没有的问题。似乎只要将尾注标记附加到单词上,该单词就无法在 TeX 中使用连字符。对比以下三种情况(图中每个段落一种情况):
无标记
使用标准 TeX 例程的常规脚注标记
通过 enotez 制作的标记
很明显,TeX 在连字符这个单词时存在问题,日志文件可以证明这一点:
Overfull \hbox (11.5128pt too wide) in paragraph at lines 8--10
[]\OT1/cmr/m/n/12 Hat ei-ner und ge-macht zu wer-den um von Buch wol-len an um
Dampfschifffahrt$[]$
@Clemens: 您注意到这个问题了吗?@Everyone else: 在官方修复之前,有什么方法可以解决这个问题吗?
以下是 MWE:
\documentclass[12pt, DIV=9]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{enotez,blindtext}
\begin{document}
Hat einer und gemacht zu werden um von Buch wollen an um Dampfschifffahrt
\blindtext
Hat einer und gemacht zu werden um von Buch wollen an um Dampfschifffahrt\footnote{Footnote}
\blindtext
Hat einer und gemacht zu werden um von Buch wollen an um Dampfschifffahrt\endnote{Test}
\blindtext
\printendnotes
\end{document}
答案1
没有“单词边界”;\nolinebreak
对于大多数常见情况,在尾注标记前添加似乎就足够了。
\documentclass[12pt, DIV=9]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{enotez}
\usepackage{blindtext}
\ExplSyntaxOn
\cs_set_protected:Npn \endnote
{
\nolinebreak % <--- ADDED
\peek_meaning_ignore_spaces:NTF [
{ \enotez_endnote_aux:w }
{ \enotez_endnote:nn { \q_no_value } }
}
\ExplSyntaxOff
\begin{document}
Hat einer und gemacht zu werden um von Buch wollen an um Dampfschifffahrt
\blindtext
Hat einer und gemacht zu werden um von Buch wollen an um Dampfschifffahrt\footnote{Footnote}
\blindtext
Hat einer und gemacht zu werden um von Buch wollen an um Dampfschifffahrt\endnote{Test}
\blindtext
\printendnotes
\end{document}
更好的修复方法应该按照\@footnotemark
标准 LaTeX 中的定义进行:
% latex.ltx, line 6238:
\def\@footnotemark{%
\leavevmode
\ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
\@makefnmark
\ifhmode\spacefactor\@x@sf\fi
\relax}
因此,类似下面的做法可能会更好。
\cs_set_protected:Npn \enotez_endnote_mark:n #1
{
\leavevmode
\mode_if_horizontal:T { \tl_set:Nx \l__enotez_sf_tl { \the\spacefactor } \nobreak }
\int_gincr:N \g__enotez_endnote_id_int
\quark_if_no_value:nTF {#1}
{
\int_gincr:N \g__enotez_endnote_mark_int
\cs_gset:cpx { @currentlabel }
{ \enotez_counter_format:V \g__enotez_endnote_mark_int }
\cs_gset_eq:NN \theendnote \@currentlabel
\enotez_write_mark:nn
{ \int_use:N \g__enotez_endnote_id_int }
{ \enotez_counter_format:V \g__enotez_endnote_mark_int }
}
{
\cs_gset:cpx { @currentlabel } {#1}
\cs_gset_eq:NN \theendnote \@currentlabel
\enotez_write_mark:nn { \int_use:N \g__enotez_endnote_id_int } {#1}
}
}
\cs_set_protected:Npn \enotez_write_mark:nn #1#2
{
\bool_if:NTF \l__enotez_hyperfootnotes_bool
{
\enotezwritemark { \hyperlink { enz.#1 } { \enmarkstyle #2 } }
\bool_if:NT \l__enotez_hyperbackref_bool
{
\box_move_up:nn { 1em }
{ \hbox:n { \hypertarget { enz.#1.backref } { } } }
}
}
{ \enotezwritemark { \enmarkstyle #2 } }
\mode_if_horizontal:T { \spacefactor \l__enotez_sf_tl \scan_stop: }
}