使用 enotez 的尾注:连字符和换行问题

使用 enotez 的尾注:连字符和换行问题

Clemens 的enotez软件包使排版尾注比使用传统方式有趣得多,并鼓励我在排版出版物时使用(更美观的)尾注而不是(更简单但看起来更笨拙的)脚注。

然而。

现在出现了以前没有的问题。似乎只要将尾注标记附加到单词上,该单词就无法在 TeX 中使用连字符。对比以下三种情况(图中每个段落一种情况):

  1. 无标记

  2. 使用标准 TeX 例程的常规脚注标记

  3. 通过 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: }
  }

相关内容