@@ -, +, @@ --- C4/Record.pm | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) --- a/C4/Record.pm +++ a/C4/Record.pm @@ -647,18 +647,35 @@ C<$id> - an id for the BibTex record (might be the biblionumber) sub marc2bibtex { my ($record, $id) = @_; my $tex; + my $marcflavour = C4::Context->preference("marcflavour"); # Authors - my $marcauthors = GetMarcAuthors($record,C4::Context->preference("marcflavour")); my $author; - for my $authors ( map { map { @$_ } values %$_ } @$marcauthors ) { - $author .= " and " if ($author && $$authors{value}); - $author .= $$authors{value} if ($$authors{value}); + my @texauthors; + my ( $mintag, $maxtag, $fields_filter ); + if ( $marcflavour eq "UNIMARC" ) { + $mintag = "700"; + $maxtag = "712"; + $fields_filter = '7..'; } - + else { + $mintag = "700"; + $maxtag = "720"; + $fields_filter = '7..'; + } + foreach my $field ( $record->field($fields_filter) ) { + next unless $field->tag() >= $mintag && $field->tag() <= $maxtag; + my $texauthor = join ' ', ( + $field->subfield('b'), + $field->subfield('a'), + ); + push @texauthors, $texauthor if $texauthor; + } + $author = join ' and ', @texauthors; + # Defining the conversion hash according to the marcflavour my %bh; - if (C4::Context->preference("marcflavour") eq "UNIMARC") { + if ( $marcflavour eq "UNIMARC" ) { # FIXME, TODO : handle repeatable fields # TODO : handle more types of documents --