![让 LaTeX 对书中的笔记进行排序](https://linux22.com/image/290896/%E8%AE%A9%20LaTeX%20%E5%AF%B9%E4%B9%A6%E4%B8%AD%E7%9A%84%E7%AC%94%E8%AE%B0%E8%BF%9B%E8%A1%8C%E6%8E%92%E5%BA%8F.png)
我想创建一个 LaTeX 文档来记录我正在阅读的书的笔记。
我希望最终的文档看起来像这样:
============
第 xy 页这里应为注释 xy..
第 ab 页以下是第 AB 页的注释。
============
此外,我希望对笔记进行排序,使页码最小的放在文档的开头,页码较大的放在文档的下方。我在 LaTeX 中的输入应该是这样的:
Page 836: Here shall be the note for page number 836..
Page 144: Here shall be the note for page number 144..
结果应该是:
===
第144页:这是第 144 页的注释。
第836页:这是第 836 页的注释。
===
我试过了
\usepackage{amsthm}
\newtheorem{note}{Page}
但我没有得到满意的结果。
您知道如何获得期望的结果吗?
我很高兴能得到任何帮助!
附言:由于我不是以英语为母语的人,请随意编辑这个问题。
答案1
这里有一种方法可以做到这一点(ab)使用nomencl
包;使用 MakeIndex 进行自动排序:
\documentclass{article}
\usepackage{nomencl}
\usepackage{lipsum}
\makenomenclature
\renewcommand\nomname{Notes}
\renewcommand{\nomlabel}[1]{\bfseries Page~#1:\hfil}
\begin{document}
\mbox{}
\nomenclature{863}{\lipsum*[4]}
\nomenclature{144}{\lipsum*[3]}
\nomenclature{234}{\lipsum*[2]}
\nomenclature{14}{\lipsum*[5]}
\printnomenclature[0.75in]
\end{document}
如果调用了该文档mydoc.tex
,则应使用
pdflatex mydoc
makeindex mydoc.nlo -s nomencl.ist -o mydoc.nls
pdflatex mydoc
答案2
\documentclass{article}
\renewcommand*\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries Page #1:}
\begin{document}
\begin{description}
\item[836] Here shall be the note for page number 836..
\item[144] Here shall be the note for page number 144..
\end{description}
\end{document}
答案3
首先,我建议您使用自定义宏来保存您的笔记,这样如果您改变对其演示的想法,您只需更改宏的定义即可实现更改。
因此让我们调用你的宏\booknote{pageno}{text}
。
我将为您提供一个非常简单的排序解决方案。如果您只打算做少量笔记,那么让 TeX 为您排序是有意义的。一些更有经验的用户可以为您提供建议。相反,如果您做了很多笔记,那么为了提高效率,将排序过程推迟到外部工具是有意义的。例如,这就是 BibTeX 所做的。
现在,我们不想编写自定义脚本,也不需要!如果您使用的是 Linux 操作系统,那么您已经sort
在控制台上可以使用该程序。它会按某种顺序对文件的行进行排序。
现在只需组织您的文件:
主文件
main.tex
:\documentclass{article} \title{My notes for Bla} \author{myself} \newcommand{\booknote}[2]{\item[Pag.~#1] #2} \begin{document} \begin{description} \input{notes.tex} \end{description} \end{document}
保存你的笔记的文件
notes.tex
:\booknote{45}{My note} \booknote{925}{another note}
现在既然notes.tex
有你的笔记每行一个我们可以使用以下方法对文件进行排序
sort -g -k 1.11 -t} -o notes.tex notes.tex
-g
按数字排序-k 1.11
使用第一个字段作为排序键,键本身从第 11 个字符开始-t}
说这}
是我们的字段分隔符
因此sort
将看到一行类似于\booknote{45}{My note}
find the }
thus seeing three fields \booknote{45
, {My note
and ``。它将选择第一个,跳过 10 个字符获取45
并将其用作对笔记进行排序的键。
缺点是:您不能对注释的文本进行硬换行,\booknote
尽管允许有空行,但您不应该在前面插入空格。
每次更改时,请记住在编译之前notes.tex
调用。另一个选项是使用按您想要的顺序存储注释,并将其作为目标,以便您也可以按您喜欢的顺序编辑注释。sort
main.tex
mynotes.tex
notes.tex
sort