我正在使用优秀的exsheets
软件包来编写一本书的问题部分。因为我需要问题的标题,所以我使用subtitle
软件包内置的功能。因此,即使它可以完成工作,也存在两个问题:
- 字幕没有自动换行。
- 带有逗号或重音符号的字幕会产生错误。
考虑以下 MWE:
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{exsheets}
\SetupExSheets{
headings = block-subtitle
}
\begin{document}
\begin{question}[subtitle=I'm trying to make a super long subtitle that extends way beyond the page's normal margins.]
First exercise.
\end{question}
\begin{question}[subtitle={Another subtitle, now with commas and áccents}]
Second exercise.
\end{question}
\end{document}
问题 2 似乎是最糟糕的。加载inputenc
无法解决utf8
问题,但我发现将字幕括在括号中是可行的,就像我在 MWE 中做的那样。然而,可以做到吗没有括号里的内容?
我无法修复问题 1。我尝试过\newline
、双反斜杠等。有什么方法可以修复它吗?
答案1
选项和逗号
由于环境的可选参数question
可以是逗号分隔的列表
[subtitle=Another subtitle, now with commas and áccents]
由两个“选项”组成:
subtitle=Another subtitle
now with commas and áccents
正如你自己发现的:如果一个选项包含逗号,则参数必须放在括号内:
[subtitle={Another subtitle, now with commas and áccents}]
至于重音:这是使用正确输入编码的问题。使用 unicodeá
可以\usepackage[utf8]{inputenc}
很好地与 pdflatex 配合使用。
字幕
字幕排版在水平框中。结果是:没有换行符。一种可能的解决方法是block-subtitle
使用subtitle-pre-code
选项适当地重新定义实例,以便将字幕放在 内\parbox
。由于预代码后面的代码用括号括起来,因此这将起作用:
\DeclareInstance{exsheets-heading}{block-subtitle}{default}{
join = {
title[r,B]number[l,B](.333em,0pt) ;
title[r,B]subtitle[l,B](1em,0pt) ;
title[l,B]points[l,B](\linewidth+\marginparsep,0pt) ;
main[l,T]title[l,T](0pt,0pt) ;
} ,
subtitle-pre-code = \parbox[t]{.8\linewidth}
}
完整代码:
\documentclass{article}
\usepackage{showframe}
\usepackage[utf8]{inputenc}
\usepackage{exsheets}
\DeclareInstance{exsheets-heading}{block-subtitle}{default}{
join = {
title[r,B]number[l,B](.333em,0pt) ;
title[r,B]subtitle[l,B](1em,0pt) ;
title[l,B]points[l,B](\linewidth+\marginparsep,0pt) ;
main[l,T]title[l,T](0pt,0pt) ;
} ,
subtitle-pre-code = \parbox[t]{.8\linewidth}
}
\SetupExSheets{
headings = block-subtitle
}
\begin{document}
\begin{question}[subtitle={I'm trying to make a super long subtitle that
extends way beyond the page's normal margins.}]
First exercise. More text
\end{question}
\begin{question}[subtitle={Another subtitle, now with commas and áccents}]
Second exercise.
\end{question}
\end{document}
答案2
一个肮脏的伎俩:
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{exsheets}
\SetupExSheets{
headings = block-subtitle
}
\begin{document}
\begin{question}[subtitle=\parbox[t][-1ex]{0.8\hsize}{%
I'm trying to make a super long subtitle that extends way beyond the page's normal margins.}]
\bigskip
First exercise.
\end{question}
\begin{question}[subtitle={Another subtitle, now with commas and áccents}]
Second exercise.
\end{question}
\end{document}
您需要编译至少两倍的新格式以覆盖控件。宽度可\parbox
根据需要选择。
答案3
针对第二个问题的肮脏伎俩(也编译了两次):
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage[utf8x]{inputenc}
\usepackage{exsheets}
\SetupExSheets{
headings = block-subtitle
}
\begin{question}[subtitle=Another subtitle{,} now with commas and \'{a}ccents]
Second exercise.
\end{question}
\end{document}