背景

背景

背景

自定义目录条目是建议将页码从右侧移动到左侧。

问题

自定义命令丢失了 ToC 超链接。我尝试按如下方式恢复超链接:

\goto{#3}[page(\currentlistentrylocation)]

这不会产生正确的页码链接。类似的尝试包括:

  • \转到{#3}[#3]
  • \gotopage{#3}
  • \转到{#3}[第(#3)页]

看起来这些命令不能间接引用页码。

代码

最小示例:

\setupinteraction[state=start,]
\setupcombinedlist[content][interaction=all,]

% Set the page number to the left of the section title.
\define[3]\SectionToCEntry{%
  \par \leftaligned\bgroup
    \hbox to 2em{\goto{#3}[page(\currentlistentrylocation)]}%
      \hskip 1em
      \vtop{\hsize\dimexpr\textwidth-3em\relax#2}
  \egroup \par%
}

\setuplist[section][
  alternative=command,
  command=\SectionToCEntry,
]

\starttext
  \placecontent
  \dorecurse{4}{
    \page
    \section[title={Section A}]
    \dorecurse{5}{\input knuth}
    \section[title={Section B}]
    \dorecurse{5}{\input ward}
  }
\stoptext

问题

我想知道:

  • 如何保留这种自定义目录的内部超链接;或者
  • 有没有更简单的方法来重新配置 ToC?

有关的

附加信息:

答案1

alternative=interactive按照 Wolfgang 的解决方案使用(来自邮件列表):

% Set the page number to the left of the section title.
\define[3]\SectionToCEntry{%
  \leftaligned\bgroup
    \hbox to 2em{#3}%
      \hskip 1em
      \vtop{\hsize\dimexpr\textwidth-3em\relax#2}
  \egroup 
}

\setuplist[section][
  alternative=interactive,
  command=\SectionToCEntry,
]

Marco 的解决方案稍微复杂一些:

\unprotect
\define[3]\SectionToCEntry{%
  \hbox \strc_lists_get_reference_attribute\v!all{%
    \par \leftaligned\bgroup
      \hbox to 2em{#3}%
        \hskip 1em
        \vtop{\hsize\dimexpr\textwidth-3em\relax#2}
    \egroup \par%
  }
}
\protect

需要\unprotect来适应\v!all

相关内容