P is for Practical PerlMonks

### Re^2: print comma in superscript

by qingfengzealot (Initiate)
 on Apr 09, 2013 at 03:38 UTC ( #1027632=note: print w/replies, xml ) Need Help??

in reply to Re: print comma in superscript
in thread print comma in superscript

Hi, I'm definitely looking for "superscript comma" rather than an apostrophe. It is commonly used in the authorship list for publications. We have hundreds of scientists with different affiliations, I want to use script to generate them instead of manually type them one by one. Now, I'm using PERL script to read from ".csv" and write to a ".rtf" file. Something like the author list in the following article: http://www.nature.com/nature/journal/v496/n7443/pdf/nature12031.pdf Sorry, I don't know how to upload a picture. If you cannot open this article, please let me know you email address and I can send it to you. I also attached my script here, hope someone can help me. Thanks very much.
#!/usr/bin/perl -w
use strict;
use warnings;
use RTF::Writer;
use Unicode::Subscript ':all';
use Text::CSV;
#use Unicode::Subscript qw(subscript superscript);

if(@ARGV != 2) {
print STDERR "Usage: authorship_APP.pl input(.csv) output(.rtf)\n"
+;
exit(0);
}

my ($inf,$outf)=@ARGV;
my $all_affi; my %hash; my @all_name; my$count=1;

my @rows;
my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attr +ibute. or die "Cannot use CSV: ".Text::CSV->error_diag (); open my$fh, "<", $inf or die "$inf: $!"; while ( my$row = $csv->getline($fh ) ) {
if($row->[0]=~/^\d/){ my @a_num; for(my$i=3; $i<=7;$i++){
if($row->[$i]=~/\w/){
my $tmp=$row->[$i]; if(! exists$hash{$tmp}){$hash{$tmp}=$count;
push(@a_num, $hash{$tmp});
$all_affi.=$count.$tmp."\. ";$count++;
}
}else{
last;
}
}
my $a_num=join"\+", @a_num; if($row->[2]=~/\w/){
push(@all_name, "$row->[1]$row->[2]".superscript($a_num)) +; }elsif($row->[1]=~/\w/){
push(@all_name, "$row->[1]".superscript($a_num));
}else{
print STDERR "Error! Wrong first name for this row:\n$row\ +n"; exit; } } }$csv->eof or $csv->error_diag(); close$fh;

my $all_name=join", ", @all_name; print STDERR "There are ". scalar(@all_name)." authors and ".scalar(ke +ys %hash)." affiliations in this list.\n"; my$final= "$all_name\n\n$all_affi\n";
#my $test='This algorithm is O(n' . superscript(3) . ')'; my$rtf = RTF::Writer->new_to_file($outf);$rtf->prolog( 'title' => "Greetings, Naomi" );
$rtf->number_pages;$rtf->paragraph(
$final );$rtf->close;
[download]

Replies are listed 'Best First'.
Re^3: print comma in superscript
by farang (Chaplain) on Apr 09, 2013 at 05:55 UTC

I believe those characters you are thinking of as superscripts in the pdf document are actually just regular characters being displayed in a different font and different baseline. See this short discussion from stackoverflow. So you won't be able to get all the information into the plain text, instead you'll have to somehow encode the proper font formatting to send along with the text. Presumably the 'font' method in RTF::Writer might help do the job. But other monks may have better ideas.

Re^3: print comma in superscript
by qingfengzealot (Initiate) on Apr 09, 2013 at 04:00 UTC
I should mention that there is no need to rely on ".rtf" file. If there are any ways to generate the authorship list (including the superscrtipt comma) and could let me copy the context to microsoft word (.doc) file, it would be fine... Whatever format the output is... Thanks.

Create A New User
Node Status?
node history
Node Type: note [id://1027632]
help
Chatterbox?
 [thezip]: Is there an analogy for '&' (ie. run commandline process in background) for Windows commandline? [Corion]: thezip: start "some title" path\to\that\ application, but that will open another console window [Corion]: thezip: If you want to confuse your users, use system(1, "that\\command" );, which will make Perl launch it in the background [Corion]: That will keep the console window open even though the user can't type into it anymore [thezip]: So I have a script that generates a log file. After script completion, I want tohave VIM open this logfile.

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (14)
As of 2017-03-27 18:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Should Pluto Get Its Planethood Back?

Results (321 votes). Check out past polls.