我创建了一种方法,将挪威语-英语翻译输入到某种词汇表中。我需要多个这样的小词汇表,稍后将它们编译成一个大词汇表。它不需要很复杂。
我使用datatool
字母顺序对列表进行排序(暂时忽略挪威索引问题),实际上,我对这个系统非常满意。
\documentclass[11pt]{memoir}
% \usepackage[colorlinks=true]{hyperref} % hyperlink to target
\usepackage{multicol} % multiple columns
\usepackage{hanging} % paragraph indentation control
\usepackage{datatool} % for sorting lists
\newcommand{\vocab}[3]{%\parskip=0pt \textbf{#1} (#2) #3~\par%
\DTLnewrow{vocabsort}%
\DTLnewdbentry{vocabsort}{norsk}{#1}%
\DTLnewdbentry{vocabsort}{class}{#2}%
\DTLnewdbentry{vocabsort}{english}{#3}%
}
\newenvironment{vocabsection}[1]{\noindent \hspace{1em} \textbf{#1} %
\DTLifdbexists{vocabsort}{\DTLcleardb{vocabsort}}{\DTLnewdb{vocabsort}}%
}%
{ \dtlsort{norsk}{vocabsort}{\dtlicompare}%
\displaysorteddb
}
\newcommand{\displaysorteddb}{%
\begin{multicols}{2}
\begin{hangparas}{0.5em}{1}
\begin{DTLenvforeach*}{vocabsort}{\norsk=norsk, \class=class, \english=english}
\textbf{\norsk} (\class) \english~\par
\end{DTLenvforeach*}
\end{hangparas}
\end{multicols}
}
\begin{document}
\subsection{Foo}
\begin{vocabsection}{Map Vocab}
\vocab{basseng}{n.}{pool}
\vocab{hytte}{n.}{cabin}
\vocab{akershus}{n.}{A castle in Oslo, the counselors' cabin}
\vocab{kjokken}{n.}{kitchen}
\vocab{bad}{n.}{bathroom}
\vocab{basketball bane}{n.}{basketball court}
\vocab{lekeplass}{n.}{playground}
\vocab{sykepleirske}{n.}{nurse's cabin}
\vocab{innsj\o}{n.}{lake}
\vocab{skog}{n.}{forest}
\vocab{vei}{n.}{road}
\vocab{flagg}{n.}{flag}
\vocab{lysthus}{n.}{gazebo}
\end{vocabsection}
\end{document}
但取消注释\usepackage[colorlinks=true]{hyperref}
,一切都会崩溃,产生:
老实说,我不需要超链接,因为无论如何这个文档大部分都会以硬拷贝的形式使用,但现在我很好奇hypperref
这可能是什么原因造成的,以及是否有解决办法。
正如评论中指出的那样,该错误还需要使用hanging
。问题仍然存在,在这种情况下,hyperref
和的交互如何hanging
导致multicols
失败?
使用 XeTeX 进行编译,因为它会忽略由 产生的命令已定义错误hanging
。