让 LaTeX 对书中的笔记进行排序

让 LaTeX 对书中的笔记进行排序

我想创建一个 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 noteand ``。它将选择第一个,跳过 10 个字符获取45并将其用作对笔记进行排序的键。

缺点是:您不能对注释的文本进行硬换行,\booknote尽管允许有空行,但您不应该在前面插入空格。

每次更改时,请记住在编译之前notes.tex调用。另一个选项是使用按您想要的顺序存储注释,并将其作为目标,以便您也可以按您喜欢的顺序编辑注释。sortmain.texmynotes.texnotes.texsort

相关内容