我正在制作自定义部分,其名称取自使用arrayjob
包。我想为这些自定义部分制作一个目录,但它似乎不想\addcontentsline
接受变量参数。这是我所拥有的 MWE:
\documentclass[]{article}
\usepackage{arrayjob,hyperref}
\newcounter{mysection}
\setcounter{mysection}{1}
\newcommand\mysection
{
\newpage
{\Huge \bfseries \themysection: \sectionnames(\themysection)}
\addtocounter{mysection}{1}
}
\begin{document}
\newarray\sectionnames
\readarray{sectionnames}
{
First section &
Second section &
Third section &
Four section
}
\mysection
\mysection
\mysection
\end{document}
现在,我尝试\addcontentsline{toc}{section}{SectionNameHere}
在我的新的命令中使用自动将名称(以及指向它们的链接)添加到目录中,就像这样,希望能自动制作文档内可点击的链接:
\documentclass[]{article}
\usepackage{arrayjob,hyperref}
\newcounter{mysection}
\setcounter{mysection}{1}
\newcommand\mysection
{
\newpage
{\Huge \bfseries \themysection: \sectionnames(\themysection)}
\addcontentsline{toc}{chapter}{\themysection: \sectionnames(\themysection)}
\addtocounter{mysection}{1}
}
\begin{document}
\newarray\sectionnames
\readarray{sectionnames}
{
First section &
Second section &
Third section &
Four section
}
\mysection
\mysection
\mysection
\end{document}
但是,我收到以下错误:
\one@VEC 的参数有一个额外的}。
我使用起来\addcontentsline{toc}{chapter}{\themysection}
没有任何问题。当我尝试添加数组项时,它给出了此错误。
答案1
这是一种使用即将推出的 LaTeX 3 格式\seq
的“数组”样式的方法。expl3
seq 变量用 存储\skeletonreadarray
,其值存储为逗号分隔的列表,稍后用 提取相关数组项\seq_item:Nn
,但需要包装器\retrievearrayelement
。
\documentclass[]{article}
\usepackage{hyperref}
\usepackage{xparse}
\ExplSyntaxOn
\seq_new:N \g_skeleton_sectionnames_seq
\cs_new:Npn \skeletonreadarray#1 {
\seq_gset_from_clist:Nn \g_skeleton_sectionnames_seq {#1}
}
\cs_new:Npn \retrievearrayelement#1{%
\seq_item:Nn \g_skeleton_sectionnames_seq {#1}
}
\ExplSyntaxOff
\newcounter{mysection}
\makeatletter
\newcommand\mysection{%
\clearpage
\refstepcounter{mysection}%
{\Huge \bfseries \themysection: \retrievearrayelement{\themysection}}
\addcontentsline{toc}{section}{\themysection:\ \retrievearrayelement{\c@mysection}}
}
\makeatother
\begin{document}
\tableofcontents
\skeletonreadarray
{
First section,
Second section,
Third section,
Four section,
Five section
}
\mysection
\mysection
\mysection
\mysection
\mysection
\end{document}