背景
自定义目录条目是建议将页码从右侧移动到左侧。
问题
自定义命令丢失了 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
。