Difference between revisions of "Main Page/Endnote"

From phurvitz
Jump to: navigation, search
Line 1: Line 1:
 
__FORCETOC__
 
__FORCETOC__
Term lists in Endnote function as abbreviation lists for bibliographies.  Some journals require full jouornal names in references, and some require abbreviations (and some that require abbreviations use dots, and others don't, e.g.,  
+
Term lists in Endnote function as abbreviation lists for bibliographies.  Some journals require full journal names in references, and some require abbreviations (and some that require abbreviations use dots, and others don't, e.g., ''AAAS Annu Meet Sci Innov Expo'' or
  
 
==Prerequisites==
 
==Prerequisites==
Line 41: Line 41:
 
# construct sed scripts for fixing endnote
 
# construct sed scripts for fixing endnote
  
# open output files
+
# args
open (SED, '>sed_nodots.sed');
+
if ($#ARGV == -1) {
open (OUTTERM, '>pmh_phd_journals_term_fixed.txt');
+
  print "Usage: $0 <infile>\n";
 +
  exit;
 +
}
 +
 
 +
# does infile exist?
 +
my $infile = $ARGV[0];
 +
if (! -e $infile) {
 +
  print "$infile does not exist\n";
 +
  exit;
 +
}
 +
 
 +
# output file
 +
(my $outfile = $infile) =~ s/\.txt/_fixed\.txt/;
 +
open (OUTTERM, ">$outfile");
 +
 
 
# read input file
 
# read input file
open (INFILE, "<pmh_phd_journals_term.txt") or die "cannot open";
+
open (INFILE, "<$infile") or die "cannot open";
 
while (my $record = <INFILE>) {
 
while (my $record = <INFILE>) {
 
     chomp $record;
 
     chomp $record;
Line 60: Line 74:
 
my $ss3 = $list[2];
 
my $ss3 = $list[2];
 
# handle dots
 
# handle dots
$ss3 =~ s/\./\\\./g;
+
$ss3 =~ s/\./\./g;
$ss2 =~ s/\./\\\./g;
+
$ss2 =~ s/\./\./g;
        print SED "s|$ss3|$ss1|\n";
 
        print SED "s|$ss2|$ss1|\n";
 
 
# if neither substring has a dot
 
# if neither substring has a dot
 
if (($ss2 !~ m/\./) && ($ss3 !~ m/\./)) {
 
if (($ss2 !~ m/\./) && ($ss3 !~ m/\./)) {
Line 83: Line 95:
 
}
 
}
 
close INFILE;
 
close INFILE;
close SED;
 
 
close OUTTERM;
 
close OUTTERM;
</pre>
+
print "created $outfile\n";
 +
 
  
 
===To create a series of XML files for import to EndNote===
 
===To create a series of XML files for import to EndNote===

Revision as of 23:33, 9 November 2007

Term lists in Endnote function as abbreviation lists for bibliographies. Some journals require full journal names in references, and some require abbreviations (and some that require abbreviations use dots, and others don't, e.g., AAAS Annu Meet Sci Innov Expo or

Prerequisites

  1. Endnote installed on the PC
  2. perl installed on the PC

Fixing abbreviated journal names

Some of my references had the full journal name and others had abbreviations. This caused problems when I needed a bibliography in a specific format.

I got a copy of term lists from the University of Queensland.

To update the term list in Endnote

  1. Open the library.
  2. Click on Tools on the menu bar and choose Define Term Lists
  3. Highlight Journals
  4. Select all journals.
  5. Delete (right-click/Cut). Do not remove the term list altogehter; there does not seem to be a way to add the journals term list back with all the fields in EndNote 7, contrary to the documentation.
  6. Click on the Import List button.
  7. Select the text file to be imported and click on the Open button (I used the Medical, Biosciences, and Chemistry lists).

To fix the list (deprecated, as there is no standard for which abbreviation has the dots)

  1. Export the term list (click the Export List button). I saved this as pmh_phd_journals_term.txt.
  2. Separate the list into columns, one for the full title, and one each for the abbreviated titles.
    cut -f1 pmh_phd_journals_term.txt > full.txt
    cut -f2 pmh_phd_journals_term.txt > abb1.txt
    cut -f3 pmh_phd_journals_term.txt  | sed "s/\./\\./g" > abb2.txt
  3. Join the columns back together with some sed to pre-format the sed scripts for the master edit process:

A perl script for creating a sed script to fix the term list

also creates a standardized term list

#! /usr/bin/perl -W
use strict;
use warnings;

# construct sed scripts for fixing endnote

# args
if ($#ARGV == -1) {
  print "Usage: $0 <infile>\n";
  exit;
}

# does infile exist?
my $infile = $ARGV[0];
if (! -e $infile) {
  print "$infile does not exist\n";
  exit;
}

# output file
(my $outfile = $infile) =~ s/\.txt/_fixed\.txt/;
open (OUTTERM, ">$outfile");

# read input file
open (INFILE, "<$infile") or die "cannot open";
while (my $record = <INFILE>) {
    chomp $record;
    # split into pieces with tabs
    my @list = split(/\t/, $record);
    # how many substrings?
    my $count = @list;
    # extract the first 2 substrings
    my $ss1 = $list[0];
    my $ss2 = $list[1];
    # if 3 substrings
    if ($count == 3) {
        # get the 3rd substring
	my $ss3 = $list[2];
	# handle dots
	$ss3 =~ s/\./\./g;
	$ss2 =~ s/\./\./g;
	# if neither substring has a dot
	if (($ss2 !~ m/\./) && ($ss3 !~ m/\./)) {
	    print OUTTERM "$ss1\t$ss3\t$ss2\n";
	}
        # if the 2nd ss has a dot and the 3rd does not
	if (($ss2 =~ m/\./) && ($ss3 !~ m/\./)) {
	    print OUTTERM "$ss1\t$ss3\t$ss2\n";
	}
        # if the 3nd ss has a dot and the 2rd does not
    	if (($ss2 !~ m/\./) && ($ss3 =~ m/\./)) {
	    print OUTTERM "$ss1\t$ss2\t$ss3\n";
	}
        # if both ss have dots
    	if (($ss2 =~ m/\./) && ($ss3 =~ m/\./)) {
	    print OUTTERM "$ss1\t$ss2\t$ss3\n";
	}
    }
}
close INFILE;
close OUTTERM;
print "created $outfile\n";


===To create a series of XML files for import to EndNote===
<pre>
#! /usr/bin/perl -w
use warnings;

# read the sed scripts to fix the endnote library

# open the xml library and read it all in
open (LIBRARY, "<pmh_phd.xml") or die "cannot open";
my $lines = <LIBRARY>;
close (LIBRARY);

# remove the header and trailer stuff
$lines =~ s/<XML><RECORDS>//;
$lines =~ s/<\/RECORDS><\/XML>//;

# open and start reading the list of journal names
open (SED, "<sed_nodots.sed") or die "cannot open sed_dots.sed";
$count = 0;
while (<SED>) {
    $count++;
    print "$count\n";
    $sedstr = $_;
    chomp $sedstr;
    @substr = split(/\|/, $sedstr);
    $sub1 = $substr[1];
    $sub2 = $substr[2];
    $sub2 =~ s/\&/\&amp\;/g;
    $lines =~ s/<SECONDARY_TITLE>$sub1<\/SECONDARY_TITLE>/<SECONDARY_TITLE>$sub2<\/SECONDARY_TITLE>/g;
}
close (SED);

# an array of lines
$lines =~ s/\/RECORD>/\/RECORD>\n/g;
@linelist = split(/\n/, $lines);

# process....
$outfile = "xml_0.xml";
open (OUT, ">$outfile");
$count = 0;
foreach $line (@linelist) {
    $count++;
    # substitute
    #$line =~ s/<\/(\w+)>/<\/$1>\n/g;
    $line =~ s/<styles><\/styles>//g;
    print OUT $line;
    $f = $count/100;
    $mod = $count%10;
    $r = (int($count/10))%10;
    if (($mod == 0) && ($r == 0)) {
       close (OUT);
       $outfile = join("\.", join("_", "xml", $f), "xml");
       open (OUT, ">$outfile");
    }
}
close (OUT);