2012-06-02 92 views
16

我刚开始使用org-mode,至今发现它非常有用。我在目录树中有大量的技术论文集,我想通过它们并通过组织模式对它们进行索引。我想要的是有一种方法去浏览它们,看看没有注释的,然后一个一个地注释它们。我想通过首先编写一个像[[xxx.pdf] [尚未完成]]的链接文件,然后提交未完成的文件,浏览它们,并决定如何添加注释。此外,我想添加标签。我真正喜欢的是能够即时创建新的标签。有没有人在组织模式下做过这样的事情?以组织我的论文的组织模式

维克多

+1

如果你没有得到这里的答案,然后[尝试org-模式列表(HTTP: //news.gmane.org/gmane.emacs.orgmode)。所有的组织大师都在那里。 – Tom

+1

这里没有什么,你不能只使用股票组织模式和Emacs。什么阻止你? –

回答

15

如果你有你的文件组织这样的,

% 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

#! /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 *.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 

打开papers.org,运行C-u C-c C-q重新调整标签。你的文件现在应该是这样的:

org-mode research papers

另外我想补充的标签。我真正喜欢的是能够即时创建新的标签。

一旦你在一开始有一个标题(事与*,你可以打C-c C-c并添加任何你想要的标签。

您可能会发现this detailed write-up of using org-mode and RefTeXthis alternate approach有用的,特别是如果你使用的乳胶。

+0

有什么方法可以在子目录中查找文件,并且可以将创建的新文件添加到现有的papers.org文件中?我们可以随时手动添加它,但我想可能有一个命令行解决方案运行脚本并只添加最近添加的文件。谢谢。 – Anusha

+0

@Anusha:对于子目录中的文件,你可以将'* .pdf'中的f改为'for $(find。-name'* .pdf')'中的f。在使用数据库或在Emacs内部重新实现一个数据库的情况下,仅添加新文件就很不幸。 – jmdeldin

2

继承人是修改后的版本上的目录工作

#! /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