Introduction
Introduction Statistics Contact Development Disclaimer Help
t002-scholarref.txt - adamsgaard.dk - my academic webpage
git clone git://src.adamsgaard.dk/adamsgaard.dk
Log
Files
Refs
README
LICENSE
---
t002-scholarref.txt (8684B)
---
1
2 ## Rationale
3 During the writing phase of an academic paper, common tasks include
4 downloading PDFs of publications and getting their references into
5 your bibliography. However, I am not a fan of navigating the slow,
6 bloated, tracker-filled, and distracting webpages of academic
7 journals and publication aggregators. For some reason, many
8 publishers decided that clicking the "Download PDF" link should
9 redirect the user to an unusable in-browser PDF viewer instead of
10 providing the PDF file directly. While the majority of journal
11 webpages provide formatted citations for their publications, these
12 are inconsistent in style and content.
13
14 For these reasons, I constructed a set of shell tools called
15 "scholarref" that allow me to perform most of the tasks without
16 having to open a web browser. As the title of this post indicates,
17 the goal of the toolset is to provide as much functionality a person
18 might need during scientific writing without leaving the command
19 line. The tools are under continuous development[0]. At present
20 I avoid roughly 90% of visits to journal webpages. I hope to get
21 to 100% someday.
22
23 The "scholarref" design goals are the following:
24
25 - Written as POSIX shell scripts with minimal external
26 dependencies: Ensures maximum flexibility and portability.
27
28 - Aim for simplicity:
29 Fewer lines of code make the programs easier to understand,
30 maintain, and debug.
31
32 - Each tool should do one thing, and do it well:
33 Let the users piece the components together to fit their
34 workflow.
35
36 - Return references in BibTeX format.
37
38 DISCLAIMER: The functionality provided by these programs depends
39 on communication with third party webpages, which may or may not
40 be permitted by law and the terms of service upheld by the third
41 parties. What is demonstrated here are examples only. Use of the
42 tools is entirely your own responsibility.
43
44
45 ## Installation
46
47 $ git clone git://src.adamsgaard.dk/scholarref
48 $ cd scholarref
49 # make install
50
51 The `make install` command may require superuser priviledges to
52 install the tools to /usr/local. Prefix with doas(1) or sudo(1),
53 whatever is appropriate for the target system.
54
55
56 ## The scholarref toolset
57
58 The core functionality is provided by the scripts getdoi, getref,
59 and shdl. All programs accept input as command-line arguments or
60 from standard input (stdin). The programs come with several OPTIONS,
61 and it is encouraged to explore the help text (invoke with option
62 -h). The -t option may be of particular interest, since it tunnels
63 all communication through Tor via torsocks(1) (if available on the
64 system).
65
66 ### getdoi
67 This tool accepts either names of PDF files or arbitrary search
68 queries. If a PDF file name is supplied, getdoi scans the PDF text
69 in order to find the first occurring DOI entry, which typically is
70 the DOI of the publication itself. If an arbitrary query is supplied,
71 the CrossRef API[1] is used to find the DOI of the closest publication
72 match. You can supply author names, parts of the title, ORCID,
73 journal name, etc. Examples:
74
75 $ getdoi damsgaard2018.pdf
76 10.1029/2018ms001299
77 $ getdoi 'damsgaard sergienko adcroft advances modeling earth system…
78 10.1029/2018ms001299
79
80 The -o option will open the resultant DOI in the system web browser.
81
82 ### getref
83 The getref tool fetches the BibTeX citation for a given DOI from
84 doi.org. By default, the journal names and author first names are
85 abbreviated, which is what most journals want. I have taken
86 abbreviations from the Caltech Library list of Journal Title
87 Abbreviations[2]. The getref ruleset of journal-title abbreviations
88 is incomplete, and is expanded on a per-need basis. If desired,
89 the abbreviation functionality can be disabled. See `getref -h`
90 for details.
91
92 $ getref 10.1029/2018ms001299
93 @article{Damsgaard2018,
94 doi = {10.1029/2018ms001299},
95 year = 2018,
96 publisher = {American Geophysical Union ({AGU})},
97 volume = {10},
98 number = {9},
99 pages = {2228--2244},
100 author = {A. Damsgaard and A. Adcroft and O. Sergienko},
101 title = {Application of Discrete Element Methods to Approxim…
102 journal = {J. Adv. Mod. Earth Sys.}
103 }
104
105 Do not abbreviate journal title with -j option:
106
107 $ getref -j 10.1029/2018ms001299
108 @article{Damsgaard2018,
109 doi = {10.1029/2018ms001299},
110 year = 2018,
111 publisher = {American Geophysical Union ({AGU})},
112 volume = {10},
113 number = {9},
114 pages = {2228--2244},
115 author = {A. Damsgaard and A. Adcroft and O. Sergienko},
116 title = {Application of Discrete Element Methods to Approxim…
117 journal = {Journal of Advances in Modeling Earth Systems}
118 }
119
120
121 ### shdl
122 This tool takes a DOI as input and attempts to download the
123 corresponding publication as a PDF through sci-hub[3]. Unfortunately,
124 the sci-hub web interface often puts up captias to restrict automated
125 downloads. If that's the case, shdl opens the tor browser (if
126 installed) or the system web browser in order to manually complete
127 the download. Output PDF files are saved in the present working
128 directory.
129
130
131 ## Usage examples
132
133 The scholarref tools are meant to be chained together. For example,
134 if you want a BibTeX reference a search query, simply use UNIX pipes
135 to send the getdoi output as input to getref:
136
137 $ getdoi 'damsgaard egholm ice flow dynamics' | getref
138 @article{Damsgaard2016,
139 doi = {10.1002/2016gl071579},
140 year = 2016,
141 publisher = {American Geophysical Union ({AGU})},
142 volume = {43},
143 number = {23},
144 pages = {12,165--12,173},
145 author = {A. Damsgaard and D. L. Egholm and L. H. Beem and S…
146 title = {Ice flow dynamics forced by water pressure variatio…
147 journal = {Geophys. Res. Lett.}
148 }
149
150 The scholarref program itself is an aggregation of the getdoi and
151 getref commands. If called with the -a option, the reference is
152 directly inserted into the system bibliography. The full path to
153 the bibliography file (.bib) is assumed to be set in the $BIB
154 environment variable, for instance defined in the user ~/.profile.
155
156 $ echo $BIB
157 /home/ad/articles/own/BIBnew.bib
158 $ scholarref -a 'damsgaard egholm ice flow dynamics'
159 Citation Damsgaard2016 added to /home/ad/articles/own/BIBnew.bib
160
161
162 ## Integrating into your favorite $EDITOR
163
164 The scholarref tool is particularly useful if called from within a
165 text editor. Below I demonstrate how keyboard bindings can be bound
166 in various editors to provide scholarref functionality.
167
168 ### vi
169 My editor of choice is the plain, old, and simple (n)vi(1). I have
170 the following binding in my ~/.exrc, including a trailing space:
171
172 map qr :r !scholarref
173
174 The rest of my editor configuration can be found under my dotfiles
175 source code repository[4].
176
177 ### vim
178 You can add the following bindings to ~/.vimrc or ~/.vim/vimrc in
179 order to get scholarref functionality within vim(1):
180
181 " insert reference into current buffer
182 nnoremap <leader>r :r !scholarref<space>
183 " append reference into $BIB file
184 nnoremap <leader>R :r !scholarref --add<space>
185
186 ### vis -
187 The vis(1) editor[5] is an interesting combination of modal editing
188 and structural regular expressions from the plan9 editor sam(1)[6].
189 Add the following binding to ~/.config/vis/visrc.lua:
190
191 vis:map(vis.modes.NORMAL, leader..'r', '< scholarref ')
192
193 ### emacs
194 Don't know, figure it out yourself.
195
196
197 ## Integrating into your pdf viewer
198
199 My PDF viewer of choice is zathura(1)[7], which has a minimal
200 graphical user interface and is keyboard-centric. The following
201 configuration calls getdoi on the currently open file if I press
202 Ctrl-i. The resultant DOI is copied to the clipboard. Similarly,
203 Ctrl-s tries to extract the DOI in the same manner, but fetches the
204 accompanying reference and adds it directly to the bibliography.
205
206 map <C-i> feedkeys ":exec getdoi --notify --clip '$FILE'<Return>"
207 map <C-s> feedkeys ":exec scholarref --add '$FILE'<Return>"
208
209 My full zathura configuration is available here: [8]
210
211
212 ## Questions/bugs/feedback/improvements
213
214 Please get in touch if you encounter any. Improvement suggestions
215 are best sent as patches by e-mail.
216
217
218 References:
219
220 [0] https://src.adamsgaard.dk/scholarref/log.html
221 [1] http://api.crossref.org
222 [2] https://www.library.caltech.edu/journal-title-abbreviations
223 [3] https://sci-hub.tw
224 [4] https://src.adamsgaard.dk/dotfiles/file/.exrc.html
225 [5] https://github.com/martanne/vis
226 [6] https://sam.cat-v.org/
227 [7] https://pwmt.org/projects/zathura
228 [8] https://src.adamsgaard.dk/dotfiles/file/.config/zathura/zathurarc.ht…
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.