注意:这个问题与其他类似的自定义列表问题不同,因为我的每个感兴趣的环境可以有多个关键字,并且我只想一次生成一个与一个关键字相关的列表。
我在论文附录中附上了 PDF 文件\includegraphics
。这些 PDF 是我向学生提出的问题。这些问题有十几个。有些问题在不同季度向不同的学生多次提出。例如,问题版本 35 可能在 2011 年春季、2013 年秋季和 2014 年夏季提出。在每个图的标题中,我将包括提出问题的季度。
但是,我还想为读者提供按季度排序的数字列表。例如,我希望读者看到 2011 年春季执行的所有问题的列表。棘手的部分是我希望以某种方式自动执行此操作。
spring-2011
我是否可以以某种方式在所有与特定季度相对应的环境中包含一个关键字\begin{figure}
,然后自动生成包含给定关键字的图形列表?
此列表应自动提取仅包含特定关键字的图形(并且每个图形本身可以有多个关键字)。
如果有什么不同,我想将这份图表列表包含在附录本身中。而且我希望能够轻松自定义列表的格式/外观。
所以这就是我想要做的事情:
\documentclass{book}
\usepackage{graphicx}
\newcommand{\makeMyCustomQuarterList}[2]{
%#1 = quarter tag, e.g. "winter-2013"
%#2 = title of custom list, e.g. "Winter 2013"
%
%How do I implement this?
%
}
\newcommand{\questionQuarterTag}{ %This is placed inside \figure environments
%How do I implement this?
}
\begin{document}
\chapter{A chapter}
Here's the body of the document. Pretty short, eh?
\appendix
\chapter{An appendix}
Each question administered to students is included only once.
The quarters it which each question was administered are found in the corresponding captions.
For convenience, a list of questions organized by quarter is included here:
% Produce list of questions administered in winter 2013
\makeMyCustomQuarterList{winter-2013}{Winter 2013}
Maybe I want text here.
% And other list for spring 2013:
\makeMyCustomQuarterList{spring-2013}{Spring 2013}
%The above \makeMyCustomQuarterList commands should produce two separate
% mini-tocs, each of which looks like:
%Questions administered in #2
%Figure A.1 ................ pg. 34
%Figure A.5 ................ pg. 38
%Figure A.6 ................ pg. 39
% Here is one of the questions that I want to tag with a quarter.
\begin{figure}
\rule{5in}{7in}
\caption{Administered in quarters X, Y, and Z}
\label{myfig}
\questionQuarterTag{winter-2013}
\questionQuarterTag{winter-2014} %Note multiple tags!
\end{figure}
\end{document}
在查看下面评论中@JohnKormylo的链接后,我决定从中实现索引splitidx
。我认为这种格式实际上对读者来说效果更好。
答案1
以下代码尚不完善,但我认为您可以做到。我使用float
包来声明新的浮动环境。因此,每当您说它\questionQuarterTag{tpye}{coptain}
排版一个浮动环境时,它都会排版为类型类型并传递标题科普坦到相应的XXX 列表。
\documentclass{article}
\usepackage{float}
\newcommand{\makeMyCustomQuarterList}[2]{%
\listof{#1}{#2}}
\newcommand{\questionQuarterTag}[2]{
\hrule height0pt
\vbox to0pt{
\vspace*{\paperheight}
\begin{#1}
\caption[#2]{}
\end{#1}}}
\newfloat{win13}{H}{w13}\floatname{win13}{Winter 2013}
\newfloat{spr14}{H}{p14}\floatname{spr14}{Spring 2014}
\begin{document}
\makeMyCustomQuarterList{win13}{List of Winter 2013}
\makeMyCustomQuarterList{spr14}{List of Spring 2014}
\clearpage
\begin{figure}[H]
\rule{1in}{1in}
\caption{A Black box}
\questionQuarterTag{win13}{Black}
\end{figure}
\begin{figure}[H]
\rule{1in}{2in}
\caption{A tall box}
\questionQuarterTag{win13}{Tall}
\questionQuarterTag{spr14}{Tall}
\end{figure}
\begin{figure}[H]
\rule{2in}{2in}
\caption{A tall fat box}
\questionQuarterTag{spr14}{Tall and Fat}
\end{figure}
\end{document}
答案2
这种方法(类似索引的方法)不使用多个索引。相反,我使用!
来分配子条目。在以下代码的开头,\newkeyword{win13}{13-4}{Winter 2013}
声明一个键win13
,排序为13-4
并显示为2013 年冬季。在包括数字的同时,在按以下方式排序的子条目\questionQuarterTag{win13}{black}{Black}
下添加并显示为win13
black
黑色的。
\documentclass{article}
\usepackage{makeidx}
\makeindex
\newcommand*\newkeyword[3]{
\expandafter\def\csname mykeyword#1sort\endcsname{#2}
\expandafter\def\csname mykeyword#1name\endcsname{#3}}
\newcommand{\questionQuarterTag}[3]{
\index{\csname mykeyword#1sort\endcsname @\csname mykeyword#1name\endcsname!#2@#3}}
\begin{document}
\newkeyword{win13}{13-4}{Winter 2013}
\newkeyword{spr14}{14-1}{Spring 2014}
\begin{figure}[H]
\rule{1in}{1in}
\caption{A black box}
\questionQuarterTag{win13}{black}{Black}
\end{figure}
\begin{figure}[H]
\rule{1in}{2in}
\caption{A tall box}
\questionQuarterTag{win13}{tall}{Tall}
\questionQuarterTag{spr14}{tall}{Tall}
\end{figure}
\begin{figure}[H]
\rule{2in}{2in}
\caption{A tall fat box}
\questionQuarterTag{spr14}{tallfat}{Tall and Fat}
\end{figure}
\printindex
\end{document}