View | Details | Raw Unified | Return to bug 12409
Collapse All | Expand All

(-)a/C4/Record.pm (-43 / +47 lines)
Lines 669-722 sub marc2bibtex { Link Here
669
    $author = join ' and ', @texauthors;
669
    $author = join ' and ', @texauthors;
670
670
671
    # Defining the conversion hash according to the marcflavour
671
    # Defining the conversion hash according to the marcflavour
672
    my %bh;
672
    my @bh;
673
    if ( $marcflavour eq "UNIMARC" ) {
673
    if ( $marcflavour eq "UNIMARC" ) {
674
	
674
675
	# FIXME, TODO : handle repeatable fields
675
        # FIXME, TODO : handle repeatable fields
676
	# TODO : handle more types of documents
676
        # TODO : handle more types of documents
677
677
678
	# Unimarc to bibtex hash
678
        # Unimarc to bibtex hash
679
	%bh = (
679
        @bh = (
680
680
681
	    # Mandatory
681
            # Mandatory
682
	    author    => $author,
682
            author    => $author,
683
	    title     => $record->subfield("200", "a") || "",
683
            title     => $record->subfield("200", "a") || "",
684
	    editor    => $record->subfield("210", "g") || "",
684
            editor    => $record->subfield("210", "g") || "",
685
	    publisher => $record->subfield("210", "c") || "",
685
            publisher => $record->subfield("210", "c") || "",
686
	    year      => $record->subfield("210", "d") || $record->subfield("210", "h") || "",
686
            year      => $record->subfield("210", "d") || $record->subfield("210", "h") || "",
687
687
688
	    # Optional
688
            # Optional
689
	    volume  =>  $record->subfield("200", "v") || "",
689
            volume  =>  $record->subfield("200", "v") || "",
690
	    series  =>  $record->subfield("225", "a") || "",
690
            series  =>  $record->subfield("225", "a") || "",
691
	    address =>  $record->subfield("210", "a") || "",
691
            address =>  $record->subfield("210", "a") || "",
692
	    edition =>  $record->subfield("205", "a") || "",
692
            edition =>  $record->subfield("205", "a") || "",
693
	    note    =>  $record->subfield("300", "a") || "",
693
            note    =>  $record->subfield("300", "a") || "",
694
	    url     =>  $record->subfield("856", "u") || ""
694
            url     =>  $record->subfield("856", "u") || ""
695
	);
695
        );
696
    } else {
696
    } else {
697
697
698
	# Marc21 to bibtex hash
698
        # Marc21 to bibtex hash
699
	%bh = (
699
        @bh = (
700
700
701
	    # Mandatory
701
            # Mandatory
702
	    author    => $author,
702
            author    => $author,
703
	    title     => $record->subfield("245", "a") || "",
703
            title     => $record->subfield("245", "a") || "",
704
	    editor    => $record->subfield("260", "f") || "",
704
            editor    => $record->subfield("260", "f") || "",
705
        publisher => $record->subfield("264", "b") || $record->subfield("260", "b") || "",
705
            publisher => $record->subfield("264", "b") || $record->subfield("260", "b") || "",
706
        year      => $record->subfield("264", "c") || $record->subfield("260", "c") || $record->subfield("260", "g") || "",
706
            year      => $record->subfield("264", "c") || $record->subfield("260", "c") || $record->subfield("260", "g") || "",
707
707
708
	    # Optional
708
            # Optional
709
	    # unimarc to marc21 specification says not to convert 200$v to marc21
709
            # unimarc to marc21 specification says not to convert 200$v to marc21
710
	    series  =>  $record->subfield("490", "a") || "",
710
            series  =>  $record->subfield("490", "a") || "",
711
        address =>  $record->subfield("264", "a") || $record->subfield("260", "a") || "",
711
            address =>  $record->subfield("264", "a") || $record->subfield("260", "a") || "",
712
	    edition =>  $record->subfield("250", "a") || "",
712
            edition =>  $record->subfield("250", "a") || "",
713
	    note    =>  $record->subfield("500", "a") || "",
713
            note    =>  $record->subfield("500", "a") || "",
714
	    url     =>  $record->subfield("856", "u") || ""
714
            url     =>  $record->subfield("856", "u") || ""
715
	);
715
        );
716
    }
716
    }
717
717
718
    $tex .= "\@book{";
718
    $tex .= "\@book{";
719
    $tex .= join(",\n", $id, map { $bh{$_} ? qq(\t$_ = {$bh{$_}}) : () } keys %bh);
719
    my @elt;
720
    for ( my $i = 0 ; $i < scalar( @bh ) ; $i = $i + 2 ) {
721
        next unless $bh[$i+1];
722
        push @elt, qq|\t$bh[$i] = {$bh[$i+1]}|;
723
    }
724
    $tex .= join(",\n", $id, @elt);
720
    $tex .= "\n}\n";
725
    $tex .= "\n}\n";
721
726
722
    return $tex;
727
    return $tex;
723
- 

Return to bug 12409