评论

评论

评论

我从exsheets文档中抓取了一段代码来为问题和解决方案生成漂亮的标题,但它坏了。这是fancy当前 CTAN 第 49 页和第 50 页的标题样式文档(2013年12月7日)。

执行

\documentclass{article}
\usepackage{exsheets}

% From the documentation page 49 and 50
\DeclareInstance{exsheets-heading}{fancy}{default}{
    toc-reversed  = true,
    indent-first  = true,
    vscale        = 2,
    pre-code      = \rule{\linewidth}{1pt},
    post-code     = \rule{\linewidth}{1pt},
    title-format  = \large\scshape\color{exsheetsred},
    number-format = \large\bfseries\color{exsheetsblue},
    points-format = \itshape,
    join          = { number[r,B] title[l,B] (.333em,0pt) },
    attach        = {
        main[hc,vc]number[hc,vc](0pt,0pt);
        main[l,vc]points[r,vc](-\marginparsep,0pt)
    }
}

\SetupExSheets{headings=fancy}
\begin{document}

\begin{question}
    What does the following code do?
\end{question}

\end{document}

输出

它好像在线内断title[l,B]join = { number[r,B] title[l,B] (.333em,0pt) }

Runaway argument?
B] (.333em,0pt)\s_obj_end \__prg_break_point:Nn \seq_map_break: {\__seq_pop_ite
m_def: \ETC.
! File ended while scanning use of \__exsheets_join_coffin_sequence:w.
<inserted text> 
                \par 
<*> sheet1.tex

? 

答案1

一旦你知道了问题是什么,问题就很明显了。假设你定义了一个宏

\def\foo[#1](#2){...}

并像使用它一样

\foo[1] (2)

你收到错误

Runaway argument?
1] (2) 
! Paragraph ended before \foo was complete.

因为它一直在寻找,但永远找不到。这里也发生了同样的事情。和键](的行基本上是内部命令的分隔参数。您的错误来自以下行joinattach

join          = { number[r,B] title[l,B] (.333em,0pt) },

应为

join          = { number[r,B]title[l,B](.333em,0pt) },

中间没有空格。然后你的代码给出

在此处输入图片描述

文档有误,这是我的复制粘贴错误:exsheets实现时expl3忽略了空格。当我将原始代码复制到文档中时,我忘记删除危险的空格了……

顺便说一句:文档中的代码可作为自己的标题实例的示例。如果您只想使用“花哨”的样式,请执行以下操作:

\documentclass{article}
\usepackage[load-headings]{exsheets}
\SetupExSheets{headings=fancy}
\begin{document}

\begin{question}
    What does the following code do?
\end{question}

\end{document}

相关内容