Emacs 以组织模式组织我的论文

Emacs 以组织模式组织我的论文,emacs,org-mode,Emacs,Org Mode,我刚刚开始使用组织模式,到目前为止,我发现它非常有用。我在一个目录树中收集了大量的技术论文,我想浏览它们,并通过组织模式对它们进行索引。我想要的是有一种方法来浏览它们,看看那些没有注释的,并逐一注释它们。我想象这样做,首先创建一个像[[xxx.pdf][not done yet]]这样的链接文件,然后呈现未完成的链接,浏览它们并决定如何添加注释。此外,我想添加标签。我真正想要的是能够在飞行中制作新的标签。有人在组织模式下做过类似的事情吗 维克托如果你的论文是这样组织的 % ls -1 ~/Ref

我刚刚开始使用组织模式,到目前为止,我发现它非常有用。我在一个目录树中收集了大量的技术论文,我想浏览它们,并通过组织模式对它们进行索引。我想要的是有一种方法来浏览它们,看看那些没有注释的,并逐一注释它们。我想象这样做,首先创建一个像[[xxx.pdf][not done yet]]这样的链接文件,然后呈现未完成的链接,浏览它们并决定如何添加注释。此外,我想添加标签。我真正想要的是能够在飞行中制作新的标签。有人在组织模式下做过类似的事情吗


维克托

如果你的论文是这样组织的

% ls -1 ~/References/functional-programming
The Lambda Calculus.pdf
Recursive Functions of Symbolic Expressions and Their.pdf
您可以运行快速脚本来构建组织文件。将以下内容另存为
make org
,并从您的论文目录(
sh make org>papers.org
)运行它

在Emacs中打开
papers.org
,运行
C-u C-C-q
重新对齐标签。您的文件现在应该如下所示:

此外,我想添加标签。我真正想要的是能够在飞行中制作新的标签

一旦你有了一个标题(开头带有
*
的东西),你可以点击
C-C-C
并添加你想要的任何标签


您可能会发现或有用,特别是如果您使用LaTeX。

以下是在目录上工作的修改版本

#! /bin/sh
#
# make-org -- generates an org-mode file from a directory of PDFs
#
# AUTHOR:
#   Jon-Michael Deldin
# USAGE:
#   cd ~/path/to/papers && make-org > papers.org
#

echo "#+TITLE:   Research Papers"
echo "#+STARTUP: align hidestars indent lognotedone"
echo

for f in $(find . -name '*.pdf'); do
name=${f%.*} # strip extension
path=$(echo $f | sed 's/ /%20/') # encode spaces as %20
echo "* TODO $name :unread:"
echo
echo "[[file:$path][$name]]"
echo
done

如果你在这里得不到答案。所有的组织大师都在那里。这里没有什么你不能做的,只有股票组织模式和Emacs。到底是什么阻止了你?有没有办法在子目录中找到文件并将新创建的文件添加到现有的papers.org文件中?我们总是可以手动添加它,但我想可能会有一个错误命令行解决方案,它运行脚本并只添加最近添加的文件。谢谢。@Anusha:对于子目录中的文件,您可以将*.pdf中f的
更改为$(find.-name'*.pdf')
。除了在Emacs中使用数据库或重新实现一个数据库之外,只添加新文件是运气不佳的。
#! /bin/sh
#
# make-org -- generates an org-mode file from a directory of PDFs
#
# AUTHOR:
#   Jon-Michael Deldin
# USAGE:
#   cd ~/path/to/papers && make-org > papers.org
#

echo "#+TITLE:   Research Papers"
echo "#+STARTUP: align hidestars indent lognotedone"
echo

for f in $(find . -name '*.pdf'); do
name=${f%.*} # strip extension
path=$(echo $f | sed 's/ /%20/') # encode spaces as %20
echo "* TODO $name :unread:"
echo
echo "[[file:$path][$name]]"
echo
done