Skip to main content

Add arXiv hyperlink to bibtex in under 1 seconds

Add hyperlinks of arXiv numbers to all the bibtex entries in a bib file in under 1 second. This is accomplished by a script.  The user only needs to have a bibtex file which already has the eprint entry for every bibtex item. The rest would be handled by the script.

This procedure is not necessary for some packages and bst files. it becomes necessary when specialized citation packages, like natbib, are used. Natbib generally do not include the hyperlink to the eprint number and some bst files for natbib like pjgsm.bst would completely ignore the eprint field.

The following script would amend this situation. It basically hard codes the hyperlinked arXiv number  into the journal entry. So hen the bibtex is run the journal entry would include the hyperlinked arXiv number. I wrote this script with bibtex from the NASA ADS server in mind. Bibtex from other sources might need some modification.

Critical comments and suggested improvements are welcome.

=============================================


#/bin/bash
# Usage : ./eprint.sh <filename>
# v3.0 by JOnes 
# This script takes the arXiv number from the eprint entry in the bibtex and hard codes a hyperlinked arXiv number to the journal entry of the bibtex. This is done for every bibtex entry. It has a failsafe and will not act upon a file on which it is already run; running twice on the same file would not have a detrimental effect on the output.

if [[ "$#" -ne 1 ]]; then
echo "Usage : ./eprint.sh <filename> "
# v1.2 by JOnes 
# This script takes the arXiv number from the eprint entry in the bibtex and hard codes a hyperlinked arXiv number to the journal entry of the bibtex. This is done for every bibtex entry."
exit
fi

# READ THIS FIRST ----------- 's/dsas/afdsa' would not work as — 1)bash treats anything inside ' ' single quotes as literal string. when " " double quotes are used then only do bash replace the values of the variables inside the strings 2) \ has to be escaped by 3 backslashes \\\ . 3) Since \href uses the \ character once it cannot be used as a delimiter of sed arguments hence | | is used.

# WARNING : will fail for files having duplicate entries. 

# check if the keyword article is present in the file,. if present then it is bib file. 

isbib=`grep -i "@article" $1`

if [ ! -e $1 ] ; then
echo "File do not exist."
exit
elif [[ ! $isbib ]] ; then
echo "This file cannot be worked upon."
exit
else
# replace annoying \prd in bibtex from NASA ADS
sed 's|\\\prd|Phys. Rev. D|' $1 > .tmp5
cat .tmp5 |  sed -e 's|{ *prd|{Phys. Rev. D|' > .tmp6
cat .tmp6 |  sed -e 's|{ *PRD|{Phys. Rev. D|' > .tmp7
fi

cp .tmp7 .tmp

# get the list of all eprint lines
epntlist=`cat .tmp | grep "eprint" | cut -f2 -d"=" | sed 's/\"//g' | sed 's/\,//g' | sed 's/{//g' | sed 's/}//g'`

# echo $epntlist

if [[ ! $epntlist ]] ; then
exit
fi

# look for duplicates
echo "WARNING : will fail for files having duplicate entries. "
# for later ....

#vital line do not delete. tmp2 is the buffer file where the entries are entered at each iteration of the loop.
cp .tmp .tmp2

for ii in $epntlist
do

# this picks the lines which have the "pages" keyword except the ones in which the arXiv link is already appended (done by the final grep -v command). 
kk1=`cat .tmp2 | grep $ii -A8| grep pages | grep -v "href" `

kk2=`echo $kk1 | sed "s|}\\",|; \href{http://arxiv.org/abs/$ii}{$ii} }\\",|"`

kk2=`echo $kk1 | sed "s|\\",|; \href{http://arxiv.org/abs/$ii}{$ii} \\",|"`

kk2=`echo $kk1 | sed "s|},|; \href{http://arxiv.org/abs/$ii}{$ii} },|"`


if [[ `echo $kk2 | grep href` ]] ; then

sed "s|$kk1|$kk2|" .tmp2 > .tmp3
fi

if [ -f .tmp3 ] ; then
  cp .tmp3 .tmp2
fi

done

mv .tmp2 converted.bib

rm .tmp3 .tmp5 .tmp6 .tmp7 

echo "DONE ........ See file converted.bib."




Comments

Popular posts from this blog

Fastest way to send multiple drafts from gmail

People claim that the fastest way to send multiple email drafts is to use Gmail IMAP with email client like Outlook or Evolution or Thunderbird. But I have found this is not true. Because Thunderbird and Evolution etc. email clients treats the drafts as emails still to be edited. So it is not just simple select all and hit send. Each email draft has to be opened and sent separately. That is a lot of clicks and mouse movements, wasting precious time and energy. I have a better solution which involves minimum keystrokes and mouse usage. Efficiency booster technique for sending emails.
If someone is feeling adventurous and want to try it from the Gmail interface itself, here's how to do it in the fastest possible manner. It involves using the mouse once. Select the first draft. Gmail would open a new email box and put the cursor inside the box to write.Press TAB once to go the Send button.Press ENTER to send. Now Gmail sends it and the box is gone but the highlight goes to the last li…

LYRICS OF CHANDRABINDOO

___________________________________________________________________

SWEET HEART FROM AAR JAANI NAA(T-SERIES)
-- SWEETHEART --

Pratham college-er din ta
Aajo thik e mone poRey scene ta
Dada didi haath dhorey siNRi tei bose poRey
Aamar chokh ta ghorey bon bon bon bon

Sweetheart, I am seating alone
Sweetheart, for me there is none

DhoNk gile chole gelo pratham maas
Meye dekhlei feli deergho-shwash
DhoNk gile chole gelo pratham maas
Meye dekhlei othe nabhishwash
Meyera bheeshan smart poRey chhoto mini-skirt
Aamar e je sheet korey kon kon kon kon

Sweetheart, I am seating alone
Sweetheart, for me there is none

Taarporey kete gelo maas chaar
Fuse holo je kato future
Bandhura purse khule eke oke taake tole
Aamar pran ta korey chon mon chon mon

Sweetheart, I am seating alone
Sweetheart, for me there is none

Ekdin lawn theke beriye
Ek tanayaar dike taakiye
Hawt korey ki je holo magaj ta ghurey gelo
Taar kaaner saamne kori ghyan ghyan ghyan ghyan

Sweetheart, I am seating alone
Sweetheart, for me there is none

Taarpore cla…

How to join audio tracks smoothly in Audacity

Audio tracks can be mixed easily in full fledged video editors like kdenlive or Adobe Premiere but for mixing or joining audio they would not provide the amount of control that audio editors like Audacity provide. The example I am going to show today would demonstrate the range of tools in Audacity that allows us to control the waveform and to mold it to our desire.

Today I am going to take a small track like a small 1 min. clip of storm sound and make a long continuous sounding storm audio clip from it.

STEP 1 : Open file
Open the clip in Audacity.

STEP 2 : Removing unwanted audio portion
There is always unwanted sections of the audio that we have to discard. Select the portion of background noise or unwanted audio.


Press DELETE key.

STEP 3 : Duplicating the track
Now we make a copy of the entire waveform and paste it at the end of the track.

Select the SELECT tool (the one which looks like I). Then select the whole waveform and prss Ctrl+c. Now click approximately at the end of the…