diff options
author | Karl Berry <karl@freefriends.org> | 2025-01-21 20:47:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2025-01-21 20:47:44 +0000 |
commit | 6d503719b274ea30f482a1c3c2180bb7748bda61 (patch) | |
tree | 8e1654f5a5347eeed4985e6e589b4bd9d188736d | |
parent | af9bd3251ad0ce31598ab362592f85a6ea344702 (diff) |
bibcop (21jan25)
git-svn-id: svn://tug.org/texlive/trunk@73552 c570f23f-e606-0410-a88d-b1316a301751
-rwxr-xr-x | Build/source/texk/texlive/linked_scripts/bibcop/bibcop.pl | 111 | ||||
-rw-r--r-- | Master/texmf-dist/doc/bibtex/bibcop/LICENSE.txt | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/bibtex/bibcop/README.md | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/bibtex/bibcop/bibcop.pdf | bin | 266502 -> 266504 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/man/man1/bibcop.1 | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/man/man1/bibcop.man1.pdf | bin | 14456 -> 14234 bytes | |||
-rwxr-xr-x | Master/texmf-dist/scripts/bibcop/bibcop.pl | 111 | ||||
-rw-r--r-- | Master/texmf-dist/source/bibtex/bibcop/bibcop.dtx | 4 | ||||
-rw-r--r-- | Master/texmf-dist/source/bibtex/bibcop/bibcop.ins | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/bibcop/bibcop.sty | 4 |
10 files changed, 145 insertions, 95 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/bibcop/bibcop.pl b/Build/source/texk/texlive/linked_scripts/bibcop/bibcop.pl index 48049e8b35e..828d2ed3a3a 100755 --- a/Build/source/texk/texlive/linked_scripts/bibcop/bibcop.pl +++ b/Build/source/texk/texlive/linked_scripts/bibcop/bibcop.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl # (The MIT License) # -# Copyright (c) 2022-2024 Yegor Bugayenko +# Copyright (c) 2022-2025 Yegor Bugayenko # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the 'Software'), to deal @@ -21,7 +21,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -# 2024/11/13 0.0.23 +# 2025/01/21 0.0.24 package bibcop; use warnings; @@ -39,13 +39,14 @@ my %args = map { $_ => 1 } @ARGV; my %blessed = ( 'article' => ['doi', 'year', 'title', 'author', 'journal', 'volume', 'number', 'month?', 'publisher?', 'pages?'], 'inproceedings' => ['doi', 'booktitle', 'title', 'author', 'year', 'pages?', 'month?', 'organization?', 'volume?'], - 'book' => ['title', 'author', 'year', 'publisher', 'doi?'], + 'incollection' => ['doi', 'booktitle', 'title', 'author', 'year', 'editor', 'pages?', 'month?', 'volume?', 'publisher?'], + 'book' => ['title', 'author', 'year', 'publisher', 'doi?', 'edition?'], 'phdthesis' => ['title', 'author', 'year', 'school', 'doi?'], - 'misc' => ['title', 'author', 'year', 'eprint?', 'archiveprefix?', 'primaryclass?', 'month?', 'publisher?', 'organization?', 'doi?', 'howpublished?', 'note?', 'pages?', 'number?', 'volume?'], + 'misc' => ['title', 'author', 'year', 'eprint?', 'archiveprefix?', 'primaryclass?', 'month?', 'publisher?', 'organization?', 'doi?', 'howpublished?', 'note?'], ); # See https://research.arizona.edu/faq/what-do-you-mean-when-you-say-use-title-case-proposalproject-titles -my %minors = map { $_ => 1 } qw/in of at to by the a an and or as if up via yet nor but off on for into vs/; +my %minors = map { $_ => 1 } qw/in of at to by the a an and or as if up via yet nor but off on for into vs versus/; # Check the presence of mandatory tags. sub check_mandatory_tags { @@ -137,42 +138,45 @@ sub check_capitalization { # Check that the 'author' is formatted correctly. sub check_author { my (%entry) = @_; - if (not exists $entry{'author'}) { - return; - } - if ($entry{'author'} =~ /^\{.+\}$/) { - return; - } - my $author = clean_tex($entry{'author'}); - my @authors = split(/\s+and\s+/, $author); - my $pos = 0; - for my $a (@authors) { - $pos += 1; - if ($a eq 'others') { + my @tags = qw/author editor/; + foreach my $tag (@tags) { + if (not exists $entry{$tag}) { next; } - if (index($a, ' ') != -1 and index($a, ',') == -1) { - return "The last name should go first, all other names must follow, after a comma in @{[as_position($pos)]} 'author', as in 'Knuth, Donald E.'"; + if ($entry{$tag} =~ /^\{.+\}$/) { + next; } - my $npos = 0; - for my $name (split(/[ ,]+/, $a)) { - $npos += 1; - if (index($name, '{') != -1) { - next; - } - if ($name =~ /^[A-Z]\.$/) { + my $author = clean_tex($entry{$tag}); + my @authors = split(/\s+and\s+/, $author); + my $pos = 0; + for my $a (@authors) { + $pos += 1; + if ($a eq 'others') { next; } - if ($name =~ /^[A-Z][^.]+$/) { - next - } - if ($name =~ /^(van|de|der|dos)$/) { - next + if (index($a, ' ') != -1 and index($a, ',') == -1) { + return "The last name should go first, all other names must follow, after a comma in @{[as_position($pos)]} '$tag', as in 'Knuth, Donald E.'"; } - if ($name =~ /^[A-Z]$/) { - return "A shortened name must have a tailing dot in @{[as_position($pos)]} 'author', as in 'Knuth, Donald E.'"; + my $npos = 0; + for my $name (split(/[ ,]+/, $a)) { + $npos += 1; + if (index($name, '{') != -1) { + next; + } + if ($name =~ /^[A-Z]\.$/) { + next; + } + if ($name =~ /^[A-Z][^.]+$/) { + next + } + if ($name =~ /^(van|de|der|dos)$/) { + next + } + if ($name =~ /^[A-Z]$/) { + return "A shortened name must have a tailing dot in @{[as_position($pos)]} '$tag', as in 'Knuth, Donald E.'"; + } + return "In @{[as_position($pos)]} '$tag' @{[as_position($npos)]} name looks suspicious ($name), use something like 'Knuth, Donald E. and Duane, Bibby'"; } - return "In @{[as_position($pos)]} 'author' @{[as_position($npos)]} name looks suspicious ($name), use something like 'Knuth, Donald E. and Duane, Bibby'"; } } } @@ -274,6 +278,7 @@ sub check_org_in_booktitle { sub check_typography { my (%entry) = @_; my %symbols = ( + '...' => 'ellipses', '.' => 'dot', ',' => 'comma', ';' => 'semi-colon', @@ -288,12 +293,12 @@ sub check_typography { '[' => 'opening square bracket', ']' => 'closing square bracket', ); - my @spaces_around = ( '---' ); + my @need_spaces_around = ( '---', '...' ); my @no_spaces_around = ( '--', '-' ); my @no_space_before = ( '.', ',', ';', ':', '?', '!', ')', ']' ); my @no_space_after = ( '(', '[' ); - my @space_before = ( '(', '[' ); - my @space_after = ( ')', ']' ); + my @need_space_before = ( '(', '[' ); + my @need_space_after = ( ')', ']', ',' ); my @good_tails = ( 'Inc.', 'Ltd.' ); my @bad_tails = ( '.', ',', ';', ':', '-' ); foreach my $tag (keys %entry) { @@ -305,7 +310,7 @@ sub check_typography { } my $value = $entry{$tag}; foreach my $s (@bad_tails) { - if ($s eq '.' and $tag eq 'author') { + if ($s eq '.' and ($tag eq 'author' or $tag eq 'editor')) { next; } my $good = 0; @@ -321,7 +326,7 @@ sub check_typography { } } foreach my $s (@no_space_before) { - if ($value =~ /^.*\s\Q$s\E.*$/) { + if ($value =~ /^.*\s\Q$s\E(?!\Q$s\E).*$/) { return "In the '$tag', do not put a space before the $symbols{$s}" } } @@ -330,18 +335,18 @@ sub check_typography { return "In the '$tag', do not put a space after the $symbols{$s}" } } - foreach my $s (@space_before) { + foreach my $s (@need_space_before) { if ($value =~ /^.*[^\{\s\\]\Q$s\E.*$/) { return "In the '$tag', put a space before the $symbols{$s}" } } - foreach my $s (@space_after) { + foreach my $s (@need_space_after) { my $p = join('', @no_space_before); if ($value =~ /^.*[^\\]\Q$s\E[^\}\s\Q$p\E].*$/) { return "In the '$tag', put a space after the $symbols{$s}" } } - foreach my $s (@spaces_around) { + foreach my $s (@need_spaces_around) { if ($value =~ /^.*[^\s]\Q$s\E.*$/ or $value =~ /^.*\Q$s\E[^\s].*$/) { return "In the '$tag', put spaces around the $symbols{$s}" } @@ -435,6 +440,26 @@ sub check_doi { } } +# Check the right format of the 'howpublished.' +sub check_howpublished { + my (%entry) = @_; + if (exists $entry{'howpublished'}) { + my $how = $entry{'howpublished'}; + if (not $how =~ /^\\url\{.+\}$/) { + return "The format of the 'howpublished' is wrong, use \\url{} inside" + } + my $url = substr($how, 5, -1); + if (not $url =~ /^https?:\/\/.+$/) { + return "The format of the URL in 'howpublished' is wrong, doesn't start with https://: '$url'" + } + my $max = 64; + my $len = length($url); + if ($len gt $max) { + return "The length of the URL in 'howpublished' is too big ($len > $max), use URL shoftener: '$url'" + } + } +} + # Check the right format of the 'year.' sub check_year { my (%entry) = @_; @@ -1084,7 +1109,7 @@ if (@ARGV+0 eq 0 or exists $args{'--help'} or exists $args{'-?'}) { " --latex Report errors in LaTeX format using the \\PackageWarningNoLine command\n\n" . "If any issues, please, report to GitHub: https://github.com/yegor256/bibcop"); } elsif (exists $args{'--version'} or exists $args{'-v'}) { - info('0.0.23 2024/11/13'); + info('0.0.24 2025/01/21'); } else { my ($file) = grep { not($_ =~ /^-.*$/) } @ARGV; if (not $file) { diff --git a/Master/texmf-dist/doc/bibtex/bibcop/LICENSE.txt b/Master/texmf-dist/doc/bibtex/bibcop/LICENSE.txt index be1f11a290c..5e9c18584ec 100644 --- a/Master/texmf-dist/doc/bibtex/bibcop/LICENSE.txt +++ b/Master/texmf-dist/doc/bibtex/bibcop/LICENSE.txt @@ -1,6 +1,6 @@ (The MIT License) -Copyright (c) 2022-2024 Yegor Bugayenko +Copyright (c) 2022-2025 Yegor Bugayenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal diff --git a/Master/texmf-dist/doc/bibtex/bibcop/README.md b/Master/texmf-dist/doc/bibtex/bibcop/README.md index 04e5f0810f6..5cc044327de 100644 --- a/Master/texmf-dist/doc/bibtex/bibcop/README.md +++ b/Master/texmf-dist/doc/bibtex/bibcop/README.md @@ -87,7 +87,7 @@ perl tests.pl You should see the `GREAT!` message. -Copyright (c) 2022-2024 Yegor Bugayenko, MIT License +Copyright (c) 2022-2025 Yegor Bugayenko, MIT License [BLOG]: https://www.yegor256.com/2023/09/05/style-checker-for-bibtex-files.html [INSTALL]: https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages diff --git a/Master/texmf-dist/doc/bibtex/bibcop/bibcop.pdf b/Master/texmf-dist/doc/bibtex/bibcop/bibcop.pdf Binary files differindex 7f0a788ad6b..1e73a102951 100644 --- a/Master/texmf-dist/doc/bibtex/bibcop/bibcop.pdf +++ b/Master/texmf-dist/doc/bibtex/bibcop/bibcop.pdf diff --git a/Master/texmf-dist/doc/man/man1/bibcop.1 b/Master/texmf-dist/doc/man/man1/bibcop.1 index cabc15c2ba7..871b99a57e1 100644 --- a/Master/texmf-dist/doc/man/man1/bibcop.1 +++ b/Master/texmf-dist/doc/man/man1/bibcop.1 @@ -1,4 +1,4 @@ -.TH bibcop 1 "2024/11/13" +.TH bibcop 1 "2025/01/21" .SH NAME bibcop \- Style Checker and Fixer of BibTeX Files (.bib) .SH SYNOPSIS diff --git a/Master/texmf-dist/doc/man/man1/bibcop.man1.pdf b/Master/texmf-dist/doc/man/man1/bibcop.man1.pdf Binary files differindex 6e33ffa61b4..188bcf5d049 100644 --- a/Master/texmf-dist/doc/man/man1/bibcop.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/bibcop.man1.pdf diff --git a/Master/texmf-dist/scripts/bibcop/bibcop.pl b/Master/texmf-dist/scripts/bibcop/bibcop.pl index 48049e8b35e..828d2ed3a3a 100755 --- a/Master/texmf-dist/scripts/bibcop/bibcop.pl +++ b/Master/texmf-dist/scripts/bibcop/bibcop.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl # (The MIT License) # -# Copyright (c) 2022-2024 Yegor Bugayenko +# Copyright (c) 2022-2025 Yegor Bugayenko # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the 'Software'), to deal @@ -21,7 +21,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -# 2024/11/13 0.0.23 +# 2025/01/21 0.0.24 package bibcop; use warnings; @@ -39,13 +39,14 @@ my %args = map { $_ => 1 } @ARGV; my %blessed = ( 'article' => ['doi', 'year', 'title', 'author', 'journal', 'volume', 'number', 'month?', 'publisher?', 'pages?'], 'inproceedings' => ['doi', 'booktitle', 'title', 'author', 'year', 'pages?', 'month?', 'organization?', 'volume?'], - 'book' => ['title', 'author', 'year', 'publisher', 'doi?'], + 'incollection' => ['doi', 'booktitle', 'title', 'author', 'year', 'editor', 'pages?', 'month?', 'volume?', 'publisher?'], + 'book' => ['title', 'author', 'year', 'publisher', 'doi?', 'edition?'], 'phdthesis' => ['title', 'author', 'year', 'school', 'doi?'], - 'misc' => ['title', 'author', 'year', 'eprint?', 'archiveprefix?', 'primaryclass?', 'month?', 'publisher?', 'organization?', 'doi?', 'howpublished?', 'note?', 'pages?', 'number?', 'volume?'], + 'misc' => ['title', 'author', 'year', 'eprint?', 'archiveprefix?', 'primaryclass?', 'month?', 'publisher?', 'organization?', 'doi?', 'howpublished?', 'note?'], ); # See https://research.arizona.edu/faq/what-do-you-mean-when-you-say-use-title-case-proposalproject-titles -my %minors = map { $_ => 1 } qw/in of at to by the a an and or as if up via yet nor but off on for into vs/; +my %minors = map { $_ => 1 } qw/in of at to by the a an and or as if up via yet nor but off on for into vs versus/; # Check the presence of mandatory tags. sub check_mandatory_tags { @@ -137,42 +138,45 @@ sub check_capitalization { # Check that the 'author' is formatted correctly. sub check_author { my (%entry) = @_; - if (not exists $entry{'author'}) { - return; - } - if ($entry{'author'} =~ /^\{.+\}$/) { - return; - } - my $author = clean_tex($entry{'author'}); - my @authors = split(/\s+and\s+/, $author); - my $pos = 0; - for my $a (@authors) { - $pos += 1; - if ($a eq 'others') { + my @tags = qw/author editor/; + foreach my $tag (@tags) { + if (not exists $entry{$tag}) { next; } - if (index($a, ' ') != -1 and index($a, ',') == -1) { - return "The last name should go first, all other names must follow, after a comma in @{[as_position($pos)]} 'author', as in 'Knuth, Donald E.'"; + if ($entry{$tag} =~ /^\{.+\}$/) { + next; } - my $npos = 0; - for my $name (split(/[ ,]+/, $a)) { - $npos += 1; - if (index($name, '{') != -1) { - next; - } - if ($name =~ /^[A-Z]\.$/) { + my $author = clean_tex($entry{$tag}); + my @authors = split(/\s+and\s+/, $author); + my $pos = 0; + for my $a (@authors) { + $pos += 1; + if ($a eq 'others') { next; } - if ($name =~ /^[A-Z][^.]+$/) { - next - } - if ($name =~ /^(van|de|der|dos)$/) { - next + if (index($a, ' ') != -1 and index($a, ',') == -1) { + return "The last name should go first, all other names must follow, after a comma in @{[as_position($pos)]} '$tag', as in 'Knuth, Donald E.'"; } - if ($name =~ /^[A-Z]$/) { - return "A shortened name must have a tailing dot in @{[as_position($pos)]} 'author', as in 'Knuth, Donald E.'"; + my $npos = 0; + for my $name (split(/[ ,]+/, $a)) { + $npos += 1; + if (index($name, '{') != -1) { + next; + } + if ($name =~ /^[A-Z]\.$/) { + next; + } + if ($name =~ /^[A-Z][^.]+$/) { + next + } + if ($name =~ /^(van|de|der|dos)$/) { + next + } + if ($name =~ /^[A-Z]$/) { + return "A shortened name must have a tailing dot in @{[as_position($pos)]} '$tag', as in 'Knuth, Donald E.'"; + } + return "In @{[as_position($pos)]} '$tag' @{[as_position($npos)]} name looks suspicious ($name), use something like 'Knuth, Donald E. and Duane, Bibby'"; } - return "In @{[as_position($pos)]} 'author' @{[as_position($npos)]} name looks suspicious ($name), use something like 'Knuth, Donald E. and Duane, Bibby'"; } } } @@ -274,6 +278,7 @@ sub check_org_in_booktitle { sub check_typography { my (%entry) = @_; my %symbols = ( + '...' => 'ellipses', '.' => 'dot', ',' => 'comma', ';' => 'semi-colon', @@ -288,12 +293,12 @@ sub check_typography { '[' => 'opening square bracket', ']' => 'closing square bracket', ); - my @spaces_around = ( '---' ); + my @need_spaces_around = ( '---', '...' ); my @no_spaces_around = ( '--', '-' ); my @no_space_before = ( '.', ',', ';', ':', '?', '!', ')', ']' ); my @no_space_after = ( '(', '[' ); - my @space_before = ( '(', '[' ); - my @space_after = ( ')', ']' ); + my @need_space_before = ( '(', '[' ); + my @need_space_after = ( ')', ']', ',' ); my @good_tails = ( 'Inc.', 'Ltd.' ); my @bad_tails = ( '.', ',', ';', ':', '-' ); foreach my $tag (keys %entry) { @@ -305,7 +310,7 @@ sub check_typography { } my $value = $entry{$tag}; foreach my $s (@bad_tails) { - if ($s eq '.' and $tag eq 'author') { + if ($s eq '.' and ($tag eq 'author' or $tag eq 'editor')) { next; } my $good = 0; @@ -321,7 +326,7 @@ sub check_typography { } } foreach my $s (@no_space_before) { - if ($value =~ /^.*\s\Q$s\E.*$/) { + if ($value =~ /^.*\s\Q$s\E(?!\Q$s\E).*$/) { return "In the '$tag', do not put a space before the $symbols{$s}" } } @@ -330,18 +335,18 @@ sub check_typography { return "In the '$tag', do not put a space after the $symbols{$s}" } } - foreach my $s (@space_before) { + foreach my $s (@need_space_before) { if ($value =~ /^.*[^\{\s\\]\Q$s\E.*$/) { return "In the '$tag', put a space before the $symbols{$s}" } } - foreach my $s (@space_after) { + foreach my $s (@need_space_after) { my $p = join('', @no_space_before); if ($value =~ /^.*[^\\]\Q$s\E[^\}\s\Q$p\E].*$/) { return "In the '$tag', put a space after the $symbols{$s}" } } - foreach my $s (@spaces_around) { + foreach my $s (@need_spaces_around) { if ($value =~ /^.*[^\s]\Q$s\E.*$/ or $value =~ /^.*\Q$s\E[^\s].*$/) { return "In the '$tag', put spaces around the $symbols{$s}" } @@ -435,6 +440,26 @@ sub check_doi { } } +# Check the right format of the 'howpublished.' +sub check_howpublished { + my (%entry) = @_; + if (exists $entry{'howpublished'}) { + my $how = $entry{'howpublished'}; + if (not $how =~ /^\\url\{.+\}$/) { + return "The format of the 'howpublished' is wrong, use \\url{} inside" + } + my $url = substr($how, 5, -1); + if (not $url =~ /^https?:\/\/.+$/) { + return "The format of the URL in 'howpublished' is wrong, doesn't start with https://: '$url'" + } + my $max = 64; + my $len = length($url); + if ($len gt $max) { + return "The length of the URL in 'howpublished' is too big ($len > $max), use URL shoftener: '$url'" + } + } +} + # Check the right format of the 'year.' sub check_year { my (%entry) = @_; @@ -1084,7 +1109,7 @@ if (@ARGV+0 eq 0 or exists $args{'--help'} or exists $args{'-?'}) { " --latex Report errors in LaTeX format using the \\PackageWarningNoLine command\n\n" . "If any issues, please, report to GitHub: https://github.com/yegor256/bibcop"); } elsif (exists $args{'--version'} or exists $args{'-v'}) { - info('0.0.23 2024/11/13'); + info('0.0.24 2025/01/21'); } else { my ($file) = grep { not($_ =~ /^-.*$/) } @ARGV; if (not $file) { diff --git a/Master/texmf-dist/source/bibtex/bibcop/bibcop.dtx b/Master/texmf-dist/source/bibtex/bibcop/bibcop.dtx index c9cceb2423f..6f61bc99096 100644 --- a/Master/texmf-dist/source/bibtex/bibcop/bibcop.dtx +++ b/Master/texmf-dist/source/bibtex/bibcop/bibcop.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % (The MIT License) % -% Copyright (c) 2022-2024 Yegor Bugayenko +% Copyright (c) 2022-2025 Yegor Bugayenko % % Permission is hereby granted, free of charge, to any person obtaining a copy % of this software and associated documentation files (the 'Software'), to deal @@ -50,7 +50,7 @@ %<package>\NeedsTeXFormat{LaTeX2e} %<package>\ProvidesPackage{bibcop} %<*package> -[2024/11/13 0.0.23 Style Checker of Bibliography Files] +[2025/01/21 0.0.24 Style Checker of Bibliography Files] %</package> %<*driver> \documentclass{ltxdoc} diff --git a/Master/texmf-dist/source/bibtex/bibcop/bibcop.ins b/Master/texmf-dist/source/bibtex/bibcop/bibcop.ins index 0072e39b087..4a53c56ef75 100644 --- a/Master/texmf-dist/source/bibtex/bibcop/bibcop.ins +++ b/Master/texmf-dist/source/bibtex/bibcop/bibcop.ins @@ -1,6 +1,6 @@ %% (The MIT License) %% -%% Copyright (c) 2022-2024 Yegor Bugayenko +%% Copyright (c) 2022-2025 Yegor Bugayenko %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the 'Software'), to deal @@ -26,7 +26,7 @@ \preamble (The MIT License) -Copyright (c) 2022-2024 Yegor Bugayenko +Copyright (c) 2022-2025 Yegor Bugayenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal diff --git a/Master/texmf-dist/tex/latex/bibcop/bibcop.sty b/Master/texmf-dist/tex/latex/bibcop/bibcop.sty index e9d5f2e2c30..d04a3722a36 100644 --- a/Master/texmf-dist/tex/latex/bibcop/bibcop.sty +++ b/Master/texmf-dist/tex/latex/bibcop/bibcop.sty @@ -7,7 +7,7 @@ %% bibcop.dtx (with options: `package') %% (The MIT License) %% -%% Copyright (c) 2022-2024 Yegor Bugayenko +%% Copyright (c) 2022-2025 Yegor Bugayenko %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the 'Software'), to deal @@ -31,7 +31,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bibcop} -[2024/11/13 0.0.23 Style Checker of Bibliography Files] +[2025/01/21 0.0.24 Style Checker of Bibliography Files] |