diff options
author | Karl Berry <karl@freefriends.org> | 2011-03-06 22:31:53 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-03-06 22:31:53 +0000 |
commit | 0e6e50ca2549504070b29679d6159236bdf1b308 (patch) | |
tree | 0171343229c3531b47eefd984597c35b86922078 /Master | |
parent | 876cc70b39dad10fa8b3e5d2d600e0bad3c48f8d (diff) |
adding biber, including binaries in both Master/bin and Build
git-svn-id: svn://tug.org/texlive/trunk@21617 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
148 files changed, 59936 insertions, 140 deletions
diff --git a/Master/bin/i386-linux/biber b/Master/bin/i386-linux/biber Binary files differnew file mode 100755 index 00000000000..38a519ca144 --- /dev/null +++ b/Master/bin/i386-linux/biber diff --git a/Master/bin/win32/biber.exe b/Master/bin/win32/biber.exe Binary files differnew file mode 100755 index 00000000000..818ea07226f --- /dev/null +++ b/Master/bin/win32/biber.exe diff --git a/Master/bin/x86_64-darwin/biber b/Master/bin/x86_64-darwin/biber Binary files differnew file mode 100755 index 00000000000..1b53c86c92e --- /dev/null +++ b/Master/bin/x86_64-darwin/biber diff --git a/Master/bin/x86_64-linux/biber b/Master/bin/x86_64-linux/biber Binary files differnew file mode 100755 index 00000000000..af8b4e503ba --- /dev/null +++ b/Master/bin/x86_64-linux/biber diff --git a/Master/texmf-dist/doc/bibtex/biber/biber.pdf b/Master/texmf-dist/doc/bibtex/biber/biber.pdf Binary files differnew file mode 100644 index 00000000000..a241efa7d34 --- /dev/null +++ b/Master/texmf-dist/doc/bibtex/biber/biber.pdf diff --git a/Master/texmf-dist/source/bibtex/biber/Build.PL b/Master/texmf-dist/source/bibtex/biber/Build.PL new file mode 100644 index 00000000000..1854dcc018e --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/Build.PL @@ -0,0 +1,70 @@ +use strict; +use warnings; +use utf8; + +require Module::Build; +my $class = Module::Build->subclass + ( + class => 'My::Builder', + code => q{ + sub ACTION_test { + my $self = shift; + $ENV{'LANG'} = 'C'; # set LANG to something known for tests + $self->SUPER::ACTION_test; + } + }, + ); + +my $builder = $class->new( + dist_name => 'biblatex-biber', + license => 'perl', + dist_author => 'François Charette <firmicus@gmx.net>', + dist_version_from => 'lib/Biber.pm', + build_recommends => { + 'Test::More' => 0, + }, + add_to_cleanup => [ 'biber-*' ], + build_requires => { + 'Config::AutoConf' => '0.15', + 'ExtUtils::LibBuilder' => '0.02' + }, + requires => { + 'Config::General' => 0, + 'Data::Dump' => 0, + 'Data::Compare' => 0, + 'Date::Simple' => 0, + 'File::Slurp::Unicode' => 0, + 'IPC::Cmd' => 0, + 'IPC::Run' => 0, + 'List::AllUtils' => 0, + 'List::MoreUtils' => 0, + 'Regexp::Common' => 0, + 'Log::Log4perl' => 0, + 'Readonly' => 0, + 'Unicode::Collate' => '0.72', + 'XML::LibXML::Simple' => 0, + 'XML::LibXSLT' => 0, + 'Text::BibTeX' => '0.51', + 'LWP::Simple' => 0, + 'Switch' => 0, + 'perl' => '5.10.0' + }, + recommends => { + 'Readonly::XS' => 0 + }, + script_files => [ glob( "bin/*" ) ], + data_files => {'data/schemata/bcf.rnc' => 'lib/Biber/bcf.rnc', + 'data/schemata/bcf.rng' => 'lib/Biber/bcf.rng', + 'data/schemata/dcf.rnc' => 'lib/Biber/dcf.rnc', + 'data/schemata/dcf.rng' => 'lib/Biber/dcf.rng', + 'lib/Biber/Input/file/bibtex.dcf' => 'lib/Biber/Input/file/bibtex.dcf', + 'lib/Biber/Input/file/biblatexml.dcf' => 'lib/Biber/Input/file/biblatexml.dcf', + 'lib/Biber/Input/file/ris.dcf' => 'lib/Biber/Input/file/ris.dcf', + 'data/schemata/biblatexml.rnc' => 'lib/Biber/biblatexml.rnc', + 'data/schemata/biblatexml.rng' => 'lib/Biber/biblatexml.rng', + 'data/bcf.xsl' => 'lib/Biber/bcf.xsl', + 'data/latinkeys.txt' => 'lib/Unicode/Collate/latinkeys.txt' } +); + +$builder->add_build_element('data'); +$builder->create_build_script(); diff --git a/Master/texmf-dist/source/bibtex/biber/Changes b/Master/texmf-dist/source/bibtex/biber/Changes new file mode 100644 index 00000000000..102e6caa451 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/Changes @@ -0,0 +1,221 @@ +Revision history for Biber + +0.8 11-02-2011 + * Forces biblatex format for month field + * Added support for remote data sources + * Added experimental support for RIS data sources + * Took out -a and -d flags. These are no longer very useful as the increasingly + sophisticated biblatex options cannot be set on the command line + anyway and so these flags are less and less relevant + * New inheritance model in sync with biblatex defaults + * Bug fixes +0.7.4 05-02-2011 + * Fix for mincrossrefs leaking across sections (biblatex SF bug #3173032) +0.7.3 03-02-2011 + * Performance tuning for sorting + * Text::BibTeX 0.51 for increased macro stack space + * Support for old BibTeX month macros by default + * Re-write of datasource processing to allow for modular plugins + * Generalised nosort option. + * Merged LaTeX::Decode into Biber::LaTeX::Recode and added encoding + to deal with inputenc's limitations for PDFLaTeX users + * new options for forcing/tuning UTF-8 -> LaTeX macro conversion + * Bug fixes +0.7.2 08-01-2011 + * Improved latexmk compatibility more +0.7.1 07-01-2011 + * Improved latexmk compatibility + * Added "x-ascii" encoding alias for "ascii" to deal with inputenx ascii. + * Bug fixes +0.7 05-01-2011 + * Completely re-written sorting routine using Schwartzian transform + for real multi-field support and per-field sorting settings. + * Bug fixes +0.6.9 (dev beta) + * Bug fixes +0.6.8 (dev beta) + * Generalised sorting behaviour in several respects + * Bug fixes +0.6.7 (dev beta) + * Bug fixes +0.6.6 (dev beta) + * More generalised sorting options + * Bug fixes +0.6.5 (dev beta) + * Bug fixes +0.6.4 (dev beta) + * Bug fixes +0.6.3 (dev beta) + * Outputs labelname name list to the .bbl + * Support for dynamic sets and simpler static set interface + * Misc bug fixes +0.6.2 (dev beta) + * Internal cleanup of structure code + * Misc bug fixes +0.6.1 (dev beta) + * More comprehensive structural checks on allowed entrytypes/fields + and field combinations/formats + * Added option validate_structure to turn on structural checks + * Renamed option validate -> validate_control + * Renamed option output-directory -> output_directory + * Added labelname and labelyear as possible sort specifications + * Misc bug fixes +0.6 20-11-2010 + * First non-beta release + * More abstracted and extensible crossref inheritance model + * U::C dependency to 0.67 + * sortcase and sortupper options now take same argument forms as in biblatex + * Misc bug fixes +0.5.7 09-10-2010 + * Misc bug fixes +0.5.6 04-10-2010 + * Latex character macro decoding is now better defined in the whole + (re)encoding workflow. + * "inputenc" option is now "bblencoding" + * "locale" option is now "sortlocale" + * New option "sortupper" + * Unicode::Collate sorting is now default as version 0.61 of this + has XS module and CLDR tailoring. + * Added binary dist build scripts + * Removed bundled Module::Build as there are some conflicts with + later versions. This is less of a problem anyway because the + binary build makes it less necessary to make builds easy on perl<5.10 + * Misc bug fixes +0.5.5 29-08-2010 + * Biber::BibTeX moved to Biber::Input::BibTeX. If upgrading, please remove + your installed <perl lib>/Biber/BibTeX.pm, just to be tidy + * New aliases for EPRINT classes and types implemented (see BibLaTeX docs). + * Biber now resolves XREFs as well as CROSSREFs so one less LaTeX pass is needed + * Allows UTF-8 citekeys. Requires Text::BibTeX >= 0.46 and a fully UTF-8 + aware TeX macro package (e.g. XeTeX or LuaLaTeX). Normal LaTeX with \inputenc + will not work because the UTF-8 it uses is incomplete, macro based and not native. + * RecDescent parser is no longer supported or included. If upgrading, please remove + your installed <perl lib>/Biber/BibTeX directory, just to be tidy + * Now requires LaTeX::Decode >= 0.03 + * Stricter version dependency for Text::BibTeX. Older than 0.42 is + rather useless for complex names. + * Re-factored and enhanced auto-re-encoding of .bib/.bbl. With biblatex + 0.9c, Biber handles all reencoding. + * Misc bug fixes +0.5.4 04-08-2010 + * Case-sensitive sorting option + * Multi-section support. Only one biber pass needed to process all + bib sections using extended biblatex 0.9b .bbl format. + * .aux file is no longer used by biber - all information is passed + in .bcf file. + * Misc bug fixes + * LaTeX::Decode is now a separate CPAN module and is no longer included +0.5.3 19-03-2010 + * Changed semantics of --outfile and --output-directory. --outfile + is now relative to --output-directory. If --outfile is absolute, it + is stripped to the filename and the path discarded. Absolute .aux + paths are stripped to filename for appending to --output-directory. + * Updated PRD to use new encoding option names. Now works with -e. + * sortlos was not settable to use bib sort order + * With Text::BibTeX >= 0.42, will do all name/initials generation with btparse + library. + * Abstracted BBL output into Biber::Output class for better re-use and potential + for output formats other than .bbl. + * Synced uniquename .bcf values with change in biblatex 0.9a +0.5.2 04-03-2010 + * Locale fixes + * Uniquename fixed to match BibLaTeX option values + * Improved error message for malformed names + * Fixed config file problems under windows and also added option to ignore config file + * Bug with conflicting case between citations and bib entries + * Moved pure perl parsename to PRD.pm + * Re-write of name parsing to use Text::BibTeX::Name by default + * Fields which can be null are explicitly flagged + * Add THANKS file + * Die early when biber is called without argument + * Fixed Mac config path error + * .bib parse continues after certain errors + * regularised collate options processing + * field nameaddon was missing from Biber::Constants + * Improved warning message for missing backend=biber + * SF bug 2952347 fix (empty date range end) + * uniquename counter was being provided incorrectly +0.5.1 15.02.2010 + * Remove support for legacy control files (\jobname-blx.bib): + Biber now only reads .bcf files written by biblatex with the + option "backend=biber". + * Improved handling of "uniquename" and "namehash". + * Don't apply latexescape in bbl output, as it breaks math formatting. + +0.5 13.02.2010 + * Supports all changes introduced by biblatex 0.9 + * Moved all parts relating to the experimental BibLaTeXML format to the + "biblatexml" branch on the git repo + * Communication between biblatex and Biber can be done through a + XML-based config file (extension .bcf): this is enabled with the + experimental biblatex option "backend=biber" + * Biber can now be customized with a configuration file + * Considerable refactoring and cleanup of the code + * Further enhancements to the test suite + * Improved logging mechanism + * More robust parsing of personal names + * Ignore certain prefixes and diacritics in sort strings, for + instance Ê¿AlÄ« is sorted under A, and al-Hasan under H. This can + be customized in the configuration file (biber.conf). + * New command-line option --output-directory (like TeX) + * Many, many bugfixes :) + (See the output of "git log" for all details...) + +0.4.3 23.07.2009 + * With biblatex option "backend=biber" and biber option --v2 + the new experimental control file \jobname.bcf is used, + which brings in many new features, such as per-entrytype + settings. + * More sophisticated/customizable sorting mechanism + * More extensive test suite + * Improved BibLaTeXML schema + * improved handling of BibLaTeXML (enable nested children, + formatting elements, nosort elements) + * Do not apply latexescape() by default on xml strings + * Skip title handling in BibLaTeXML when not existing + * Ignore maxline, add option wraplines + * Built-in sort is now default (option --fastsort) + * Sorting with Unicode::Collate is possible with option --collate + * Make tests succeed w/o Parse::RD and Regexp::Common + * Don't output date and urldate in the bbl + * Add missing fields "date" "urldate" "organization" "annotator" + "foreword" and "eventtitle" + * Use Data::Dump instead of Data::Dumper for debugging + * Fields "library" and "remarks" are now skipped + * Bugfix for aliases (e.g. address, school) + * Bugfix: process urldate to get urlyear,urlmonth,urlday + * Remove illegal value shorttranslator from labelname option + * Changed biberdebug option to debug + * Changed option inputencoding to bibencoding + +0.4.2 25.04.2009 + * New option --inputencoding to handle 8-bit encoded bib files + * $BIBINPUT environment is now searched + * Improved parsing of personal names + * @comments are now silently ignored + * Fixed handling of @preamble; multiple preambles are allowed + * Warnings and errors behave more like BibTeX + * Alias fields are automatically converted (e.g. address -> location) + * Take care of "phdthesis" and "mathesis" types + * Cite keys of bib files are now case-insensitive + * Default Unicode collation now uses the table "latinkeys.txt" + (this is much faster than "allkeys.txt" which contains rules for + all Unicode glyphs) + * Unicode::Collate parameters can be passed as a command-line option + * Faster sorting (with option -f) is also possible for specific + locales given with option --locale (this is OS-dependent however) + * PRD grammar is now precompiled + * bbl output is now wrapped acc to maxline option + * Empty fields are no longer printed in the bbl + * Sorting is much improved. + * Use sortstring separators 0 1 2 like biblatex.bst + * Handle truncation of name lists acc to minnames/maxnames + * bib2biblatexml has been improved + * Windows version of Text::BibTeX provided as ppm. + * Many more bugfixes! + +0.4.1 31.03.2009 + * Text::BibTeX now optional dependency +0.4 27.03.2009 + * Initial beta release + diff --git a/Master/texmf-dist/source/bibtex/biber/MANIFEST b/Master/texmf-dist/source/bibtex/biber/MANIFEST new file mode 100644 index 00000000000..0bb41602878 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/MANIFEST @@ -0,0 +1,140 @@ +visual.pl +Build.PL +Changes +MANIFEST +META.yml +README +THANKS +TODO +bin/biber +lib/Biber.pm +lib/Biber/Output/Base.pm +lib/Biber/Output/BBL.pm +lib/Biber/Output/Test.pm +lib/Biber/Input/file/ris.pm +lib/Biber/Input/file/ris.dcf +lib/Biber/Input/file/bibtex.pm +lib/Biber/Input/file/bibtex.dcf +lib/Biber/Input/file/biblatexml.pm +lib/Biber/Input/file/biblatexml.dcf +lib/Biber/Config.pm +lib/Biber/Constants.pm +lib/Biber/Entries.pm +lib/Biber/Entry.pm +lib/Biber/Entry/Name.pm +lib/Biber/Entry/Names.pm +lib/Biber/Internals.pm +lib/Biber/LaTeX/Recode.pm +lib/Biber/LaTeX/Recode/Data.pm +lib/Biber/Sections.pm +lib/Biber/Section.pm +lib/Biber/Section/List.pm +lib/Biber/Structure.pm +lib/Biber/Utils.pm +doc/biber.tex +doc/biber.pdf +doc/biber-auctex.png +doc/biber-texworks.png +data/schemata/bcf.rnc +data/schemata/bcf.rng +data/schemata/dcf.rnc +data/schemata/dcf.rng +data/schemata/biblatexml.rnc +data/schemata/biblatexml.rng +data/bcf.xsl +data/latinkeys.txt +etc/biber.conf +t/00-options.t +t/01-names.t +t/01-names-biblatexml.t +t/01-utils.t +t/03-basic-misc.t +t/05-extrayear.t +t/05-labelalpha.t +t/05-sorting.t +t/06-labelname.t +t/07-bcfvalidation.t +t/10-sort-complex.t +t/10-sort-order.t +t/10-sort-uc.t +t/10-sort-case.t +t/10-configfile.t +t/11-set-legacy.t +t/11-set-static.t +t/11-set-dynamic.t +t/12-skips.t +t/13-uniquename.t +t/14-sections.t +t/15-sections-complex.t +t/16-encoding.t +t/17-crossrefs.t +t/18-structure-dateformats.t +t/18-bibtex-aliases.t +t/18-structure-constraints.t +t/19-related-entries.t +t/20-sortlists.t +t/pod-coverage.t +t/pod.t +t/tdata/papers.bib +t/tdata/definitions.bib +t/tdata/options.bcf +t/tdata/encoding1.bcf +t/tdata/encoding2.bcf +t/tdata/encoding3.bcf +t/tdata/encoding4.bcf +t/tdata/encoding5.bcf +t/tdata/encoding6.bcf +t/tdata/encoding1.bib +t/tdata/encoding2.bib +t/tdata/encoding3.bib +t/tdata/encoding4.bib +t/tdata/encoding5.bib +t/tdata/encoding6.bib +t/tdata/crossrefs.bib +t/tdata/crossrefs.bcf +t/tdata/sections.bcf +t/tdata/sections-complex.bcf +t/tdata/sections1.bib +t/tdata/sections2.bib +t/tdata/sections3.bib +t/tdata/sections4.bib +t/tdata/names.bcf +t/tdata/names-biblatexml.bcf +t/tdata/general2.bcf +t/tdata/structure-dateformats.bcf +t/tdata/general1.bcf +t/tdata/extrayear.bcf +t/tdata/labelalpha.bcf +t/tdata/skips.bcf +t/tdata/sort-complex.bcf +t/tdata/sort-order.bcf +t/tdata/sortlists.bcf +t/tdata/sortlists.bib +t/tdata/sort-uc.bcf +t/tdata/sort-case.bcf +t/tdata/biber3.conf +t/tdata/structure-dateformats.bib +t/tdata/extrayear.bib +t/tdata/labelalpha.bib +t/tdata/names.bib +t/tdata/names.xml +t/tdata/options.bib +t/tdata/skips.bib +t/tdata/sort.bib +t/tdata/sort-order.bib +t/tdata/sort-uc.bib +t/tdata/sort-case.bib +t/tdata/uniquename.bib +t/tdata/examples.bib +t/tdata/biber2.conf +t/tdata/sets.bib +t/tdata/related.bib +t/tdata/related.bcf +t/tdata/set-legacy.bcf +t/tdata/set-static.bcf +t/tdata/set-dynamic.bcf +t/tdata/uniquename.bcf +t/tdata/bibtex-aliases.bcf +t/tdata/bibtex-aliases.bib +t/tdata/structure-constraints.bcf +t/tdata/structure-constraints.bib diff --git a/Master/texmf-dist/source/bibtex/biber/META.yml b/Master/texmf-dist/source/bibtex/biber/META.yml new file mode 100644 index 00000000000..afc8a4f0165 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/META.yml @@ -0,0 +1,85 @@ +--- +abstract: 'main module for biber, a bibtex replacement for users of biblatex' +author: + - 'François Charette <firmicus@gmx.net>' +build_requires: + Config::AutoConf: 0.15 + ExtUtils::LibBuilder: 0.02 +configure_requires: + Module::Build: 0.36 +generated_by: 'Module::Build version 0.3607' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 +name: biblatex-biber +provides: + Biber: + file: lib/Biber.pm + version: 0.8 + Biber::Config: + file: lib/Biber/Config.pm + Biber::Constants: + file: lib/Biber/Constants.pm + Biber::Entries: + file: lib/Biber/Entries.pm + Biber::Entry: + file: lib/Biber/Entry.pm + Biber::Entry::Name: + file: lib/Biber/Entry/Name.pm + Biber::Entry::Names: + file: lib/Biber/Entry/Names.pm + Biber::Input::file::biblatexml: + file: lib/Biber/Input/file/biblatexml.pm + Biber::Input::file::bibtex: + file: lib/Biber/Input/file/bibtex.pm + Biber::Input::file::ris: + file: lib/Biber/Input/file/ris.pm + Biber::Internals: + file: lib/Biber/Internals.pm + Biber::LaTeX::Recode: + file: lib/Biber/LaTeX/Recode.pm + version: 0.1 + Biber::LaTeX::Recode::Data: + file: lib/Biber/LaTeX/Recode/Data.pm + Biber::Output::BBL: + file: lib/Biber/Output/BBL.pm + Biber::Output::Base: + file: lib/Biber/Output/Base.pm + Biber::Output::Test: + file: lib/Biber/Output/Test.pm + Biber::Section: + file: lib/Biber/Section.pm + Biber::Section::List: + file: lib/Biber/Section/List.pm + Biber::Sections: + file: lib/Biber/Sections.pm + Biber::Structure: + file: lib/Biber/Structure.pm + Biber::Utils: + file: lib/Biber/Utils.pm +recommends: + Readonly::XS: 0 +requires: + Config::General: 0 + Data::Compare: 0 + Data::Dump: 0 + Date::Simple: 0 + File::Slurp::Unicode: 0 + IPC::Cmd: 0 + IPC::Run: 0 + LWP::Simple: 0 + List::AllUtils: 0 + List::MoreUtils: 0 + Log::Log4perl: 0 + Readonly: 0 + Regexp::Common: 0 + Switch: 0 + Text::BibTeX: 0.51 + Unicode::Collate: 0.72 + XML::LibXML::Simple: 0 + XML::LibXSLT: 0 + perl: v5.10.0 +resources: + license: http://dev.perl.org/licenses/ +version: 0.8 diff --git a/Master/texmf-dist/source/bibtex/biber/README b/Master/texmf-dist/source/bibtex/biber/README new file mode 100644 index 00000000000..ab8c4ba091d --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/README @@ -0,0 +1,80 @@ + +Biber is a BibTeX replacement for users of biblatex, with full Unicode +support. + +REQUIREMENTS + + These requirements only apply if you are installing the perl version. + We also provide PAR::Packer generated binaries for most common OSes. + + Biber is written in Perl. Version 5.12 is recommended if you are running + the perl source version as it has the best Unicode implementation of any + Perl version so far. + + In addition Biber requires a number of CPAN modules, which if missing + should be automatically installed during the install process described + below. + + * Unicode::Collate 0.72 or higher + * IPC::Cmd and IPC::Run + * File::Slurp::Unicode + * Readonly (but Readonly::XS is highly recommended for performance reasons) + * List::AllUtils + * Log::Log4perl + * XML::LibXML::Simple (XML::LibXML clone of XML::Simple) + * Text::BibTeX 0.5.1 or higher (requires Config::AutoConf when + installing - please install this first.) + * LWP::Simple + +INSTALLATION + + Binaries are available for most common architectures but if you wish + to install the perl source version, run the following commands: + + perl Build.PL + ./Build + ./Build test [optional but recommended] + ./Build install + +SUPPORT AND DOCUMENTATION + + After installing, biber --help will give you the basic documentation. + The latest PDF documentation can be found here: + + https://sourceforge.net/projects/biblatex-biber/files/biblatex-biber/current/documentation/ + + Biber also comes with the utility script latex2utf8 to convert files with + LaTeX encoding to UTF-8. + + You can also find documentation for the included modules with the perldoc command: + + perldoc Biber + perldoc LaTeX::Decode + etc. + + More information, bugfix releases, forums and bug tracker are available at: + + http://biblatex-biber.sourceforge.net + +BUGS + + Please report any bugs or feature requests on our sourceforge tracker at + https://sourceforge.net/tracker2/?func=browse&group_id=228270 + + +========================== + +COPYRIGHT AND LICENCE + + Copyright (C) 2009–2011 François Charette and Philip Kime + + This program is free software; you can redistribute it and/or + modify it under the terms of either: + + * the GNU General Public License as published by the Free + Software Foundation; either version 1, or (at your option) any + later version, or + + * the Artistic License version 2.0. + +========================== diff --git a/Master/texmf-dist/source/bibtex/biber/THANKS b/Master/texmf-dist/source/bibtex/biber/THANKS new file mode 100644 index 00000000000..7a1b710b9cd --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/THANKS @@ -0,0 +1,13 @@ +We acknowledge the help of: + + Philipp Lehman, who gave us biblatex, and without whose close collaboration + Biber development would not be possible. + + Alberto Manuel Brandão Simões, the maintainer of Text-BibTeX, for willingly + complying to our special requests. + +We also wish to thank the following persons for their useful feedback, bug reports, etc.: + + Simon Spiegel + Thomas Arildsen + and several others diff --git a/Master/texmf-dist/source/bibtex/biber/TODO b/Master/texmf-dist/source/bibtex/biber/TODO new file mode 100644 index 00000000000..3bcaa9a96ff --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/TODO @@ -0,0 +1,13 @@ +TODO in decreasing order of priority: + +* When biblatex implements related entries, take out reprinttitle +* Generalised \printbibliography system + Typed lists - entry, key, shorthand etc. + Take out MAIN, SHORTHANDS backwards compat hacks in Biber.pm and BBL.pm + Shorthands should be requested otherwise it's a big sorting overhead +* Zotero? http://www.zotero.org/support/dev/start + https://api.zotero.org/users/<USERID>/items/<iTEMID>?key=<APIKEY> + gives a parseable ATOM XML with the information in +* Structure ALL fields need to be put into types where possible +* merge in the "unique" branch to implement full uniquename/list + automation. Needs new .bbl format and biblatex support (biblatex 1.3) diff --git a/Master/texmf-dist/source/bibtex/biber/bin/biber b/Master/texmf-dist/source/bibtex/biber/bin/biber new file mode 100755 index 00000000000..617e3ed9f37 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/bin/biber @@ -0,0 +1,504 @@ +#!/usr/bin/perl +use strict; +use warnings; +use constant { + EXIT_OK => 0, + EXIT_ERROR => 1 +}; + +# no warnings 'utf8'; +use Carp; +use IPC::Cmd qw( can_run run ); +use Log::Log4perl qw(:no_extra_logdie_message); +use Log::Log4perl::Level; +use POSIX qw(strftime); +use Biber; +use Biber::Output::BBL; +use Biber::Utils; +use File::Spec; + +#Don't remove the next line! +#<wrapper_snippet>--------------------------------- + +use Getopt::Long qw/:config no_ignore_case/; +my $opts = {}; +GetOptions( + $opts, + 'bibencoding|e=s', + 'bblencoding|E=s', + 'bblsafechars', + 'bblsafecharsset=s', + 'collate|C', + 'collate_options|c=s', + 'configfile|g=s', + 'convert_control', + 'decodecharsset=s', + 'debug|D', + 'fastsort|f', + 'help|h|?', + 'mincrossrefs|m=s', + 'logfile=s', + 'noconf', + 'nolog', + 'nostdmacros', + 'onlylog', + 'outfile|O=s', + 'output_directory=s', + 'quiet|q', + 'sortcase=s', + 'sortlocale|l=s', + 'sortupper=s', + 'trace|T', + 'u', # alias for bibencoding=UTF-8 + 'U', # alias for bblencoding=UTF-8 + 'validate_control', + 'validate_structure|V', + 'version|v', + 'wraplines|w' + ); + +#-------------------------------------------------- + +our $VERSION = $Biber::VERSION; +our $BETA_VERSION = $Biber::BETA_VERSION; + +if (exists $opts->{'help'}) { + print usage(); + exit EXIT_OK; +} + +if (exists $opts->{'version'}) { + print version(); + exit EXIT_OK; +} + +# Catch this situation early +unless (@ARGV) { + print STDERR usage(); + exit EXIT_ERROR; +} + +#-------------------------------------------------- + +# Sanitise collate option if fastsort is specified +if ($opts->{fastsort}) { + delete $opts->{collate}; +} + +# Resolve shortcut aliases for UTF-8ness +if ($opts->{u}) { + $opts->{bibencoding} = 'UTF-8'; + delete $opts->{u}; +} +if ($opts->{U}) { + $opts->{bblencoding} = 'UTF-8'; + delete $opts->{U}; +} + +# Sanitise user-specified log name +$opts->{logfile} =~ s/\.blg\z//xms if $opts->{logfile}; + +# Create Biber object, passing command-line options +my $biber = Biber->new(%$opts); + +# Set log file name +my $biberlog; +if (my $log = Biber::Config->getoption('logfile')) { # user specified logfile name + $biberlog = $log . '.blg'; +} +elsif (not @ARGV) { + $biberlog = 'biber.blg'; # default if no .bcf file specified +} +else { # set log to jobname.blg + my $bcf = $ARGV[0]; + $bcf =~ s/\.bcf\z//xms; + $biberlog = $bcf . '.blg'; +} + +# prepend output directory for log, if specified +if (my $outdir = Biber::Config->getoption('output_directory')) { + $biberlog = File::Spec->catfile($outdir, $biberlog); +} + +# Setting the logging level of Log::Log4perl +my $LOGLEVEL; +if (Biber::Config->getoption('trace')) { + $LOGLEVEL = 'TRACE' +} elsif (Biber::Config->getoption('debug')) { + $LOGLEVEL = 'DEBUG' +} elsif (Biber::Config->getoption('quiet')) { + $LOGLEVEL = 'ERROR' +} else { + $LOGLEVEL = 'INFO' +} + +my $LOGLEVEL_F; +my $LOG_MAIN; +if (Biber::Config->getoption('nolog')) { + $LOG_MAIN = 'Screen'; + $LOGLEVEL_F = 'OFF' +} else { + $LOG_MAIN = 'Logfile, Screen'; + $LOGLEVEL_F = $LOGLEVEL +} + +my $LOGLEVEL_S; +if (Biber::Config->getoption('onlylog')) { + $LOGLEVEL_S = 'OFF' +} else { + # Max screen loglevel is INFO + if (Biber::Config->getoption('quiet')) { + $LOGLEVEL_S = 'ERROR'; + } + else { + $LOGLEVEL_S = 'INFO'; + } +} + +# configuration "file" for Log::Log4perl +my $l4pconf = qq( + log4perl.category.main = $LOGLEVEL, $LOG_MAIN + log4perl.category.screen = $LOGLEVEL_S, Screen + + log4perl.appender.Screen = Log::Log4perl::Appender::Screen + log4perl.appender.Screen.utf8 = 1 + log4perl.appender.Screen.Threshold = $LOGLEVEL_S + log4perl.appender.Screen.stderr = 0 + log4perl.appender.Screen.layout = Log::Log4perl::Layout::SimpleLayout +); + +# Only want a logfile appender if --nolog isn't set +if ($LOGLEVEL_F ne 'OFF') { + $l4pconf .= qq( + log4perl.category.logfile = $LOGLEVEL_F, Logfile + log4perl.appender.Logfile = Log::Log4perl::Appender::File + log4perl.appender.Logfile.utf8 = 1 + log4perl.appender.Logfile.Threshold = $LOGLEVEL_F + log4perl.appender.Logfile.filename = $biberlog + log4perl.appender.Logfile.mode = clobber + log4perl.appender.Logfile.layout = Log::Log4perl::Layout::PatternLayout + log4perl.appender.Logfile.layout.ConversionPattern = [%r] %F{1}:%L> %p - %m%n +); +} + +Log::Log4perl::init(\$l4pconf) ; + +# get the logger object +my $logger = Log::Log4perl::get_logger('main') ; +my $screen = Log::Log4perl::get_logger('screen'); +my $logfile = Log::Log4perl::get_logger('logfile'); + +my $vn = $VERSION; +$vn .= ' (beta)' if $BETA_VERSION; + +$logger->info("This is biber $vn") unless Biber::Config->getoption('nolog'); +$logger->info("Logfile is '$biberlog'") unless Biber::Config->getoption('nolog'); + +my $ctrlfile; +my $bblfile; + +my $time_string = strftime "%a %b %e, %Y, %H:%M:%S", localtime; + +$logfile->info("=== Biber version $vn"); +$logfile->info("=== $time_string"); + +if (Biber::Config->getoption('debug')) { + $screen->info("DEBUG mode: all messages are logged to '$biberlog'") +} + +$ctrlfile = $ARGV[0] or croak usage(); +$ctrlfile .= '.bcf' unless $ctrlfile =~ m/\.bcf$/; + +if (Biber::Config->getoption('outfile')) { + $bblfile = Biber::Config->getoption('outfile') +} +else { + $bblfile = $ctrlfile; + $bblfile =~ s/bcf$/bbl/; +} + +# Set the .bbl path to the output dir, if specified +if (my $outdir = Biber::Config->getoption('output_directory')) { + my (undef, undef, $file) = File::Spec->splitpath($bblfile); + $bblfile = File::Spec->catfile($outdir, $file) +} + +# parse the .bcf control file +$biber->parse_ctrlfile($ctrlfile); + +# Postprocess biber options now that they are all read from the various places +Biber::Config->postprocess_biber_opts; + +# Check to see if the .bcf set debug=1. If so, increase logging level +# We couldn't set this on logger init as the .bcf hadn't been read then +if (Biber::Config->getoption('debug')) { + $logger->level($DEBUG); +} + +if (Biber::Config->getoption('trace')) { + $logger->trace("\n###########################################################\n", + "############# Dump of initial config object: ##############\n", + Data::Dump::pp($Biber::Config::CONFIG), "\n", + "############# Dump of initial biber object: ###############\n", + $biber->_stringdump, + "\n###########################################################") +} + +# Set the output class. Should be a subclass of Biber::Output::Base +$biber->set_output_obj(Biber::Output::BBL->new()); + +if (Biber::Config->getoption('trace')) { + $logger->trace("\n###########################################################\n", + "############# Dump of post-parse config object: ###########\n", + Data::Dump::pp($Biber::Config::CONFIG), "\n", + "############# Dump of post-parse biber object: ############\n", + $biber->_stringdump, + "\n###########################################################") +} + +# Do all the real work +$biber->prepare; + +if (Biber::Config->getoption('trace')) { + $logger->trace("\n###########################################################\n", + "############# Dump of final config object: ################\n", + Data::Dump::pp($Biber::Config::CONFIG), "\n", + "############# Dump of final biber object: #################\n", + $biber->_stringdump, + "\n###########################################################") +} + +# Get reference to output object +my $bbloutput = $biber->get_output_obj; +# Set the output target +$bbloutput->set_output_target_file($bblfile); +# Write the output to the target +$bbloutput->output; + +### + +# display warnings/errors summary, like BibTeX's format +# unless in quiet mode and exit +unless (Biber::Config->getoption('quiet')) { + if (defined($biber->{errors})) { # if errors, ignore warnings + if ($biber->{errors} == 1) { + print "(There was 1 error message)\n"; + } + elsif ($biber->{errors} > 1) { + print "(There were ", $biber->{errors}, " error messages)\n"; + } + exit EXIT_ERROR; + } + elsif (defined($biber->{warnings})) { + if ($biber->{warnings} == 1) { + print "(There was 1 warning)\n"; + } elsif ($biber->{warnings} > 1) { + print "(There were ", $biber->{warnings}, " warnings)\n"; + } + exit EXIT_OK; + } +} + +#====================================================== + +sub version { + my $v = "biber version: $VERSION"; + $v .= ' (beta)' if $BETA_VERSION; + return "$v\n"; +} + +sub usage { + qq{ +Usage: biber file.bcf + Creates file.bbl using control file file.bcf (.bcf extension is optional) + + biber -d foo.bib file.bcf + Creates file.bbl from entries in foo.bib and the data sources + listed in file.bcf + + biber -d foo.bib,bar.bib -a + Creates foo.bbl from all entries in foo.bib and bar.bib. No .bcf used + +Options: + + --bblencoding|-E [encoding] + Specify the encoding of the output .bbl file. Default is "UTF-8". + Normally it's not necessary to set this as it's passed via biblatex + from the inputenc package setting. + See "perldoc Encode::Supported" for a list of supported encodings. + + --bblsafechars + Try to convert UTF-8 chars into LaTeX macros when writing the .bbl + This can prevent unknown char errors when using PDFLaTeX and inputenc + as this doesn't understand all of UTF-8. Note, it is better to switch + to XeTeX or LuaTeX to avoid this situation. Without argument uses a + generous set of conversions. + + --bblsafecharsset=base|extra|full + The set of characters included in the conversion routine for + --bblsafechars. Set to "full" to try harder with a much + larger set or "base" to use a minimal set. Default is "extra" which is + between "base" and "full". You may need to load more macro packages + to deal with the results of "full" (Dings, Greek characters, special + symbols etc.) + + --bibencoding|-e [encoding] + Specify the encoding of the bib file(s). Default is "UTF-8" + Normally it's not necessary to set this as it's passed via the + .bcf file from biblatex's setting of the same name. + See "perldoc Encode::Supported" for a list of supported encodings. + + --collate|-C + Sort with Unicode::Collate instead of the built-in sort function. + This is the default. + + --collate_options|-c [options] + Options to pass to the Unicode::Collate object used for sorting + (default is 'level => "2", table => "latinkeys.txt"'). + See "perldoc Unicode::Collate" for details. + + --configfile|-g <file> + Use <file> as configuration file for Biber. + The default is the first file found among + "biber.conf" in the current directory, "\$HOME/.biber.conf", + or else the output of "kpsewhich biber.conf". + + --convert_control + Converts the .bcf control file into html using an XSLT transform. Can + be useful for debugging. File is named by appending \".html\" + to .bcf file. + + --decodecharsset=base|extra|full + The set of characters included in the conversion routine when decoding + LaTeX macros into UTF-8 (which happens when --bblencoding|-E is set to + UTF-8) Set to "full" to try harder with a much larger set or "base" to + use a minimal set. Default is "extra" which is between "base" and "full". + You may want to try "full" if you want, for example, to sort more + obscure UTF-8 characters in the .bib + + --debug|-D + Turn on debugging for biber. + + --fastsort|-f + Use Perl’s sort instead of Unicode::Collate for sorting. Also uses + OS locale definitions (which may be broken for some languages ...) + + --help|-h + Show this help message. + + --logfile <file> + Use <file>.blg as the name of the logfile + + --mincrossrefs|-m <n> + Set threshold for crossrefs. + + --noconf + Don't look for a configfile + + --nolog + Do not write any logfile. + + --nostdmacros + Don't automatically define any standard macros like month abbreviations. + If you also define these yourself, this option can be used to suppress + macro redefinition warnings. + + --onlylog + Do not write any message to screen. + + --outfile|-O <file> + Output to <file> instead of <basename>.bbl + <file> is relative to --output_directory, if set (absolute + paths in this case are stripped to filename only). <file> can + be absolute if --output_directory is not set. + + --output_directory <d> + Files (.bbl and .log) are output to directory <d> instead + of the current directory. Input files are also looked for in <d> + before current directory. + + --quiet|-q + Log only errors + + --sortcase=true|false + Case-sensitive sorting (default is true) + + --sortlocale|-l [locale] + Set the locale to be used for sorting. With default sorting + (--collate|-C), the locale is used to add CLDR + tailoring to the sort (if available for the locale). With + --fastsort|-f this sets the OS locale for sorting. + + --sortupper=true|false + Whether to sort uppercase before lowercase when using + default sorting (--collate|-C). When + using --fastsort|-f, your OS collation locale determines + this and this option is ignored. (default is true) + + -u + Alias for --bibencoding=UTF-8. + + -U + Alias for --bblencoding=UTF-8. + + --validate_control + Schema validate the .bcf biblatex control file. + + --validate_structure|-V + Validate various aspects of the bib entries + + --version|-v + Display version number. + + --wraplines|-w + Wrap lines in the .bbl file. + +Bug reports, forum and downloads at: + https://sourceforge.net/projects/biblatex-biber +\n} +} + +__END__ + +=pod + +=encoding utf8 + +=head1 NAME + +C<biber> - A bibtex replacement for users of biblatex + +=head1 SYNOPSIS + +Please run "biber --help" for usage + +=head1 DESCRIPTION + +C<biber> provides a replacement of the bibtex processor for users of biblatex. +Besides emulating the functionality of bibtex + biblatex.bst, it also supports ... + +(REST TO BE WRITTEN) + +=head1 AUTHOR + +François Charette, C<< <firmicus at gmx.net> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/data/bcf.xsl b/Master/texmf-dist/source/bibtex/biber/data/bcf.xsl new file mode 100644 index 00000000000..b4261ed9fc5 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/data/bcf.xsl @@ -0,0 +1,825 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:bcf="https://sourceforge.net/projects/biblatex" + xmlns="http://www.w3.org/1999/xhtml" + exclude-result-prefixes="xs xsl bcf" + version="1.0"> + + <!-- Use strict Doctype otherwise IE7 is too stupid to do tables correctly --> + <xsl:output method="html" + media-type="text/html" + doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" + doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" + indent="yes" + encoding="UTF-8"/> + + <xsl:template name="generate-string"> + <xsl:param name="text"/> + <xsl:param name="count"/> + + <xsl:choose> + <xsl:when test="string-length($text) = 0 or $count <= 0"/> + <xsl:otherwise> + <xsl:value-of select="$text"/> + <xsl:call-template name="generate-string"> + <xsl:with-param name="text" select="$text"/> + <xsl:with-param name="count" select="$count - 1"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="sorting-spec"> + <xsl:param name="spec"/> + <table> + <thead> + <tr> + <xsl:for-each select="$spec/bcf:sort"> + <xsl:sort select="./@order"/> + <td> + <xsl:if test="./@final='1'"> + <xsl:attribute name="class">sort_final</xsl:attribute> + </xsl:if> + <xsl:choose> + <xsl:when test="./@sort_direction='descending'"> + <xsl:text disable-output-escaping="yes">&darr;</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text disable-output-escaping="yes">&uarr;</xsl:text> + </xsl:otherwise> + </xsl:choose> + <tt> + <!-- sortupper --> + <xsl:choose> + <xsl:when test ="./@sortupper"> + <!-- Field setting --> + <xsl:choose> + <xsl:when test="./@sortupper='1'">Aa/</xsl:when> + <xsl:otherwise>aA/</xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <!-- Global setting --> + <xsl:choose> + <xsl:when test="/bcf:controlfile/bcf:options[@component='biber']/bcf:option/bcf:key[text()='sortupper']/../bcf:value/text()">Aa/</xsl:when> + <xsl:otherwise>aA/</xsl:otherwise> + </xsl:choose> + + </xsl:otherwise> + </xsl:choose> + <!-- sortcase --> + <xsl:choose> + <xsl:when test ="./@sortcase"> + <!-- Field setting --> + <xsl:choose> + <xsl:when test="./@sortcase='1'">A</xsl:when> + <xsl:otherwise>a</xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <!-- Global setting --> + <xsl:choose> + <xsl:when test="/bcf:controlfile/bcf:options[@component='biber']/bcf:option/bcf:key[text()='sortcase']/../bcf:value/text()">A</xsl:when> + <xsl:otherwise>a</xsl:otherwise> + </xsl:choose> + + </xsl:otherwise> + </xsl:choose> + </tt> + </td> + </xsl:for-each> + </tr> + </thead> + <tbody> + <tr> + <xsl:for-each select="$spec/bcf:sort"> + <xsl:sort select="./@order"/> + <td> + <ul> + <xsl:for-each select="./bcf:sortitem"> + <xsl:sort select="./@order"/> + <li> + <!-- left padding --> + <xsl:if test="./@pad_side = 'left'"> + <span class="sort_padding"> + <xsl:call-template name='generate-string'> + <xsl:with-param name='text'><xsl:value-of select="./@pad_char"/></xsl:with-param> + <xsl:with-param name='count' select='./@pad_width'/> + </xsl:call-template> + </span> + </xsl:if> + <!-- left substring --> + <xsl:if test="./@substring_side = 'left'"> + <span class="sort_substring"> + <xsl:call-template name='generate-string'> + <xsl:with-param name='text'>></xsl:with-param> + <xsl:with-param name='count' select='./@substring_width'/> + </xsl:call-template> + </span> + </xsl:if> + <xsl:value-of select="./text()"/> + <!-- right padding --> + <xsl:if test="./@pad_side='right'"> + <span class="sort_padding"> + <xsl:call-template name='generate-string'> + <xsl:with-param name='text'><xsl:value-of select="./@pad_char"/></xsl:with-param> + <xsl:with-param name='count' select='./@pad_width'/> + </xsl:call-template> + </span> + </xsl:if> + <!-- right substring --> + <xsl:if test="./@substring_side='right'"> + <span class="sort_substring"> + <xsl:call-template name='generate-string'> + <xsl:with-param name='text'><</xsl:with-param> + <xsl:with-param name='count' select='./@substring_width'/> + </xsl:call-template> + </span> + </xsl:if> + </li> + </xsl:for-each> + </ul> + </td> + </xsl:for-each> + </tr> + </tbody> + </table> + <div class="key"><u>Key</u> + <ul> + <li><b>Heading Format</b>: (sort-direction)(case-order)/(case-sensitivity)</li> + <li><b>Heading key</b>: <xsl:text disable-output-escaping="yes">&uarr;</xsl:text> = ascending sort, <xsl:text disable-output-escaping="yes">&darr;</xsl:text> = descending sort, <tt>Aa</tt> = sort uppercase before lower, <tt>aA</tt> = sort lowercase before upper, <tt>A</tt> = case-sensitive sorting, <tt>a</tt> = case-insensitive sorting, <span class="sort_final">sort fieldset is final master key if defined</span></li> + <li><b>Field key</b>: <span class="sort_padding">Padding specification</span> e.g. <span class="sort_padding">0000</span>field = pad field "field" from left with "0" to width 4. <span class="sort_substring">Substring specification</span> e.g. field<span class="sort_substring"><<<<</span> = take width 4 substring from right side of field "field"</li> + </ul> + </div> + </xsl:template> + + <xsl:template match="/"> + <html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>BibLaTeX control file</title> + <style type="text/css"> + h2,h3,h4 { + font-family: Arial,sans-serif; + } + .key { + font-size: 70%; + padding-top: 2ex; + } + .sort_padding { + color: #6699CC; + } + .sort_substring { + color: #FF9933; + } + .field_xor_coerce { + color: #FF0000; + } + .inherit_override { + color: #FF0000; + } + .field_nullok { + background-color: #99FF99; + } + .field_skip { + background-color: #D0D0D0; + } + .global_entrytype_fields { + color: #666666; + } + ul { + list-style-type: none; + margin-left: 0; + margin-right: 0; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; + padding-top: 0; + padding-bottom: 0; + padding-right: 0; + } + table { + border-width: 1px; + border-spacing: 2px; + border-style: hidden; + border-color: gray; + border-collapse: collapse; + background-color: white; + } + table thead { + background-color: #FAF0E6; + text-align: center; + } + table td { + wrap: soft; + vertical-align: text-top; + line-height: 1; + padding: 0px 5px 0px 5px; + border-width: 1px; + border-style: inset; + border-color: gray; + } + </style> + </head> + <body> + <h2><tt>BibLaTeX</tt> Control File (format version: <xsl:value-of select="/bcf:controlfile/@version"/>)</h2> + <!-- OPTIONS --> + <hr/> + <xsl:for-each select="/bcf:controlfile/bcf:options"> + <h3><xsl:value-of select="./@type"/> options for <tt><xsl:value-of select="./@component"/></tt></h3> + <table> + <thead> + <tr><td>Option</td><td>Value</td></tr> + </thead> + <tbody> + <xsl:for-each select="./bcf:option"> + <xsl:choose> + <xsl:when test="./@type='singlevalued'"> + <tr> + <td><xsl:value-of select="./bcf:key/text()"/></td> + <td><tt><xsl:value-of select="./bcf:value/text()"/></tt></td> + </tr> + </xsl:when> + <xsl:when test="./@type='multivalued'"> + <tr> + <td><tt><xsl:value-of select="./bcf:key/text()"/></tt></td> + <td><xsl:for-each select="./bcf:value"> + <xsl:sort select="./@order"/> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())"> + <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text> + </xsl:if> + </xsl:for-each></td> + </tr> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </tbody> + </table> + </xsl:for-each> + <!-- INHERITANCE --> + <xsl:if test="/bcf:controlfile/bcf:inheritance"> + <hr/> + <h3>Inheritance</h3> + <h4>Defaults</h4> + <!-- Defaults --> + <table> + <thead> + <tr><td>Child type <xsl:text disable-output-escaping="yes">&asymp;</xsl:text> Parent type</td><td>Source field <xsl:text disable-output-escaping="yes">&rarr;</xsl:text> Target field</td></tr> + </thead> + <tbody> + <!-- Defaults for all types --> + <tr> + <td>* <xsl:text disable-output-escaping="yes"> &asymp; </xsl:text> *</td> + <xsl:choose> + <xsl:when test="/bcf:controlfile/bcf:inheritance/bcf:defaults/@inherit_all='yes'"> + <td> + <span> + <xsl:if test="/bcf:controlfile/bcf:inheritance/bcf:defaults/@override_target='yes'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + * </span> + <xsl:text disable-output-escaping="yes">&rarr;</xsl:text> + <span> + <xsl:if test="/bcf:controlfile/bcf:inheritance/bcf:defaults/@override_target='no'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + * </span> + </td> + </xsl:when> + <xsl:otherwise> + <td> + <span> + <xsl:if test="/bcf:controlfile/bcf:inheritance/bcf:defaults/@override_target='yes'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + *</span> + <xsl:text disable-output-escaping="yes">&rarr;</xsl:text> + <span> + <xsl:if test="/bcf:controlfile/bcf:inheritance/bcf:defaults/@override_target='no'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + <xsl:text disable-output-escaping="yes">&empty;</xsl:text> + </span> + </td> + </xsl:otherwise> + </xsl:choose> + </tr> + <!-- Defaults for certain types --> + <xsl:for-each select="/bcf:controlfile/bcf:inheritance/bcf:defaults/bcf:type_pair"> + <tr> + <td> + <xsl:choose> + <xsl:when test ="./@target='all'">*</xsl:when> + <xsl:otherwise><xsl:value-of select="./@target"/></xsl:otherwise> + </xsl:choose> + <xsl:text disable-output-escaping="yes"> &asymp; </xsl:text> + <xsl:choose> + <xsl:when test ="./@source='all'">*</xsl:when> + <xsl:otherwise><xsl:value-of select="./@source"/></xsl:otherwise> + </xsl:choose> + </td> + <xsl:choose> + <xsl:when test="./@inherit_all='yes'"> + <td> + <span> + <xsl:if test="./@override_target='yes'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + *</span> + <xsl:text disable-output-escaping="yes"> &asymp; </xsl:text> + <span> + <xsl:if test="./@override_target='no'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + *</span> + </td> + </xsl:when> + <xsl:otherwise> + <td> + <span> + <xsl:if test="./@override_target='yes'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + *</span> + <xsl:text disable-output-escaping="yes">&rarr;</xsl:text> + <span> + <xsl:if test="./@override_target='no'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + <xsl:text disable-output-escaping="yes">&empty;</xsl:text> + </span> + </td> + </xsl:otherwise> + </xsl:choose> + </tr> + </xsl:for-each> + </tbody> + </table> + <h4>Specifications</h4> + <table> + <thead> + <tr><td>Child type <xsl:text disable-output-escaping="yes">&asymp;</xsl:text> Parent type</td><td>Source field <xsl:text disable-output-escaping="yes">&rarr;</xsl:text> Target field</td></tr> + </thead> + <tbody> + <xsl:for-each select="/bcf:controlfile/bcf:inheritance/bcf:inherit"> + <tr> + <td> + <ul> + <xsl:for-each select="./bcf:type_pair"> + <li> + <xsl:choose> + <xsl:when test ="./@target='all'">*</xsl:when> + <xsl:otherwise><xsl:value-of select="./@target"/></xsl:otherwise> + </xsl:choose> + <xsl:text disable-output-escaping="yes"> &asymp; </xsl:text> + <xsl:choose> + <xsl:when test ="./@source='all'">*</xsl:when> + <xsl:otherwise><xsl:value-of select="./@source"/></xsl:otherwise> + </xsl:choose> + </li> + </xsl:for-each> + </ul> + </td> + <td> + <ul> + <xsl:for-each select="./bcf:field"> + <li> + <xsl:choose> + <!-- A field skip specification --> + <xsl:when test ="./@skip='yes'"> + <xsl:value-of select="./@source"/> <xsl:text disable-output-escaping="yes"> &rarr; </xsl:text> <xsl:text disable-output-escaping="yes">&empty;</xsl:text> + </xsl:when> + <!-- A normal field inherit specification --> + <xsl:otherwise> + <span> + <xsl:if test="./@override_target='yes'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + <xsl:value-of select="./@source"/> + </span> + <xsl:text disable-output-escaping="yes"> &rarr; </xsl:text> + <span> + <xsl:if test="./@override_target='no'"> + <xsl:attribute name="class">inherit_override</xsl:attribute> + </xsl:if> + <xsl:value-of select="./@target"/> + </span> + </xsl:otherwise> + </xsl:choose> + </li> + </xsl:for-each> + </ul> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + <div class="key"><u>Key</u> + <ul> + <li><tt>*</tt> matches all entrytypes or fields</li> + <li><tt>X</tt><xsl:text disable-output-escaping="yes"> &asymp; </xsl:text><tt>Y</tt>: <tt>X</tt> inherits from<tt> Y</tt></li> + <li><tt>X</tt><xsl:text disable-output-escaping="yes"> &rarr; &empty;</xsl:text>: Field <tt>X</tt> is suppressed</li> + <li><tt>F</tt><xsl:text disable-output-escaping="yes"> &rarr; </xsl:text><tt>F'</tt>: Field <tt>F</tt> in parent becomes field <tt>F'</tt> in child. If both field <tt>F</tt> and field <tt>F'</tt> exist, field in <span class="inherit_override">red</span> overrides the other.</li> + </ul> + </div> + </xsl:if> + <!-- SORTING --> + <hr/> + <h3>Global Default Sorting Options</h3> + <h4>Presort defaults</h4> + <table> + <thead> + <tr><td>Entrytype</td><td>Presort default</td></tr> + </thead> + <tbody> + <xsl:for-each select="/bcf:controlfile/bcf:sorting/bcf:presort"> + <tr> + <td> + <xsl:choose> + <xsl:when test="./@type"> + <xsl:value-of select="./@type"/> + </xsl:when> + <xsl:otherwise> + ALL + </xsl:otherwise> + </xsl:choose> + </td> + <td><tt><xsl:value-of select="./text()"/></tt></td> + </tr> + </xsl:for-each> + </tbody> + </table> + <h4>Sorting exclusions</h4> + <table> + <thead> + <tr><td>Entrytype</td><td>Fields excluded from sorting</td></tr> + </thead> + <tbody> + <xsl:for-each select="/bcf:controlfile/bcf:sorting/bcf:sortexclusion"> + <tr> + <td> + <xsl:value-of select="./@type"/> + </td> + <td> + <xsl:for-each select="./bcf:exclusion"> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())"> + <xsl:text disable-output-escaping="yes">,&nbsp;</xsl:text> + </xsl:if> + </xsl:for-each> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + <h4>Sorting Specification</h4> + <xsl:call-template name="sorting-spec"> + <xsl:with-param name="spec" select="/bcf:controlfile/bcf:sorting"/> + </xsl:call-template> + <xsl:if test="/bcf:controlfile/bcf:structure"> + <hr/> + <h3>Data Structure</h3> + <h4>Legal datetypes</h4> + <table> + <thead> + <tr><td>Datetypes</td></tr> + </thead> + <tbody> + <xsl:for-each select="/bcf:controlfile/bcf:structure/bcf:datetypes/bcf:datetype"> + <tr><td><xsl:value-of select="./text()"/></td></tr> + </xsl:for-each> + </tbody> + </table> + <h4>Legal entrytypes</h4> + <table> + <thead> + <tr><td>Entrytype</td><td>Legal fields for entrytype</td></tr> + </thead> + <tbody> + <tr> + <td>GLOBAL</td> + <td> + <div class="global_entrytype_fields"> + <xsl:for-each select="/bcf:controlfile/bcf:structure/bcf:entryfields/bcf:entrytype[text()='ALL']/../bcf:field"> + <xsl:sort select="./text()"/> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())">, </xsl:if> + </xsl:for-each> + </div> + </td> + </tr> + <xsl:for-each select="/bcf:controlfile/bcf:structure/bcf:entrytypes/bcf:entrytype"> + <tr> + <td><xsl:value-of select="./text()"/></td> + <!-- Save a varible pointing to the entrytype node --> + <xsl:variable name="entrynode" select="current()"/> + <!-- Fields which are valid for this entrytype --> + <td> + <!-- If no fields explicitly listed for entrytype, just global fields --> + <xsl:if test="not(/bcf:controlfile/bcf:structure/bcf:entryfields/bcf:entrytype[text()=$entrynode/text()])"> + <div class="global_entrytype_fields">GLOBAL fields</div> + </xsl:if> + <xsl:for-each select="/bcf:controlfile/bcf:structure/bcf:entryfields"> + <!-- fields valid just for this entrytype --> + <xsl:if test="./bcf:entrytype[text()=$entrynode/text()]"> + <xsl:choose> + <!-- Value "ALL" lists every valid field which is a superset + of the global fields --> + <xsl:when test="./bcf:field[text()='ALL']"> + <xsl:for-each select="/bcf:controlfile/bcf:structure/bcf:fields/bcf:field"> + <xsl:sort select="./text()"/> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())">, </xsl:if> + </xsl:for-each> + </xsl:when> + <!-- Normal type-specific fields --> + <xsl:otherwise> + <!-- List global fields for all entrytypes first --> + <div class="global_entrytype_fields">GLOBAL fields</div> + <xsl:for-each select="./bcf:field"> + <xsl:sort select="./text()"/> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())">, </xsl:if> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:for-each> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + <h4>Legal Fields</h4> + <table> + <thead> + <tr><td>Field</td><td>Data type</td></tr> + </thead> + <tbody> + <xsl:for-each select="/bcf:controlfile/bcf:structure/bcf:fields/bcf:field"> + <tr> + <td> + <xsl:value-of select="./text()"/> + <xsl:if test="./@nullok='true'"><xsl:text disable-output-escaping="yes">&empty;</xsl:text></xsl:if> + <xsl:if test="./@skip_output='true'"><xsl:text disable-output-escaping="yes">&loz;</xsl:text></xsl:if> + </td> + <td> + <xsl:value-of select="./@datatype"/><xsl:text disable-output-escaping="yes">&nbsp;</xsl:text><xsl:value-of select="./@fieldtype"/> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + <div class="key"><u>Key</u> + <ul> + <li><xsl:text disable-output-escaping="yes">&empty;</xsl:text> = field can null in <tt>.bbl</tt>, <xsl:text disable-output-escaping="yes">&loz;</xsl:text> = field is not output to <tt>.bbl</tt></li> + </ul> + </div> + <xsl:if test="/bcf:controlfile/bcf:structure/bcf:constraints"> + <hr/> + <h3>Constraints</h3> + <table> + <thead> + <tr><td>Entrytypes</td><td>Constraint</td></tr> + </thead> + <tbody> + <xsl:for-each select="/bcf:controlfile/bcf:structure/bcf:constraints"> + <tr> + <td> + <ul> + <xsl:for-each select="./bcf:entrytype"> + <li> + <xsl:value-of select="./text()"/> + </li> + </xsl:for-each> + </ul> + </td> + <td> + <ul> + <xsl:for-each select="./bcf:constraint"> + <li> + <xsl:choose> + <xsl:when test="./@type='conditional'"> + <xsl:choose> + <xsl:when test="./bcf:antecedent/@quant='all'"><xsl:text disable-output-escaping="yes">&forall;</xsl:text></xsl:when> + <xsl:when test="./bcf:antecedent/@quant='one'"><xsl:text disable-output-escaping="yes">&exist;</xsl:text></xsl:when> + <xsl:when test="./bcf:antecedent/@quant='none'"><xsl:text disable-output-escaping="yes">&not;&exist;</xsl:text></xsl:when> + </xsl:choose> + ( + <xsl:for-each select="./bcf:antecedent/bcf:field"> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())">,</xsl:if> + </xsl:for-each> + ) + <xsl:text disable-output-escaping="yes">&rarr; </xsl:text> + <xsl:choose> + <xsl:when test="./bcf:consequent/@quant='all'"><xsl:text disable-output-escaping="yes">&forall;</xsl:text></xsl:when> + <xsl:when test="./bcf:consequent/@quant='one'"><xsl:text disable-output-escaping="yes">&exist;</xsl:text></xsl:when> + <xsl:when test="./bcf:consequent/@quant='none'"><xsl:text disable-output-escaping="yes">&not;&exist;</xsl:text></xsl:when> + </xsl:choose> + ( + <xsl:for-each select="./bcf:consequent/bcf:field"> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())">,</xsl:if> + </xsl:for-each> + ) + </xsl:when> + <xsl:when test="./@type='data'"> + <xsl:choose> + <xsl:when test="./@datatype='integer'"> + <xsl:value-of select="./@rangemin"/><xsl:text disable-output-escaping="yes">&le;</xsl:text> + ( + <xsl:for-each select="./bcf:field"> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())">,</xsl:if> + </xsl:for-each> + ) + <xsl:text disable-output-escaping="yes">&le;</xsl:text><xsl:value-of select="./@rangemax"/> + </xsl:when> + <xsl:when test="./@datatype='datespec'"> + ( + <xsl:for-each select="./bcf:field"> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())">,</xsl:if> + </xsl:for-each> + ) + must be dates + </xsl:when> + </xsl:choose> + </xsl:when> + </xsl:choose> + <xsl:choose> + <xsl:when test="./@type='mandatory'"> + <xsl:for-each select="./bcf:fieldxor"> + <xsl:text disable-output-escaping="yes">&oplus;</xsl:text> + ( + <xsl:for-each select="./bcf:field"> + <span> + <xsl:if test="./@coerce='true'"> + <xsl:attribute name="class">field_xor_coerce</xsl:attribute> + </xsl:if> + <xsl:value-of select="./text()"/> + </span> + <xsl:if test="not(position()=last())">,</xsl:if> + </xsl:for-each> + ) + </xsl:for-each> + <xsl:for-each select="./bcf:fieldor"> + <xsl:text disable-output-escaping="yes">&or;</xsl:text> + ( + <xsl:for-each select="./bcf:field"> + <xsl:value-of select="./text()"/> + <xsl:if test="not(position()=last())">,</xsl:if> + </xsl:for-each> + ) + </xsl:for-each> + </xsl:when> + </xsl:choose> + </li> + </xsl:for-each> + </ul> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + <div class="key"><u>Key</u> + <ul> + <li><tt>C</tt> <xsl:text disable-output-escaping="yes">&rarr;</xsl:text> <tt>C'</tt>: If condition <tt>C</tt> is met then condition <tt>C'</tt> must also be met</li> + <li><xsl:text disable-output-escaping="yes">&forall;</xsl:text> ( ... ): True if all fields in list exist</li> + <li><xsl:text disable-output-escaping="yes">&exist;</xsl:text> ( ... ): True if one field in list exists</li> + <li><xsl:text disable-output-escaping="yes">&not;&exist;</xsl:text> ( ... ): True if no fields in list exist</li> + <li><tt>n</tt> <xsl:text disable-output-escaping="yes">&le;</xsl:text> ( ... ) <xsl:text disable-output-escaping="yes">&le;</xsl:text> <tt>m</tt>: True if fields in list are have values in the range <tt>n</tt>-<tt>m</tt></li> + <li><xsl:text disable-output-escaping="yes">&oplus;</xsl:text> ( ... ): True if at least and at most one of the fields in the list exists (XOR). If more than field in the set exists, all will be ignored except for the one in <span class="field_xor_coerce">red</span></li> + <li><xsl:text disable-output-escaping="yes">&or;</xsl:text> ( ... ): True if at least one of the fields in the list exists (OR)</li> + </ul> + </div> + </xsl:if> + </xsl:if> + <hr/> + <h3>Reference Sections</h3> + <!-- Section 0 is special as it can be empty and there can be many of them --> + <h4>Section 0</h4> + <table> + <thead> + <tr><td>Data sources</td><td>Citekeys</td></tr> + </thead> + <tbody> + <tr> + <td> + <ul> + <xsl:for-each select="/bcf:controlfile/bcf:bibdata[@section='0']"> + <xsl:for-each select="./bcf:datasource"> + <li> + <xsl:value-of select="./text()"/> (<xsl:value-of select="./@datatype"/><xsl:text disable-output-escaping="yes">&nbsp;</xsl:text><xsl:value-of select="./@type"/>) + </li> + </xsl:for-each> + </xsl:for-each> + </ul> + </td> + <td> + <ul> + <xsl:for-each select="/bcf:controlfile/bcf:section[@number='0' and *]/bcf:citekey"> + <li><tt><xsl:value-of select="./text()"/></tt></li> + </xsl:for-each> + </ul> + </td> + </tr> + </tbody> + </table> + <xsl:for-each select="/bcf:controlfile/bcf:section[@number='0' and *]/bcf:sectionlist"> + <h5><u>Output list "<xsl:value-of select="./@label"/>"</u></h5> + <div> + <h6>Filters</h6> + <table> + <thead> + <tr><td>Filter type</td><td>Filter value</td></tr> + </thead> + <tbody> + <xsl:for-each select="./bcf:filter"> + <tr><td><xsl:value-of select="./@type"/></td><td><xsl:value-of select="./text()"/></td></tr> + </xsl:for-each> + </tbody> + </table> + </div> + <div> + <h6>Sorting Specification</h6> + <xsl:choose> + <xsl:when test="./bcf:sorting"> + <xsl:call-template name="sorting-spec"> + <xsl:with-param name="spec" select="./bcf:sorting"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + (global default) + </xsl:otherwise> + </xsl:choose> + </div> + </xsl:for-each> + <xsl:for-each select="/bcf:controlfile/bcf:section[@number != '0']"> + <!-- Save a varible pointing to the section number --> + <xsl:variable name="secnum" select="./@number"/> + <h4>Section <xsl:value-of select="$secnum"/></h4> + <table> + <thead> + <tr><td>Data sources</td><td>Citekeys</td></tr> + </thead> + <tbody> + <tr> + <td> + <ul> + <xsl:for-each select="/bcf:controlfile/bcf:bibdata[@section=$secnum]"> + <xsl:for-each select="./bcf:datasource"> + <li> + <xsl:value-of select="./text()"/> (<xsl:value-of select="./@datatype"/><xsl:text disable-output-escaping="yes">&nbsp;</xsl:text><xsl:value-of select="./@type"/>) + </li> + </xsl:for-each> + </xsl:for-each> + </ul> + </td> + <td> + <ul> + <xsl:for-each select="./bcf:citekey"> + <li><tt><xsl:value-of select="./text()"/></tt></li> + </xsl:for-each> + </ul> + </td> + </tr> + </tbody> + </table> + <xsl:for-each select="./bcf:sectionlist"> + <h5><u>Output list "<xsl:value-of select="./@label"/>"</u></h5> + <div> + <h6>Filters</h6> + <table> + <thead> + <tr><td>Filter type</td><td>Filter value</td></tr> + </thead> + <tbody> + <xsl:for-each select="./bcf:filter"> + <tr><td><xsl:value-of select="./@type"/></td><td><xsl:value-of select="./text()"/></td></tr> + </xsl:for-each> + </tbody> + </table> + </div> + <div> + <h6>Sorting Specification</h6> + <xsl:choose> + <xsl:when test="./bcf:sorting"> + <xsl:call-template name="sorting-spec"> + <xsl:with-param name="spec" select="./bcf:sorting"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + (global default) + </xsl:otherwise> + </xsl:choose> + </div> + </xsl:for-each> + </xsl:for-each> + </body> + </html> + </xsl:template> +</xsl:stylesheet> diff --git a/Master/texmf-dist/source/bibtex/biber/data/latinkeys.txt b/Master/texmf-dist/source/bibtex/biber/data/latinkeys.txt new file mode 100644 index 00000000000..3ac9239dae7 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/data/latinkeys.txt @@ -0,0 +1,1741 @@ +# unidata-5.1.0.txt +# Date: 2008-03-04, 10:55:08 PST [KW] +# +# This file defines the Default Unicode Collation Element Table +# (DUCET) for the Unicode Collation Algorithm +# +# Copyright (c) 2001-2008 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# See UTS #10, Unicode Collation Algorithm, for more information. +# +# Diagnostic weight ranges +# Primary weight range: 0200..3266 (12391) +# Secondary weight range: 0020..01DE (447) +# Variant secondaries: 01AF..01B4 (6) +# Digit secondaries: 01B5..01DE (42) +# Tertiary weight range: 0002..001F (30) +# +@version 5.1.0 + +0000 ; [.0000.0000.0000.0000] # [0000] NULL (in 6429) +0001 ; [.0000.0000.0000.0000] # [0001] START OF HEADING (in 6429) +0002 ; [.0000.0000.0000.0000] # [0002] START OF TEXT (in 6429) +0003 ; [.0000.0000.0000.0000] # [0003] END OF TEXT (in 6429) +0004 ; [.0000.0000.0000.0000] # [0004] END OF TRANSMISSION (in 6429) +0005 ; [.0000.0000.0000.0000] # [0005] ENQUIRY (in 6429) +0006 ; [.0000.0000.0000.0000] # [0006] ACKNOWLEDGE (in 6429) +0007 ; [.0000.0000.0000.0000] # [0007] BELL (in 6429) +0008 ; [.0000.0000.0000.0000] # [0008] BACKSPACE (in 6429) +000E ; [.0000.0000.0000.0000] # [000E] SHIFT OUT (in 6429) +000F ; [.0000.0000.0000.0000] # [000F] SHIFT IN (in 6429) +0010 ; [.0000.0000.0000.0000] # [0010] DATA LINK ESCAPE (in 6429) +0011 ; [.0000.0000.0000.0000] # [0011] DEVICE CONTROL ONE (in 6429) +0012 ; [.0000.0000.0000.0000] # [0012] DEVICE CONTROL TWO (in 6429) +0013 ; [.0000.0000.0000.0000] # [0013] DEVICE CONTROL THREE (in 6429) +0014 ; [.0000.0000.0000.0000] # [0014] DEVICE CONTROL FOUR (in 6429) +0015 ; [.0000.0000.0000.0000] # [0015] NEGATIVE ACKNOWLEDGE (in 6429) +0016 ; [.0000.0000.0000.0000] # [0016] SYNCHRONOUS IDLE (in 6429) +0017 ; [.0000.0000.0000.0000] # [0017] END OF TRANSMISSION BLOCK (in 6429) +0018 ; [.0000.0000.0000.0000] # [0018] CANCEL (in 6429) +0019 ; [.0000.0000.0000.0000] # [0019] END OF MEDIUM (in 6429) +001A ; [.0000.0000.0000.0000] # [001A] SUBSTITUTE (in 6429) +001B ; [.0000.0000.0000.0000] # [001B] ESCAPE (in 6429) +001C ; [.0000.0000.0000.0000] # [001C] FILE SEPARATOR (in 6429) +001D ; [.0000.0000.0000.0000] # [001D] GROUP SEPARATOR (in 6429) +001E ; [.0000.0000.0000.0000] # [001E] RECORD SEPARATOR (in 6429) +001F ; [.0000.0000.0000.0000] # [001F] UNIT SEPARATOR (in 6429) +007F ; [.0000.0000.0000.0000] # [007F] DELETE (in 6429) +0080 ; [.0000.0000.0000.0000] # [0080] <control> +0081 ; [.0000.0000.0000.0000] # [0081] <control> +0082 ; [.0000.0000.0000.0000] # [0082] BREAK PERMITTED HERE (in 6429) +0083 ; [.0000.0000.0000.0000] # [0083] NO BREAK HERE (in 6429) +0084 ; [.0000.0000.0000.0000] # [0084] <control> +0086 ; [.0000.0000.0000.0000] # [0086] START OF SELECTED AREA (in 6429) +0087 ; [.0000.0000.0000.0000] # [0087] END OF SELECTED AREA (in 6429) +0088 ; [.0000.0000.0000.0000] # [0088] CHARACTER TABULATION SET (in 6429) +0089 ; [.0000.0000.0000.0000] # [0089] CHARACTER TABULATION WITH JUSTIFICATION (in 6429) +008A ; [.0000.0000.0000.0000] # [008A] LINE TABULATION SET (in 6429) +008B ; [.0000.0000.0000.0000] # [008B] PARTIAL LINE FORWARD (in 6429) +008C ; [.0000.0000.0000.0000] # [008C] PARTIAL LINE BACKWARD (in 6429) +008D ; [.0000.0000.0000.0000] # [008D] PARTIAL LINE FEED (in 6429) +008E ; [.0000.0000.0000.0000] # [008E] SINGLE SHIFT TWO (in 6429) +008F ; [.0000.0000.0000.0000] # [008F] SINGLE SHIFT THREE (in 6429) +0090 ; [.0000.0000.0000.0000] # [0090] DEVICE CONTROL STRING (in 6429) +0091 ; [.0000.0000.0000.0000] # [0091] PRIVATE USE ONE (in 6429) +0092 ; [.0000.0000.0000.0000] # [0092] PRIVATE USE TWO (in 6429) +0093 ; [.0000.0000.0000.0000] # [0093] SET TRANSMIT STATE (in 6429) +0094 ; [.0000.0000.0000.0000] # [0094] CANCEL CHARACTER (in 6429) +0095 ; [.0000.0000.0000.0000] # [0095] MESSAGE WAITING (in 6429) +0096 ; [.0000.0000.0000.0000] # [0096] START OF GUARDED AREA (in 6429) +0097 ; [.0000.0000.0000.0000] # [0097] END OF GUARDED AREA (in 6429) +0098 ; [.0000.0000.0000.0000] # [0098] START OF STRING (in 6429) +0099 ; [.0000.0000.0000.0000] # [0099] <control> +009A ; [.0000.0000.0000.0000] # [009A] SINGLE CHARACTER INTRODUCER (in 6429) +009B ; [.0000.0000.0000.0000] # [009B] CONTROL SEQUENCE INTRODUCER (in 6429) +009C ; [.0000.0000.0000.0000] # [009C] STRING TERMINATOR (in 6429) +009D ; [.0000.0000.0000.0000] # [009D] OPERATING SYSTEM COMMAND (in 6429) +009E ; [.0000.0000.0000.0000] # [009E] PRIVACY MESSAGE (in 6429) +009F ; [.0000.0000.0000.0000] # [009F] APPLICATION PROGRAM COMMAND (in 6429) +0009 ; [*0201.0020.0002.0009] # HORIZONTAL TABULATION (in 6429) +000A ; [*0202.0020.0002.000A] # LINE FEED (in 6429) +000B ; [*0203.0020.0002.000B] # VERTICAL TABULATION (in 6429) +000C ; [*0204.0020.0002.000C] # FORM FEED (in 6429) +000D ; [*0205.0020.0002.000D] # CARRIAGE RETURN (in 6429) +0020 ; [*0209.0020.0002.0020] # SPACE +0021 ; [*0258.0020.0002.0021] # EXCLAMATION MARK +0022 ; [*02BE.0020.0002.0022] # QUOTATION MARK +0023 ; [*032B.0020.0002.0023] # NUMBER SIGN +0025 ; [*032C.0020.0002.0025] # PERCENT SIGN +0026 ; [*0328.0020.0002.0026] # AMPERSAND +0027 ; [*02B7.0020.0002.0027] # APOSTROPHE +0028 ; [*02C8.0020.0002.0028] # LEFT PARENTHESIS +0029 ; [*02C9.0020.0002.0029] # RIGHT PARENTHESIS +002A ; [*0320.0020.0002.002A] # ASTERISK +002B ; [*04FC.0020.0002.002B] # PLUS SIGN +002C ; [*0232.0020.0002.002C] # COMMA +002D ; [*0222.0020.0002.002D] # HYPHEN-MINUS +002E ; [*026A.0020.0002.002E] # FULL STOP +002F ; [*0325.0020.0002.002F] # SOLIDUS +003A ; [*0242.0020.0002.003A] # COLON +003B ; [*023F.0020.0002.003B] # SEMICOLON +003C ; [*0500.0020.0002.003C] # LESS-THAN SIGN +003D ; [*0501.0020.0002.003D] # EQUALS SIGN +003E ; [*0502.0020.0002.003E] # GREATER-THAN SIGN +003F ; [*025D.0020.0002.003F] # QUESTION MARK +0040 ; [*031F.0020.0002.0040] # COMMERCIAL AT +005B ; [*02CA.0020.0002.005B] # LEFT SQUARE BRACKET +005C ; [*0327.0020.0002.005C] # REVERSE SOLIDUS +005D ; [*02CB.0020.0002.005D] # RIGHT SQUARE BRACKET +005E ; [*0210.0020.0002.005E] # CIRCUMFLEX ACCENT +005F ; [*021C.0020.0002.005F] # LOW LINE +0060 ; [*020D.0020.0002.0060] # GRAVE ACCENT +007B ; [*02CC.0020.0002.007B] # LEFT CURLY BRACKET +007C ; [*0504.0020.0002.007C] # VERTICAL LINE +007D ; [*02CD.0020.0002.007D] # RIGHT CURLY BRACKET +007E ; [*0507.0020.0002.007E] # TILDE +0085 ; [*0206.0020.0002.0085] # NEXT LINE (in 6429) +00A0 ; [*0209.0020.001B.00A0] # NO-BREAK SPACE; QQK +00A1 ; [*0259.0020.0002.00A1] # INVERTED EXCLAMATION MARK +00A6 ; [*0505.0020.0002.00A6] # BROKEN BAR +00A7 ; [*031A.0020.0002.00A7] # SECTION SIGN +00A8 ; [*0215.0020.0002.00A8] # DIAERESIS +00A9 ; [*031D.0020.0002.00A9] # COPYRIGHT SIGN +00AB ; [*02C6.0020.0002.00AB] # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +00AC ; [*0503.0020.0002.00AC] # NOT SIGN +00AD ; [*0221.0020.0002.00AD] # SOFT HYPHEN +00AE ; [*031E.0020.0002.00AE] # REGISTERED SIGN +00AF ; [*0211.0020.0002.00AF] # MACRON +00B0 ; [*03FE.0020.0002.00B0] # DEGREE SIGN +00B1 ; [*04FD.0020.0002.00B1] # PLUS-MINUS SIGN +00B4 ; [*020E.0020.0002.00B4] # ACUTE ACCENT +00B6 ; [*031B.0020.0002.00B6] # PILCROW SIGN +00B7 ; [*0279.0020.0002.00B7] # MIDDLE DOT +00B8 ; [*021A.0020.0002.00B8] # CEDILLA +00BB ; [*02C7.0020.0002.00BB] # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +00BF ; [*025E.0020.0002.00BF] # INVERTED QUESTION MARK +00D7 ; [*04FF.0020.0002.00D7] # MULTIPLICATION SIGN +00F7 ; [*04FE.0020.0002.00F7] # DIVISION SIGN +2000 ; [*0209.0020.0004.2000] # EN QUAD; QQK +2001 ; [*0209.0020.0004.2001] # EM QUAD; QQK +2002 ; [*0209.0020.0004.2002] # EN SPACE; QQK +2003 ; [*0209.0020.0004.2003] # EM SPACE; QQK +2004 ; [*0209.0020.0004.2004] # THREE-PER-EM SPACE; QQK +2005 ; [*0209.0020.0004.2005] # FOUR-PER-EM SPACE; QQK +2006 ; [*0209.0020.0004.2006] # SIX-PER-EM SPACE; QQK +2007 ; [*0209.0020.001B.2007] # FIGURE SPACE; QQK +2008 ; [*0209.0020.0004.2008] # PUNCTUATION SPACE; QQK +2009 ; [*0209.0020.0004.2009] # THIN SPACE; QQK +200A ; [*0209.0020.0004.200A] # HAIR SPACE; QQK +2010 ; [*0227.0020.0002.2010] # HYPHEN +2011 ; [*0227.0020.001B.2011] # NON-BREAKING HYPHEN; QQK +2012 ; [*0228.0020.0002.2012] # FIGURE DASH +2013 ; [*0229.0020.0002.2013] # EN DASH +2014 ; [*022A.0020.0002.2014] # EM DASH +2015 ; [*022B.0020.0002.2015] # HORIZONTAL BAR +2016 ; [*0506.0020.0002.2016] # DOUBLE VERTICAL LINE +2017 ; [*021D.0020.0002.2017] # DOUBLE LOW LINE +2018 ; [*02B8.0020.0002.2018] # LEFT SINGLE QUOTATION MARK +2019 ; [*02B9.0020.0002.2019] # RIGHT SINGLE QUOTATION MARK +201A ; [*02BA.0020.0002.201A] # SINGLE LOW-9 QUOTATION MARK +201B ; [*02BB.0020.0002.201B] # SINGLE HIGH-REVERSED-9 QUOTATION MARK +201C ; [*02BF.0020.0002.201C] # LEFT DOUBLE QUOTATION MARK +201D ; [*02C0.0020.0002.201D] # RIGHT DOUBLE QUOTATION MARK +201E ; [*02C1.0020.0002.201E] # DOUBLE LOW-9 QUOTATION MARK +201F ; [*02C2.0020.0002.201F] # DOUBLE HIGH-REVERSED-9 QUOTATION MARK +2020 ; [*0333.0020.0002.2020] # DAGGER +2021 ; [*0334.0020.0002.2021] # DOUBLE DAGGER +2022 ; [*0335.0020.0002.2022] # BULLET +0030 ; [.1137.0020.0002.0030] # DIGIT ZERO +FF10 ; [.1137.0020.0003.FF10] # FULLWIDTH DIGIT ZERO; QQK +1D7CE ; [.1137.0020.0005.1D7CE] # MATHEMATICAL BOLD DIGIT ZERO; QQK +1D7D8 ; [.1137.0020.0005.1D7D8] # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO; QQK +1D7E2 ; [.1137.0020.0005.1D7E2] # MATHEMATICAL SANS-SERIF DIGIT ZERO; QQK +1D7EC ; [.1137.0020.0005.1D7EC] # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO; QQK +1D7F6 ; [.1137.0020.0005.1D7F6] # MATHEMATICAL MONOSPACE DIGIT ZERO; QQK +24EA ; [.1137.0020.0006.24EA] # CIRCLED DIGIT ZERO; QQK +24FF ; [.1137.0020.0006.24FF] # NEGATIVE CIRCLED DIGIT ZERO; QQK +2070 ; [.1137.0020.0014.2070] # SUPERSCRIPT ZERO; QQK +2080 ; [.1137.0020.0015.2080] # SUBSCRIPT ZERO; QQK +0031 ; [.1138.0020.0002.0031] # DIGIT ONE +FF11 ; [.1138.0020.0003.FF11] # FULLWIDTH DIGIT ONE; QQK +2474 ; [*02C8.0020.0004.2474][.1138.0020.0004.2474][*02C9.0020.001F.2474] # PARENTHESIZED DIGIT ONE; QQKN +2488 ; [.1138.0020.0004.2488][*026A.0020.0004.2488] # DIGIT ONE FULL STOP; QQKN +1D7CF ; [.1138.0020.0005.1D7CF] # MATHEMATICAL BOLD DIGIT ONE; QQK +1D7D9 ; [.1138.0020.0005.1D7D9] # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE; QQK +1D7E3 ; [.1138.0020.0005.1D7E3] # MATHEMATICAL SANS-SERIF DIGIT ONE; QQK +1D7ED ; [.1138.0020.0005.1D7ED] # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE; QQK +1D7F7 ; [.1138.0020.0005.1D7F7] # MATHEMATICAL MONOSPACE DIGIT ONE; QQK +2460 ; [.1138.0020.0006.2460] # CIRCLED DIGIT ONE; QQK +24F5 ; [.1138.0020.0006.24F5] # DOUBLE CIRCLED DIGIT ONE; QQK +2776 ; [.1138.0020.0006.2776] # DINGBAT NEGATIVE CIRCLED DIGIT ONE; QQK +2780 ; [.1138.0020.0006.2780] # DINGBAT CIRCLED SANS-SERIF DIGIT ONE; QQK +278A ; [.1138.0020.0006.278A] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE; QQK +00B9 ; [.1138.0020.0014.00B9] # SUPERSCRIPT ONE; QQK +2081 ; [.1138.0020.0015.2081] # SUBSCRIPT ONE; QQK +215F ; [.1138.0020.001E.215F][*0326.0020.001E.215F] # FRACTION NUMERATOR ONE; QQKN +2491 ; [.1138.0020.0004.2491][.1137.0020.0004.2491][*026A.0020.001F.2491] # NUMBER TEN FULL STOP; QQKN +247D ; [*02C8.0020.0004.247D][.1138.0020.0004.247D][.1137.0020.001F.247D][*02C9.0020.001F.247D] # PARENTHESIZED NUMBER TEN; QQKN +2469 ; [.1138.0020.0006.2469][.1137.0020.0006.2469] # CIRCLED NUMBER TEN; QQKN +24FE ; [.1138.0020.0006.24FE][.1137.0020.0006.24FE] # DOUBLE CIRCLED NUMBER TEN; QQKN +277F ; [.1138.0020.0006.277F][.1137.0020.0006.277F] # DINGBAT NEGATIVE CIRCLED NUMBER TEN; QQKN +2789 ; [.1138.0020.0006.2789][.1137.0020.0006.2789] # DINGBAT CIRCLED SANS-SERIF NUMBER TEN; QQKN +2793 ; [.1138.0020.0006.2793][.1137.0020.0006.2793] # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN; QQKN +2492 ; [.1138.0020.0004.2492][.1138.0020.0004.2492][*026A.0020.001F.2492] # NUMBER ELEVEN FULL STOP; QQKN +247E ; [*02C8.0020.0004.247E][.1138.0020.0004.247E][.1138.0020.001F.247E][*02C9.0020.001F.247E] # PARENTHESIZED NUMBER ELEVEN; QQKN +246A ; [.1138.0020.0006.246A][.1138.0020.0006.246A] # CIRCLED NUMBER ELEVEN; QQKN +24EB ; [.1138.0020.0006.24EB][.1138.0020.0006.24EB] # NEGATIVE CIRCLED NUMBER ELEVEN; QQKN +33EA ; [.1138.0020.0004.33EA][.1138.0020.0004.33EA][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN; QQKN +32CA ; [.1138.0020.0004.32CA][.1138.0020.0004.32CA][.FB40.0020.001F.6708][.E708.0000.0000.6708] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER; QQKN +3363 ; [.1138.0020.0004.3363][.1138.0020.0004.3363][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN; QQKN +2493 ; [.1138.0020.0004.2493][.1139.0020.0004.2493][*026A.0020.001F.2493] # NUMBER TWELVE FULL STOP; QQKN +247F ; [*02C8.0020.0004.247F][.1138.0020.0004.247F][.1139.0020.001F.247F][*02C9.0020.001F.247F] # PARENTHESIZED NUMBER TWELVE; QQKN +246B ; [.1138.0020.0006.246B][.1139.0020.0006.246B] # CIRCLED NUMBER TWELVE; QQKN +24EC ; [.1138.0020.0006.24EC][.1139.0020.0006.24EC] # NEGATIVE CIRCLED NUMBER TWELVE; QQKN +00BD ; [.1138.0020.001E.00BD][*0326.0020.001E.00BD][.1139.0020.001F.00BD] # VULGAR FRACTION ONE HALF; QQKN +2494 ; [.1138.0020.0004.2494][.113A.0020.0004.2494][*026A.0020.001F.2494] # NUMBER THIRTEEN FULL STOP; QQKN +2480 ; [*02C8.0020.0004.2480][.1138.0020.0004.2480][.113A.0020.001F.2480][*02C9.0020.001F.2480] # PARENTHESIZED NUMBER THIRTEEN; QQKN +246C ; [.1138.0020.0006.246C][.113A.0020.0006.246C] # CIRCLED NUMBER THIRTEEN; QQKN +24ED ; [.1138.0020.0006.24ED][.113A.0020.0006.24ED] # NEGATIVE CIRCLED NUMBER THIRTEEN; QQKN +2153 ; [.1138.0020.001E.2153][*0326.0020.001E.2153][.113A.0020.001F.2153] # VULGAR FRACTION ONE THIRD; QQKN +33EC ; [.1138.0020.0004.33EC][.113A.0020.0004.33EC][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN; QQKN +3365 ; [.1138.0020.0004.3365][.113A.0020.0004.3365][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN; QQKN +2495 ; [.1138.0020.0004.2495][.113B.0020.0004.2495][*026A.0020.001F.2495] # NUMBER FOURTEEN FULL STOP; QQKN +2481 ; [*02C8.0020.0004.2481][.1138.0020.0004.2481][.113B.0020.001F.2481][*02C9.0020.001F.2481] # PARENTHESIZED NUMBER FOURTEEN; QQKN +246D ; [.1138.0020.0006.246D][.113B.0020.0006.246D] # CIRCLED NUMBER FOURTEEN; QQKN +24EE ; [.1138.0020.0006.24EE][.113B.0020.0006.24EE] # NEGATIVE CIRCLED NUMBER FOURTEEN; QQKN +00BC ; [.1138.0020.001E.00BC][*0326.0020.001E.00BC][.113B.0020.001F.00BC] # VULGAR FRACTION ONE QUARTER; QQKN +33ED ; [.1138.0020.0004.33ED][.113B.0020.0004.33ED][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN; QQKN +3366 ; [.1138.0020.0004.3366][.113B.0020.0004.3366][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN; QQKN +2496 ; [.1138.0020.0004.2496][.113C.0020.0004.2496][*026A.0020.001F.2496] # NUMBER FIFTEEN FULL STOP; QQKN +2482 ; [*02C8.0020.0004.2482][.1138.0020.0004.2482][.113C.0020.001F.2482][*02C9.0020.001F.2482] # PARENTHESIZED NUMBER FIFTEEN; QQKN +246E ; [.1138.0020.0006.246E][.113C.0020.0006.246E] # CIRCLED NUMBER FIFTEEN; QQKN +24EF ; [.1138.0020.0006.24EF][.113C.0020.0006.24EF] # NEGATIVE CIRCLED NUMBER FIFTEEN; QQKN +2155 ; [.1138.0020.001E.2155][*0326.0020.001E.2155][.113C.0020.001F.2155] # VULGAR FRACTION ONE FIFTH; QQKN +33EE ; [.1138.0020.0004.33EE][.113C.0020.0004.33EE][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN; QQKN +3367 ; [.1138.0020.0004.3367][.113C.0020.0004.3367][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN; QQKN +2497 ; [.1138.0020.0004.2497][.113D.0020.0004.2497][*026A.0020.001F.2497] # NUMBER SIXTEEN FULL STOP; QQKN +2483 ; [*02C8.0020.0004.2483][.1138.0020.0004.2483][.113D.0020.001F.2483][*02C9.0020.001F.2483] # PARENTHESIZED NUMBER SIXTEEN; QQKN +246F ; [.1138.0020.0006.246F][.113D.0020.0006.246F] # CIRCLED NUMBER SIXTEEN; QQKN +24F0 ; [.1138.0020.0006.24F0][.113D.0020.0006.24F0] # NEGATIVE CIRCLED NUMBER SIXTEEN; QQKN +2159 ; [.1138.0020.001E.2159][*0326.0020.001E.2159][.113D.0020.001F.2159] # VULGAR FRACTION ONE SIXTH; QQKN +33EF ; [.1138.0020.0004.33EF][.113D.0020.0004.33EF][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN; QQKN +3368 ; [.1138.0020.0004.3368][.113D.0020.0004.3368][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN; QQKN +2498 ; [.1138.0020.0004.2498][.113E.0020.0004.2498][*026A.0020.001F.2498] # NUMBER SEVENTEEN FULL STOP; QQKN +2484 ; [*02C8.0020.0004.2484][.1138.0020.0004.2484][.113E.0020.001F.2484][*02C9.0020.001F.2484] # PARENTHESIZED NUMBER SEVENTEEN; QQKN +2470 ; [.1138.0020.0006.2470][.113E.0020.0006.2470] # CIRCLED NUMBER SEVENTEEN; QQKN +24F1 ; [.1138.0020.0006.24F1][.113E.0020.0006.24F1] # NEGATIVE CIRCLED NUMBER SEVENTEEN; QQKN +2499 ; [.1138.0020.0004.2499][.113F.0020.0004.2499][*026A.0020.001F.2499] # NUMBER EIGHTEEN FULL STOP; QQKN +2485 ; [*02C8.0020.0004.2485][.1138.0020.0004.2485][.113F.0020.001F.2485][*02C9.0020.001F.2485] # PARENTHESIZED NUMBER EIGHTEEN; QQKN +2471 ; [.1138.0020.0006.2471][.113F.0020.0006.2471] # CIRCLED NUMBER EIGHTEEN; QQKN +24F2 ; [.1138.0020.0006.24F2][.113F.0020.0006.24F2] # NEGATIVE CIRCLED NUMBER EIGHTEEN; QQKN +215B ; [.1138.0020.001E.215B][*0326.0020.001E.215B][.113F.0020.001F.215B] # VULGAR FRACTION ONE EIGHTH; QQKN +33F1 ; [.1138.0020.0004.33F1][.113F.0020.0004.33F1][.FB40.0020.001F.65E5][.E5E5.0000.0000.65E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN; QQKN +336A ; [.1138.0020.0004.336A][.113F.0020.0004.336A][.FB40.0020.001F.70B9][.F0B9.0000.0000.70B9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN; QQKN +249A ; [.1138.0020.0004.249A][.1140.0020.0004.249A][*026A.0020.001F.249A] # NUMBER NINETEEN FULL STOP; QQKN +2486 ; [*02C8.0020.0004.2486][.1138.0020.0004.2486][.1140.0020.001F.2486][*02C9.0020.001F.2486] # PARENTHESIZED NUMBER NINETEEN; QQKN +2472 ; [.1138.0020.0006.2472][.1140.0020.0006.2472] # CIRCLED NUMBER NINETEEN; QQKN +24F3 ; [.1138.0020.0006.24F3][.1140.0020.0006.24F3] # NEGATIVE CIRCLED NUMBER NINETEEN; QQKN +0032 ; [.1139.0020.0002.0032] # DIGIT TWO +FF12 ; [.1139.0020.0003.FF12] # FULLWIDTH DIGIT TWO; QQK +2475 ; [*02C8.0020.0004.2475][.1139.0020.0004.2475][*02C9.0020.001F.2475] # PARENTHESIZED DIGIT TWO; QQKN +2489 ; [.1139.0020.0004.2489][*026A.0020.0004.2489] # DIGIT TWO FULL STOP; QQKN +1D7D0 ; [.1139.0020.0005.1D7D0] # MATHEMATICAL BOLD DIGIT TWO; QQK +1D7DA ; [.1139.0020.0005.1D7DA] # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO; QQK +1D7E4 ; [.1139.0020.0005.1D7E4] # MATHEMATICAL SANS-SERIF DIGIT TWO; QQK +1D7EE ; [.1139.0020.0005.1D7EE] # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO; QQK +1D7F8 ; [.1139.0020.0005.1D7F8] # MATHEMATICAL MONOSPACE DIGIT TWO; QQK +2461 ; [.1139.0020.0006.2461] # CIRCLED DIGIT TWO; QQK +24F6 ; [.1139.0020.0006.24F6] # DOUBLE CIRCLED DIGIT TWO; QQK +2777 ; [.1139.0020.0006.2777] # DINGBAT NEGATIVE CIRCLED DIGIT TWO; QQK +2781 ; [.1139.0020.0006.2781] # DINGBAT CIRCLED SANS-SERIF DIGIT TWO; QQK +278B ; [.1139.0020.0006.278B] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO; QQK +00B2 ; [.1139.0020.0014.00B2] # SUPERSCRIPT TWO; QQK +2082 ; [.1139.0020.0015.2082] # SUBSCRIPT TWO; QQK +0033 ; [.113A.0020.0002.0033] # DIGIT THREE +FF13 ; [.113A.0020.0003.FF13] # FULLWIDTH DIGIT THREE; QQK +2476 ; [*02C8.0020.0004.2476][.113A.0020.0004.2476][*02C9.0020.001F.2476] # PARENTHESIZED DIGIT THREE; QQKN +248A ; [.113A.0020.0004.248A][*026A.0020.0004.248A] # DIGIT THREE FULL STOP; QQKN +1D7D1 ; [.113A.0020.0005.1D7D1] # MATHEMATICAL BOLD DIGIT THREE; QQK +1D7DB ; [.113A.0020.0005.1D7DB] # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE; QQK +1D7E5 ; [.113A.0020.0005.1D7E5] # MATHEMATICAL SANS-SERIF DIGIT THREE; QQK +1D7EF ; [.113A.0020.0005.1D7EF] # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE; QQK +1D7F9 ; [.113A.0020.0005.1D7F9] # MATHEMATICAL MONOSPACE DIGIT THREE; QQK +2462 ; [.113A.0020.0006.2462] # CIRCLED DIGIT THREE; QQK +24F7 ; [.113A.0020.0006.24F7] # DOUBLE CIRCLED DIGIT THREE; QQK +2778 ; [.113A.0020.0006.2778] # DINGBAT NEGATIVE CIRCLED DIGIT THREE; QQK +2782 ; [.113A.0020.0006.2782] # DINGBAT CIRCLED SANS-SERIF DIGIT THREE; QQK +278C ; [.113A.0020.0006.278C] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE; QQK +00B3 ; [.113A.0020.0014.00B3] # SUPERSCRIPT THREE; QQK +2083 ; [.113A.0020.0015.2083] # SUBSCRIPT THREE; QQK +0034 ; [.113B.0020.0002.0034] # DIGIT FOUR +FF14 ; [.113B.0020.0003.FF14] # FULLWIDTH DIGIT FOUR; QQK +2477 ; [*02C8.0020.0004.2477][.113B.0020.0004.2477][*02C9.0020.001F.2477] # PARENTHESIZED DIGIT FOUR; QQKN +248B ; [.113B.0020.0004.248B][*026A.0020.0004.248B] # DIGIT FOUR FULL STOP; QQKN +1D7D2 ; [.113B.0020.0005.1D7D2] # MATHEMATICAL BOLD DIGIT FOUR; QQK +1D7DC ; [.113B.0020.0005.1D7DC] # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR; QQK +1D7E6 ; [.113B.0020.0005.1D7E6] # MATHEMATICAL SANS-SERIF DIGIT FOUR; QQK +1D7F0 ; [.113B.0020.0005.1D7F0] # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR; QQK +1D7FA ; [.113B.0020.0005.1D7FA] # MATHEMATICAL MONOSPACE DIGIT FOUR; QQK +2463 ; [.113B.0020.0006.2463] # CIRCLED DIGIT FOUR; QQK +24F8 ; [.113B.0020.0006.24F8] # DOUBLE CIRCLED DIGIT FOUR; QQK +2779 ; [.113B.0020.0006.2779] # DINGBAT NEGATIVE CIRCLED DIGIT FOUR; QQK +2783 ; [.113B.0020.0006.2783] # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR; QQK +278D ; [.113B.0020.0006.278D] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR; QQK +2074 ; [.113B.0020.0014.2074] # SUPERSCRIPT FOUR; QQK +2084 ; [.113B.0020.0015.2084] # SUBSCRIPT FOUR; QQK +0035 ; [.113C.0020.0002.0035] # DIGIT FIVE +FF15 ; [.113C.0020.0003.FF15] # FULLWIDTH DIGIT FIVE; QQK +2478 ; [*02C8.0020.0004.2478][.113C.0020.0004.2478][*02C9.0020.001F.2478] # PARENTHESIZED DIGIT FIVE; QQKN +248C ; [.113C.0020.0004.248C][*026A.0020.0004.248C] # DIGIT FIVE FULL STOP; QQKN +1D7D3 ; [.113C.0020.0005.1D7D3] # MATHEMATICAL BOLD DIGIT FIVE; QQK +1D7DD ; [.113C.0020.0005.1D7DD] # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE; QQK +1D7E7 ; [.113C.0020.0005.1D7E7] # MATHEMATICAL SANS-SERIF DIGIT FIVE; QQK +1D7F1 ; [.113C.0020.0005.1D7F1] # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE; QQK +1D7FB ; [.113C.0020.0005.1D7FB] # MATHEMATICAL MONOSPACE DIGIT FIVE; QQK +2464 ; [.113C.0020.0006.2464] # CIRCLED DIGIT FIVE; QQK +24F9 ; [.113C.0020.0006.24F9] # DOUBLE CIRCLED DIGIT FIVE; QQK +277A ; [.113C.0020.0006.277A] # DINGBAT NEGATIVE CIRCLED DIGIT FIVE; QQK +2784 ; [.113C.0020.0006.2784] # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE; QQK +278E ; [.113C.0020.0006.278E] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE; QQK +2075 ; [.113C.0020.0014.2075] # SUPERSCRIPT FIVE; QQK +2085 ; [.113C.0020.0015.2085] # SUBSCRIPT FIVE; QQK +0036 ; [.113D.0020.0002.0036] # DIGIT SIX +FF16 ; [.113D.0020.0003.FF16] # FULLWIDTH DIGIT SIX; QQK +2479 ; [*02C8.0020.0004.2479][.113D.0020.0004.2479][*02C9.0020.001F.2479] # PARENTHESIZED DIGIT SIX; QQKN +248D ; [.113D.0020.0004.248D][*026A.0020.0004.248D] # DIGIT SIX FULL STOP; QQKN +1D7D4 ; [.113D.0020.0005.1D7D4] # MATHEMATICAL BOLD DIGIT SIX; QQK +1D7DE ; [.113D.0020.0005.1D7DE] # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX; QQK +1D7E8 ; [.113D.0020.0005.1D7E8] # MATHEMATICAL SANS-SERIF DIGIT SIX; QQK +1D7F2 ; [.113D.0020.0005.1D7F2] # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX; QQK +1D7FC ; [.113D.0020.0005.1D7FC] # MATHEMATICAL MONOSPACE DIGIT SIX; QQK +2465 ; [.113D.0020.0006.2465] # CIRCLED DIGIT SIX; QQK +24FA ; [.113D.0020.0006.24FA] # DOUBLE CIRCLED DIGIT SIX; QQK +277B ; [.113D.0020.0006.277B] # DINGBAT NEGATIVE CIRCLED DIGIT SIX; QQK +2785 ; [.113D.0020.0006.2785] # DINGBAT CIRCLED SANS-SERIF DIGIT SIX; QQK +278F ; [.113D.0020.0006.278F] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX; QQK +2076 ; [.113D.0020.0014.2076] # SUPERSCRIPT SIX; QQK +2086 ; [.113D.0020.0015.2086] # SUBSCRIPT SIX; QQK +0037 ; [.113E.0020.0002.0037] # DIGIT SEVEN +FF17 ; [.113E.0020.0003.FF17] # FULLWIDTH DIGIT SEVEN; QQK +247A ; [*02C8.0020.0004.247A][.113E.0020.0004.247A][*02C9.0020.001F.247A] # PARENTHESIZED DIGIT SEVEN; QQKN +248E ; [.113E.0020.0004.248E][*026A.0020.0004.248E] # DIGIT SEVEN FULL STOP; QQKN +1D7D5 ; [.113E.0020.0005.1D7D5] # MATHEMATICAL BOLD DIGIT SEVEN; QQK +1D7DF ; [.113E.0020.0005.1D7DF] # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN; QQK +1D7E9 ; [.113E.0020.0005.1D7E9] # MATHEMATICAL SANS-SERIF DIGIT SEVEN; QQK +1D7F3 ; [.113E.0020.0005.1D7F3] # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN; QQK +1D7FD ; [.113E.0020.0005.1D7FD] # MATHEMATICAL MONOSPACE DIGIT SEVEN; QQK +2466 ; [.113E.0020.0006.2466] # CIRCLED DIGIT SEVEN; QQK +24FB ; [.113E.0020.0006.24FB] # DOUBLE CIRCLED DIGIT SEVEN; QQK +277C ; [.113E.0020.0006.277C] # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN; QQK +2786 ; [.113E.0020.0006.2786] # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN; QQK +2790 ; [.113E.0020.0006.2790] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN; QQK +2077 ; [.113E.0020.0014.2077] # SUPERSCRIPT SEVEN; QQK +2087 ; [.113E.0020.0015.2087] # SUBSCRIPT SEVEN; QQK +0038 ; [.113F.0020.0002.0038] # DIGIT EIGHT +FF18 ; [.113F.0020.0003.FF18] # FULLWIDTH DIGIT EIGHT; QQK +247B ; [*02C8.0020.0004.247B][.113F.0020.0004.247B][*02C9.0020.001F.247B] # PARENTHESIZED DIGIT EIGHT; QQKN +248F ; [.113F.0020.0004.248F][*026A.0020.0004.248F] # DIGIT EIGHT FULL STOP; QQKN +1D7D6 ; [.113F.0020.0005.1D7D6] # MATHEMATICAL BOLD DIGIT EIGHT; QQK +1D7E0 ; [.113F.0020.0005.1D7E0] # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT; QQK +1D7EA ; [.113F.0020.0005.1D7EA] # MATHEMATICAL SANS-SERIF DIGIT EIGHT; QQK +1D7F4 ; [.113F.0020.0005.1D7F4] # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT; QQK +1D7FE ; [.113F.0020.0005.1D7FE] # MATHEMATICAL MONOSPACE DIGIT EIGHT; QQK +2467 ; [.113F.0020.0006.2467] # CIRCLED DIGIT EIGHT; QQK +24FC ; [.113F.0020.0006.24FC] # DOUBLE CIRCLED DIGIT EIGHT; QQK +277D ; [.113F.0020.0006.277D] # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT; QQK +2787 ; [.113F.0020.0006.2787] # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT; QQK +2791 ; [.113F.0020.0006.2791] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT; QQK +2078 ; [.113F.0020.0014.2078] # SUPERSCRIPT EIGHT; QQK +2088 ; [.113F.0020.0015.2088] # SUBSCRIPT EIGHT; QQK +0039 ; [.1140.0020.0002.0039] # DIGIT NINE +FF19 ; [.1140.0020.0003.FF19] # FULLWIDTH DIGIT NINE; QQK +247C ; [*02C8.0020.0004.247C][.1140.0020.0004.247C][*02C9.0020.001F.247C] # PARENTHESIZED DIGIT NINE; QQKN +2490 ; [.1140.0020.0004.2490][*026A.0020.0004.2490] # DIGIT NINE FULL STOP; QQKN +1D7D7 ; [.1140.0020.0005.1D7D7] # MATHEMATICAL BOLD DIGIT NINE; QQK +1D7E1 ; [.1140.0020.0005.1D7E1] # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE; QQK +1D7EB ; [.1140.0020.0005.1D7EB] # MATHEMATICAL SANS-SERIF DIGIT NINE; QQK +1D7F5 ; [.1140.0020.0005.1D7F5] # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE; QQK +1D7FF ; [.1140.0020.0005.1D7FF] # MATHEMATICAL MONOSPACE DIGIT NINE; QQK +2468 ; [.1140.0020.0006.2468] # CIRCLED DIGIT NINE; QQK +24FD ; [.1140.0020.0006.24FD] # DOUBLE CIRCLED DIGIT NINE; QQK +277E ; [.1140.0020.0006.277E] # DINGBAT NEGATIVE CIRCLED DIGIT NINE; QQK +2788 ; [.1140.0020.0006.2788] # DINGBAT CIRCLED SANS-SERIF DIGIT NINE; QQK +2792 ; [.1140.0020.0006.2792] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE; QQK +2079 ; [.1140.0020.0014.2079] # SUPERSCRIPT NINE; QQK +2089 ; [.1140.0020.0015.2089] # SUBSCRIPT NINE; QQK +0061 ; [.1141.0020.0002.0061] # LATIN SMALL LETTER A +24B6 ; [.1141.0020.000C.24B6] # CIRCLED LATIN CAPITAL LETTER A; QQK +00AA ; [.1141.0020.0014.00AA] # FEMININE ORDINAL INDICATOR; QQK +1D43 ; [.1141.0020.0014.1D43] # MODIFIER LETTER SMALL A; QQK +2090 ; [.1141.0020.0015.2090] # LATIN SUBSCRIPT SMALL LETTER A; QQK +1D2C ; [.1141.0020.001D.1D2C] # MODIFIER LETTER CAPITAL A; QQK +00E1 ; [.1141.0020.0002.0061][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH ACUTE; QQCM +00C1 ; [.1141.0020.0008.0041][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH ACUTE; QQCM +00E0 ; [.1141.0020.0002.0061][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH GRAVE; QQCM +00C0 ; [.1141.0020.0008.0041][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH GRAVE; QQCM +0103 ; [.1141.0020.0002.0061][.0000.0037.0002.0306] # LATIN SMALL LETTER A WITH BREVE; QQCM +0102 ; [.1141.0020.0008.0041][.0000.0037.0002.0306] # LATIN CAPITAL LETTER A WITH BREVE; QQCM +1EAF ; [.1141.0020.0002.0061][.0000.0037.0002.0306][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE; QQCM +1EAE ; [.1141.0020.0008.0041][.0000.0037.0002.0306][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE; QQCM +1EB1 ; [.1141.0020.0002.0061][.0000.0037.0002.0306][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE; QQCM +1EB0 ; [.1141.0020.0008.0041][.0000.0037.0002.0306][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE; QQCM +1EB5 ; [.1141.0020.0002.0061][.0000.0037.0002.0306][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE; QQCM +1EB4 ; [.1141.0020.0008.0041][.0000.0037.0002.0306][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE; QQCM +1EB3 ; [.1141.0020.0002.0061][.0000.0037.0002.0306][.0000.0060.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE; QQCM +1EB2 ; [.1141.0020.0008.0041][.0000.0037.0002.0306][.0000.0060.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE; QQCM +00E2 ; [.1141.0020.0002.0061][.0000.003C.0002.0302] # LATIN SMALL LETTER A WITH CIRCUMFLEX; QQCM +00C2 ; [.1141.0020.0008.0041][.0000.003C.0002.0302] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX; QQCM +1EA5 ; [.1141.0020.0002.0061][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE; QQCM +1EA4 ; [.1141.0020.0008.0041][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE; QQCM +1EA7 ; [.1141.0020.0002.0061][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE; QQCM +1EA6 ; [.1141.0020.0008.0041][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE; QQCM +1EAB ; [.1141.0020.0002.0061][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE; QQCM +1EAA ; [.1141.0020.0008.0041][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE; QQCM +1EA9 ; [.1141.0020.0002.0061][.0000.003C.0002.0302][.0000.0060.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE; QQCM +1EA8 ; [.1141.0020.0008.0041][.0000.003C.0002.0302][.0000.0060.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE; QQCM +01CE ; [.1141.0020.0002.0061][.0000.0041.0002.030C] # LATIN SMALL LETTER A WITH CARON; QQCM +01CD ; [.1141.0020.0008.0041][.0000.0041.0002.030C] # LATIN CAPITAL LETTER A WITH CARON; QQCM +00E5 ; [.1141.0020.0002.0061][.0000.0043.0002.030A] # LATIN SMALL LETTER A WITH RING ABOVE; QQCM +00C5 ; [.1141.0020.0008.0041][.0000.0043.0002.030A] # LATIN CAPITAL LETTER A WITH RING ABOVE; QQCM +212B ; [.1141.0020.0008.0041][.0000.0043.0002.030A] # ANGSTROM SIGN; QQCM +01FB ; [.1141.0020.0002.0061][.0000.0043.0002.030A][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE; QQCM +01FA ; [.1141.0020.0008.0041][.0000.0043.0002.030A][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE; QQCM +00E4 ; [.1141.0020.0002.0061][.0000.0047.0002.0308] # LATIN SMALL LETTER A WITH DIAERESIS; QQCM +00C4 ; [.1141.0020.0008.0041][.0000.0047.0002.0308] # LATIN CAPITAL LETTER A WITH DIAERESIS; QQCM +01DF ; [.1141.0020.0002.0061][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON; QQCM +01DE ; [.1141.0020.0008.0041][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON; QQCM +00E3 ; [.1141.0020.0002.0061][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH TILDE; QQCM +00C3 ; [.1141.0020.0008.0041][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH TILDE; QQCM +0227 ; [.1141.0020.0002.0061][.0000.0052.0002.0307] # LATIN SMALL LETTER A WITH DOT ABOVE; QQCM +0226 ; [.1141.0020.0008.0041][.0000.0052.0002.0307] # LATIN CAPITAL LETTER A WITH DOT ABOVE; QQCM +01E1 ; [.1141.0020.0002.0061][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON; QQCM +01E0 ; [.1141.0020.0008.0041][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON; QQCM +0105 ; [.1141.0020.0002.0061][.0000.0059.0002.0328] # LATIN SMALL LETTER A WITH OGONEK; QQCM +0104 ; [.1141.0020.0008.0041][.0000.0059.0002.0328] # LATIN CAPITAL LETTER A WITH OGONEK; QQCM +0101 ; [.1141.0020.0002.0061][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH MACRON; QQCM +0100 ; [.1141.0020.0008.0041][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH MACRON; QQCM +1EA3 ; [.1141.0020.0002.0061][.0000.0060.0002.0309] # LATIN SMALL LETTER A WITH HOOK ABOVE; QQCM +1EA2 ; [.1141.0020.0008.0041][.0000.0060.0002.0309] # LATIN CAPITAL LETTER A WITH HOOK ABOVE; QQCM +0201 ; [.1141.0020.0002.0061][.0000.0063.0002.030F] # LATIN SMALL LETTER A WITH DOUBLE GRAVE; QQCM +0200 ; [.1141.0020.0008.0041][.0000.0063.0002.030F] # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE; QQCM +0203 ; [.1141.0020.0002.0061][.0000.0065.0002.0311] # LATIN SMALL LETTER A WITH INVERTED BREVE; QQCM +0202 ; [.1141.0020.0008.0041][.0000.0065.0002.0311] # LATIN CAPITAL LETTER A WITH INVERTED BREVE; QQCM +1EA1 ; [.1141.0020.0002.0061][.0000.007A.0002.0323] # LATIN SMALL LETTER A WITH DOT BELOW; QQCM +1EA0 ; [.1141.0020.0008.0041][.0000.007A.0002.0323] # LATIN CAPITAL LETTER A WITH DOT BELOW; QQCM +1EB7 ; [.1141.0020.0002.0061][.0000.007A.0002.0323][.0000.0037.0002.0306] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW; QQCM +1EB6 ; [.1141.0020.0008.0041][.0000.007A.0002.0323][.0000.0037.0002.0306] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW; QQCM +1EAD ; [.1141.0020.0002.0061][.0000.007A.0002.0323][.0000.003C.0002.0302] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW; QQCM +1EAC ; [.1141.0020.0008.0041][.0000.007A.0002.0323][.0000.003C.0002.0302] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW; QQCM +1E01 ; [.1141.0020.0002.0061][.0000.0080.0002.0325] # LATIN SMALL LETTER A WITH RING BELOW; QQCM +1E00 ; [.1141.0020.0008.0041][.0000.0080.0002.0325] # LATIN CAPITAL LETTER A WITH RING BELOW; QQCM +1DD3 ; [.1141.0020.0004.1DD3][.0000.01AF.0004.1DD3] # COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE; QQKN +A733 ; [.1141.0020.0004.A733][.1141.0020.0004.A733] # LATIN SMALL LETTER AA; QQKN +A732 ; [.1141.0020.000A.A732][.1141.0020.000A.A732] # LATIN CAPITAL LETTER AA; QQKN +2100 ; [.1141.0020.0004.2100][*0325.0020.0004.2100][.116F.0020.001F.2100] # ACCOUNT OF; QQKN +00E6 ; [.1141.0020.0004.00E6][.0000.01AF.0004.00E6][.119D.0020.001F.00E6] # LATIN SMALL LETTER AE; QQKN +1DD4 ; [.1141.0020.0004.1DD4][.0000.01AF.0004.1DD4][.119D.0020.001F.1DD4] # COMBINING LATIN SMALL LETTER AE; QQKN +00C6 ; [.1141.0020.000A.00C6][.0000.01AF.0004.00C6][.119D.0020.001F.00C6] # LATIN CAPITAL LETTER AE; QQKN +1D2D ; [.1141.0020.0014.1D2D][.0000.01AF.0014.1D2D][.119D.0020.001F.1D2D] # MODIFIER LETTER CAPITAL AE; QQKN +01FD ; [.1141.0020.0004.01FD][.0000.01AF.0004.01FD][.119D.0020.001F.01FD][.0000.0032.0002.01FD] # LATIN SMALL LETTER AE WITH ACUTE; QQKN +01FC ; [.1141.0020.000A.01FC][.0000.01AF.0004.01FC][.119D.0020.001F.01FC][.0000.0032.0002.01FC] # LATIN CAPITAL LETTER AE WITH ACUTE; QQKN +01E3 ; [.1141.0020.0004.01E3][.0000.01AF.0004.01E3][.119D.0020.001F.01E3][.0000.005B.0002.01E3] # LATIN SMALL LETTER AE WITH MACRON; QQKN +01E2 ; [.1141.0020.000A.01E2][.0000.01AF.0004.01E2][.119D.0020.001F.01E2][.0000.005B.0002.01E2] # LATIN CAPITAL LETTER AE WITH MACRON; QQKN +33C2 ; [.1141.0020.001C.33C2][*026A.0020.001C.33C2][.1291.0020.001F.33C2][*026A.0020.001F.33C2] # SQUARE AM; QQKN +33DF ; [.1141.0020.001D.33DF][*050B.0020.001C.33DF][.1291.0020.001F.33DF] # SQUARE A OVER M; QQKN +1DD5 ; [.1141.0020.0004.1DD5][.12C0.0020.0004.1DD5] # COMBINING LATIN SMALL LETTER AO; QQKN +A735 ; [.1141.0020.0004.A735][.12C0.0020.0004.A735] # LATIN SMALL LETTER AO; QQKN +A734 ; [.1141.0020.000A.A734][.12C0.0020.000A.A734] # LATIN CAPITAL LETTER AO; QQKN +2101 ; [.1141.0020.0004.2101][*0325.0020.0004.2101][.1342.0020.001F.2101] # ADDRESSED TO THE SUBJECT; QQKN +A737 ; [.1141.0020.0004.A737][.1385.0020.0004.A737] # LATIN SMALL LETTER AU; QQKN +A736 ; [.1141.0020.000A.A736][.1385.0020.000A.A736] # LATIN CAPITAL LETTER AU; QQKN +3373 ; [.1141.0020.001D.3373][.1385.0020.001D.3373] # SQUARE AU; QQKN +1DD6 ; [.1141.0020.0004.1DD6][.13AD.0020.0004.1DD6] # COMBINING LATIN SMALL LETTER AV; QQKN +A739 ; [.1141.0020.0004.A739][.13AD.0020.0004.A739] # LATIN SMALL LETTER AV; QQKN +A738 ; [.1141.0020.000A.A738][.13AD.0020.000A.A738] # LATIN CAPITAL LETTER AV; QQKN +A73B ; [.1141.0020.0004.A73B][.0000.01AF.0004.A73B][.13AD.0020.001F.A73B] # LATIN SMALL LETTER AV WITH HORIZONTAL BAR; QQKN +A73A ; [.1141.0020.000A.A73A][.0000.01AF.0004.A73A][.13AD.0020.001F.A73A] # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR; QQKN +A73D ; [.1141.0020.0004.A73D][.13CE.0020.0004.A73D] # LATIN SMALL LETTER AY; QQKN +A73C ; [.1141.0020.000A.A73C][.13CE.0020.000A.A73C] # LATIN CAPITAL LETTER AY; QQKN +1E9A ; [.1141.0020.0004.1E9A][.143F.0020.0004.1E9A] # LATIN SMALL LETTER A WITH RIGHT HALF RING; QQKN +1D00 ; [.1145.0020.0002.1D00] # LATIN LETTER SMALL CAPITAL A +2C65 ; [.1146.0020.0002.2C65] # LATIN SMALL LETTER A WITH STROKE +023A ; [.1146.0020.0008.023A] # LATIN CAPITAL LETTER A WITH STROKE +1D8F ; [.1147.0020.0002.1D8F] # LATIN SMALL LETTER A WITH RETROFLEX HOOK +1D01 ; [.1148.0020.0002.1D01] # LATIN LETTER SMALL CAPITAL AE +1D02 ; [.1149.0020.0002.1D02] # LATIN SMALL LETTER TURNED AE +1D46 ; [.1149.0020.0014.1D46] # MODIFIER LETTER SMALL TURNED AE; QQK +0250 ; [.114A.0020.0002.0250] # LATIN SMALL LETTER TURNED A +2C6F ; [.114A.0020.0008.2C6F] # LATIN CAPITAL LETTER TURNED A +1D44 ; [.114A.0020.0014.1D44] # MODIFIER LETTER SMALL TURNED A; QQK +0251 ; [.114E.0020.0002.0251] # LATIN SMALL LETTER ALPHA +2C6D ; [.114E.0020.0008.2C6D] # LATIN CAPITAL LETTER ALPHA +1D45 ; [.114E.0020.0014.1D45] # MODIFIER LETTER SMALL ALPHA; QQK +1D90 ; [.1152.0020.0002.1D90] # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK +0252 ; [.1153.0020.0002.0252] # LATIN SMALL LETTER TURNED ALPHA +1D9B ; [.1153.0020.0014.1D9B] # MODIFIER LETTER SMALL TURNED ALPHA; QQK +0062 ; [.1157.0020.0002.0062] # LATIN SMALL LETTER B +FF42 ; [.1157.0020.0003.FF42] # FULLWIDTH LATIN SMALL LETTER B; QQK +249D ; [*02C8.0020.0004.249D][.1157.0020.0004.249D][*02C9.0020.001F.249D] # PARENTHESIZED LATIN SMALL LETTER B; QQKN +24D1 ; [.1157.0020.0006.24D1] # CIRCLED LATIN SMALL LETTER B; QQK +0042 ; [.1157.0020.0008.0042] # LATIN CAPITAL LETTER B +FF22 ; [.1157.0020.0009.FF22] # FULLWIDTH LATIN CAPITAL LETTER B; QQK +212C ; [.1157.0020.000B.212C] # SCRIPT CAPITAL B; QQK +24B7 ; [.1157.0020.000C.24B7] # CIRCLED LATIN CAPITAL LETTER B; QQK +1D47 ; [.1157.0020.0014.1D47] # MODIFIER LETTER SMALL B; QQK +1D2E ; [.1157.0020.001D.1D2E] # MODIFIER LETTER CAPITAL B; QQK +1E03 ; [.1157.0020.0002.0062][.0000.0052.0002.0307] # LATIN SMALL LETTER B WITH DOT ABOVE; QQCM +1E02 ; [.1157.0020.0008.0042][.0000.0052.0002.0307] # LATIN CAPITAL LETTER B WITH DOT ABOVE; QQCM +1E05 ; [.1157.0020.0002.0062][.0000.007A.0002.0323] # LATIN SMALL LETTER B WITH DOT BELOW; QQCM +1E04 ; [.1157.0020.0008.0042][.0000.007A.0002.0323] # LATIN CAPITAL LETTER B WITH DOT BELOW; QQCM +1E07 ; [.1157.0020.0002.0062][.0000.008A.0002.0331] # LATIN SMALL LETTER B WITH LINE BELOW; QQCM +1E06 ; [.1157.0020.0008.0042][.0000.008A.0002.0331] # LATIN CAPITAL LETTER B WITH LINE BELOW; QQCM +3374 ; [.1157.0020.001C.3374][.1141.0020.001C.3374][.130C.0020.001F.3374] # SQUARE BAR; QQKN +33C3 ; [.1157.0020.001D.33C3][.12FA.0020.001C.33C3] # SQUARE BQ; QQKN +0299 ; [.115B.0020.0002.0299] # LATIN LETTER SMALL CAPITAL B +0180 ; [.115F.0020.0002.0180] # LATIN SMALL LETTER B WITH STROKE +0243 ; [.115F.0020.0008.0243] # LATIN CAPITAL LETTER B WITH STROKE +1D2F ; [.1163.0020.0002.1D2F] # MODIFIER LETTER CAPITAL BARRED B +1D03 ; [.1164.0020.0002.1D03] # LATIN LETTER SMALL CAPITAL BARRED B +1D6C ; [.1165.0020.0002.1D6C] # LATIN SMALL LETTER B WITH MIDDLE TILDE +1D80 ; [.1166.0020.0002.1D80] # LATIN SMALL LETTER B WITH PALATAL HOOK +0253 ; [.1167.0020.0002.0253] # LATIN SMALL LETTER B WITH HOOK +0181 ; [.1167.0020.0008.0181] # LATIN CAPITAL LETTER B WITH HOOK +0183 ; [.116B.0020.0002.0183] # LATIN SMALL LETTER B WITH TOPBAR +0182 ; [.116B.0020.0008.0182] # LATIN CAPITAL LETTER B WITH TOPBAR +0063 ; [.116F.0020.0002.0063] # LATIN SMALL LETTER C +FF43 ; [.116F.0020.0003.FF43] # FULLWIDTH LATIN SMALL LETTER C; QQK +0368 ; [.116F.0020.0004.0368] # COMBINING LATIN SMALL LETTER C; QQK +217D ; [.116F.0020.0004.217D] # SMALL ROMAN NUMERAL ONE HUNDRED; QQK +249E ; [*02C8.0020.0004.249E][.116F.0020.0004.249E][*02C9.0020.001F.249E] # PARENTHESIZED LATIN SMALL LETTER C; QQKN +24D2 ; [.116F.0020.0006.24D2] # CIRCLED LATIN SMALL LETTER C; QQK +0043 ; [.116F.0020.0008.0043] # LATIN CAPITAL LETTER C +FF23 ; [.116F.0020.0009.FF23] # FULLWIDTH LATIN CAPITAL LETTER C; QQK +2103 ; [*03FE.0020.0004.2103][.116F.0020.000A.2103] # DEGREE CELSIUS; QQKN +216D ; [.116F.0020.000A.216D] # ROMAN NUMERAL ONE HUNDRED; QQK +2102 ; [.116F.0020.000B.2102] # DOUBLE-STRUCK CAPITAL C; QQK +212D ; [.116F.0020.000B.212D] # BLACK-LETTER CAPITAL C; QQK +24B8 ; [.116F.0020.000C.24B8] # CIRCLED LATIN CAPITAL LETTER C; QQK +1D9C ; [.116F.0020.0014.1D9C] # MODIFIER LETTER SMALL C; QQK +0107 ; [.116F.0020.0002.0063][.0000.0032.0002.0301] # LATIN SMALL LETTER C WITH ACUTE; QQCM +0106 ; [.116F.0020.0008.0043][.0000.0032.0002.0301] # LATIN CAPITAL LETTER C WITH ACUTE; QQCM +0109 ; [.116F.0020.0002.0063][.0000.003C.0002.0302] # LATIN SMALL LETTER C WITH CIRCUMFLEX; QQCM +0108 ; [.116F.0020.0008.0043][.0000.003C.0002.0302] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX; QQCM +010D ; [.116F.0020.0002.0063][.0000.0041.0002.030C] # LATIN SMALL LETTER C WITH CARON; QQCM +010C ; [.116F.0020.0008.0043][.0000.0041.0002.030C] # LATIN CAPITAL LETTER C WITH CARON; QQCM +010B ; [.116F.0020.0002.0063][.0000.0052.0002.0307] # LATIN SMALL LETTER C WITH DOT ABOVE; QQCM +010A ; [.116F.0020.0008.0043][.0000.0052.0002.0307] # LATIN CAPITAL LETTER C WITH DOT ABOVE; QQCM +00E7 ; [.116F.0020.0002.0063][.0000.0056.0002.0327] # LATIN SMALL LETTER C WITH CEDILLA; QQCM +1DD7 ; [.116F.0020.0004.1DD7][.0000.0056.0004.1DD7] # COMBINING LATIN SMALL LETTER C CEDILLA; QQKN +00C7 ; [.116F.0020.0008.0043][.0000.0056.0002.0327] # LATIN CAPITAL LETTER C WITH CEDILLA; QQCM +1E09 ; [.116F.0020.0002.0063][.0000.0056.0002.0327][.0000.0032.0002.0301] # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE; QQCM +1E08 ; [.116F.0020.0008.0043][.0000.0056.0002.0327][.0000.0032.0002.0301] # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE; QQCM +3388 ; [.116F.0020.001C.3388][.1141.0020.001C.3388][.1262.0020.001F.3388] # SQUARE CAL; QQKN +33C4 ; [.116F.0020.001C.33C4][.116F.0020.001C.33C4] # SQUARE CC; QQKN +33C5 ; [.116F.0020.001C.33C5][.1182.0020.001C.33C5] # SQUARE CD; QQKN +33C6 ; [.116F.0020.001D.33C6][*050B.0020.001C.33C6][.1250.0020.001F.33C6][.11E2.0020.001F.33C6] # SQUARE C OVER KG; QQKN +339D ; [.116F.0020.001C.339D][.1291.0020.001C.339D] # SQUARE CM; QQKN +33A0 ; [.116F.0020.001C.33A0][.1291.0020.001C.33A0][.1139.0020.001F.33A0] # SQUARE CM SQUARED; QQKN +33A4 ; [.116F.0020.001C.33A4][.1291.0020.001C.33A4][.113A.0020.001F.33A4] # SQUARE CM CUBED; QQKN +2105 ; [.116F.0020.0004.2105][*0325.0020.0004.2105][.12C0.0020.001F.2105] # CARE OF; QQKN +33C7 ; [.116F.0020.001D.33C7][.12C0.0020.001C.33C7][*026A.0020.001F.33C7] # SQUARE CO; QQKN +2106 ; [.116F.0020.0004.2106][*0325.0020.0004.2106][.1385.0020.001F.2106] # CADA UNA; QQKN +1D04 ; [.1173.0020.0002.1D04] # LATIN LETTER SMALL CAPITAL C +023C ; [.1174.0020.0002.023C] # LATIN SMALL LETTER C WITH STROKE +023B ; [.1174.0020.0008.023B] # LATIN CAPITAL LETTER C WITH STROKE +0188 ; [.1178.0020.0002.0188] # LATIN SMALL LETTER C WITH HOOK +0187 ; [.1178.0020.0008.0187] # LATIN CAPITAL LETTER C WITH HOOK +0255 ; [.117C.0020.0002.0255] # LATIN SMALL LETTER C WITH CURL +1D9D ; [.117C.0020.0014.1D9D] # MODIFIER LETTER SMALL C WITH CURL; QQK +2184 ; [.1180.0020.0002.2184] # LATIN SMALL LETTER REVERSED C +2183 ; [.1180.0020.0008.2183] # ROMAN NUMERAL REVERSED ONE HUNDRED +A73F ; [.1181.0020.0002.A73F] # LATIN SMALL LETTER REVERSED C WITH DOT +A73E ; [.1181.0020.0008.A73E] # LATIN CAPITAL LETTER REVERSED C WITH DOT +0064 ; [.1182.0020.0002.0064] # LATIN SMALL LETTER D +FF44 ; [.1182.0020.0003.FF44] # FULLWIDTH LATIN SMALL LETTER D; QQK +0369 ; [.1182.0020.0004.0369] # COMBINING LATIN SMALL LETTER D; QQK +217E ; [.1182.0020.0004.217E] # SMALL ROMAN NUMERAL FIVE HUNDRED; QQK +249F ; [*02C8.0020.0004.249F][.1182.0020.0004.249F][*02C9.0020.001F.249F] # PARENTHESIZED LATIN SMALL LETTER D; QQKN +2146 ; [.1182.0020.0005.2146] # DOUBLE-STRUCK ITALIC SMALL D; QQK +24D3 ; [.1182.0020.0006.24D3] # CIRCLED LATIN SMALL LETTER D; QQK +0044 ; [.1182.0020.0008.0044] # LATIN CAPITAL LETTER D +FF24 ; [.1182.0020.0009.FF24] # FULLWIDTH LATIN CAPITAL LETTER D; QQK +216E ; [.1182.0020.000A.216E] # ROMAN NUMERAL FIVE HUNDRED; QQK +2145 ; [.1182.0020.000B.2145] # DOUBLE-STRUCK ITALIC CAPITAL D; QQK +24B9 ; [.1182.0020.000C.24B9] # CIRCLED LATIN CAPITAL LETTER D; QQK +1D48 ; [.1182.0020.0014.1D48] # MODIFIER LETTER SMALL D; QQK +1D30 ; [.1182.0020.001D.1D30] # MODIFIER LETTER CAPITAL D; QQK +010F ; [.1182.0020.0002.0064][.0000.0041.0002.030C] # LATIN SMALL LETTER D WITH CARON; QQCM +010E ; [.1182.0020.0008.0044][.0000.0041.0002.030C] # LATIN CAPITAL LETTER D WITH CARON; QQCM +1E0B ; [.1182.0020.0002.0064][.0000.0052.0002.0307] # LATIN SMALL LETTER D WITH DOT ABOVE; QQCM +1E0A ; [.1182.0020.0008.0044][.0000.0052.0002.0307] # LATIN CAPITAL LETTER D WITH DOT ABOVE; QQCM +1E11 ; [.1182.0020.0002.0064][.0000.0056.0002.0327] # LATIN SMALL LETTER D WITH CEDILLA; QQCM +1E10 ; [.1182.0020.0008.0044][.0000.0056.0002.0327] # LATIN CAPITAL LETTER D WITH CEDILLA; QQCM +1E0D ; [.1182.0020.0002.0064][.0000.007A.0002.0323] # LATIN SMALL LETTER D WITH DOT BELOW; QQCM +1E0C ; [.1182.0020.0008.0044][.0000.007A.0002.0323] # LATIN CAPITAL LETTER D WITH DOT BELOW; QQCM +1E13 ; [.1182.0020.0002.0064][.0000.0086.0002.032D] # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW; QQCM +1E12 ; [.1182.0020.0008.0044][.0000.0086.0002.032D] # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW; QQCM +1E0F ; [.1182.0020.0002.0064][.0000.008A.0002.0331] # LATIN SMALL LETTER D WITH LINE BELOW; QQCM +1E0E ; [.1182.0020.0008.0044][.0000.008A.0002.0331] # LATIN CAPITAL LETTER D WITH LINE BELOW; QQCM +0111 ; [.1182.0020.0002.0064][.0000.008D.0002.0335] # LATIN SMALL LETTER D WITH STROKE; QQCM +0110 ; [.1182.0020.0008.0044][.0000.008D.0002.0335] # LATIN CAPITAL LETTER D WITH STROKE; QQCM +00F0 ; [.1182.0020.0004.00F0][.0000.01AF.0004.00F0] # LATIN SMALL LETTER ETH; QQKN +1DD9 ; [.1182.0020.0004.1DD9][.0000.01AF.0004.1DD9] # COMBINING LATIN SMALL LETTER ETH; QQKN +00D0 ; [.1182.0020.000A.00D0][.0000.01AF.0004.00D0] # LATIN CAPITAL LETTER ETH; QQKN +1D9E ; [.1182.0020.0014.1D9E][.0000.01AF.0014.1D9E] # MODIFIER LETTER SMALL ETH; QQKN +1DD8 ; [.1182.0020.0004.1DD8][.0000.01B0.0004.1DD8] # COMBINING LATIN SMALL LETTER INSULAR D; QQKN +A77A ; [.1182.0020.0004.A77A][.0000.01B0.0004.A77A] # LATIN SMALL LETTER INSULAR D; QQKN +A779 ; [.1182.0020.000A.A779][.0000.01B0.0004.A779] # LATIN CAPITAL LETTER INSULAR D; QQKN +3372 ; [.1182.0020.001C.3372][.1141.0020.001C.3372] # SQUARE DA; QQKN +0238 ; [.1182.0020.0004.0238][.1157.0020.0004.0238] # LATIN SMALL LETTER DB DIGRAPH; QQKN +33C8 ; [.1182.0020.001C.33C8][.1157.0020.001D.33C8] # SQUARE DB; QQKN +3397 ; [.1182.0020.001C.3397][.1262.0020.001C.3397] # SQUARE DL; QQKN +3377 ; [.1182.0020.001C.3377][.1291.0020.001C.3377] # SQUARE DM; QQKN +3378 ; [.1182.0020.001C.3378][.1291.0020.001C.3378][.1139.0020.001F.3378] # SQUARE DM SQUARED; QQKN +3379 ; [.1182.0020.001C.3379][.1291.0020.001C.3379][.113A.0020.001F.3379] # SQUARE DM CUBED; QQKN +01F3 ; [.1182.0020.0004.01F3][.13DF.0020.0004.01F3] # LATIN SMALL LETTER DZ; QQKN +02A3 ; [.1182.0020.0004.02A3][.13DF.0020.0004.02A3] # LATIN SMALL LETTER DZ DIGRAPH; QQKN +01F2 ; [.1182.0020.000A.01F2][.13DF.0020.0004.01F2] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z; QQKN +01F1 ; [.1182.0020.000A.01F1][.13DF.0020.000A.01F1] # LATIN CAPITAL LETTER DZ; QQKN +01C6 ; [.1182.0020.0004.01C6][.13DF.0020.0004.01C6][.0000.0041.001F.01C6] # LATIN SMALL LETTER DZ WITH CARON; QQKN +01C5 ; [.1182.0020.000A.01C5][.13DF.0020.0004.01C5][.0000.0041.001F.01C5] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON; QQKN +01C4 ; [.1182.0020.000A.01C4][.13DF.0020.000A.01C4][.0000.0041.001F.01C4] # LATIN CAPITAL LETTER DZ WITH CARON; QQKN +02A5 ; [.1182.0020.0004.02A5][.13F2.0020.0004.02A5] # LATIN SMALL LETTER DZ DIGRAPH WITH CURL; QQKN +02A4 ; [.1182.0020.0004.02A4][.13FC.0020.0004.02A4] # LATIN SMALL LETTER DEZH DIGRAPH; QQKN +1D05 ; [.1186.0020.0002.1D05] # LATIN LETTER SMALL CAPITAL D +1D06 ; [.1187.0020.0002.1D06] # LATIN LETTER SMALL CAPITAL ETH +1D6D ; [.1188.0020.0002.1D6D] # LATIN SMALL LETTER D WITH MIDDLE TILDE +1D81 ; [.1189.0020.0002.1D81] # LATIN SMALL LETTER D WITH PALATAL HOOK +0256 ; [.118A.0020.0002.0256] # LATIN SMALL LETTER D WITH TAIL +0189 ; [.118A.0020.0008.0189] # LATIN CAPITAL LETTER AFRICAN D +0257 ; [.118E.0020.0002.0257] # LATIN SMALL LETTER D WITH HOOK +018A ; [.118E.0020.0008.018A] # LATIN CAPITAL LETTER D WITH HOOK +1D91 ; [.1192.0020.0002.1D91] # LATIN SMALL LETTER D WITH HOOK AND TAIL +018C ; [.1193.0020.0002.018C] # LATIN SMALL LETTER D WITH TOPBAR +018B ; [.1193.0020.0008.018B] # LATIN CAPITAL LETTER D WITH TOPBAR +0221 ; [.1197.0020.0002.0221] # LATIN SMALL LETTER D WITH CURL +A771 ; [.119B.0020.0002.A771] # LATIN SMALL LETTER DUM +1E9F ; [.119C.0020.0002.1E9F] # LATIN SMALL LETTER DELTA +0065 ; [.119D.0020.0002.0065] # LATIN SMALL LETTER E +FF45 ; [.119D.0020.0003.FF45] # FULLWIDTH LATIN SMALL LETTER E; QQK +0364 ; [.119D.0020.0004.0364] # COMBINING LATIN SMALL LETTER E; QQK +24A0 ; [*02C8.0020.0004.24A0][.119D.0020.0004.24A0][*02C9.0020.001F.24A0] # PARENTHESIZED LATIN SMALL LETTER E; QQKN +212F ; [.119D.0020.0005.212F] # SCRIPT SMALL E; QQK +2147 ; [.119D.0020.0005.2147] # DOUBLE-STRUCK ITALIC SMALL E; QQK +24D4 ; [.119D.0020.0006.24D4] # CIRCLED LATIN SMALL LETTER E; QQK +0045 ; [.119D.0020.0008.0045] # LATIN CAPITAL LETTER E +FF25 ; [.119D.0020.0009.FF25] # FULLWIDTH LATIN CAPITAL LETTER E; QQK +2130 ; [.119D.0020.000B.2130] # SCRIPT CAPITAL E; QQK +24BA ; [.119D.0020.000C.24BA] # CIRCLED LATIN CAPITAL LETTER E; QQK +1D49 ; [.119D.0020.0014.1D49] # MODIFIER LETTER SMALL E; QQK +2091 ; [.119D.0020.0015.2091] # LATIN SUBSCRIPT SMALL LETTER E; QQK +1D31 ; [.119D.0020.001D.1D31] # MODIFIER LETTER CAPITAL E; QQK +00E9 ; [.119D.0020.0002.0065][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH ACUTE; QQCM +00C9 ; [.119D.0020.0008.0045][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH ACUTE; QQCM +00E8 ; [.119D.0020.0002.0065][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH GRAVE; QQCM +00C8 ; [.119D.0020.0008.0045][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH GRAVE; QQCM +0115 ; [.119D.0020.0002.0065][.0000.0037.0002.0306] # LATIN SMALL LETTER E WITH BREVE; QQCM +0114 ; [.119D.0020.0008.0045][.0000.0037.0002.0306] # LATIN CAPITAL LETTER E WITH BREVE; QQCM +00EA ; [.119D.0020.0002.0065][.0000.003C.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX; QQCM +00CA ; [.119D.0020.0008.0045][.0000.003C.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX; QQCM +1EBF ; [.119D.0020.0002.0065][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE; QQCM +1EBE ; [.119D.0020.0008.0045][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE; QQCM +1EC1 ; [.119D.0020.0002.0065][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE; QQCM +1EC0 ; [.119D.0020.0008.0045][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE; QQCM +1EC5 ; [.119D.0020.0002.0065][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE; QQCM +1EC4 ; [.119D.0020.0008.0045][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE; QQCM +1EC3 ; [.119D.0020.0002.0065][.0000.003C.0002.0302][.0000.0060.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE; QQCM +1EC2 ; [.119D.0020.0008.0045][.0000.003C.0002.0302][.0000.0060.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE; QQCM +011B ; [.119D.0020.0002.0065][.0000.0041.0002.030C] # LATIN SMALL LETTER E WITH CARON; QQCM +011A ; [.119D.0020.0008.0045][.0000.0041.0002.030C] # LATIN CAPITAL LETTER E WITH CARON; QQCM +00EB ; [.119D.0020.0002.0065][.0000.0047.0002.0308] # LATIN SMALL LETTER E WITH DIAERESIS; QQCM +00CB ; [.119D.0020.0008.0045][.0000.0047.0002.0308] # LATIN CAPITAL LETTER E WITH DIAERESIS; QQCM +1EBD ; [.119D.0020.0002.0065][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH TILDE; QQCM +1EBC ; [.119D.0020.0008.0045][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH TILDE; QQCM +0117 ; [.119D.0020.0002.0065][.0000.0052.0002.0307] # LATIN SMALL LETTER E WITH DOT ABOVE; QQCM +0116 ; [.119D.0020.0008.0045][.0000.0052.0002.0307] # LATIN CAPITAL LETTER E WITH DOT ABOVE; QQCM +0229 ; [.119D.0020.0002.0065][.0000.0056.0002.0327] # LATIN SMALL LETTER E WITH CEDILLA; QQCM +0228 ; [.119D.0020.0008.0045][.0000.0056.0002.0327] # LATIN CAPITAL LETTER E WITH CEDILLA; QQCM +1E1D ; [.119D.0020.0002.0065][.0000.0056.0002.0327][.0000.0037.0002.0306] # LATIN SMALL LETTER E WITH CEDILLA AND BREVE; QQCM +1E1C ; [.119D.0020.0008.0045][.0000.0056.0002.0327][.0000.0037.0002.0306] # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE; QQCM +0119 ; [.119D.0020.0002.0065][.0000.0059.0002.0328] # LATIN SMALL LETTER E WITH OGONEK; QQCM +0118 ; [.119D.0020.0008.0045][.0000.0059.0002.0328] # LATIN CAPITAL LETTER E WITH OGONEK; QQCM +0113 ; [.119D.0020.0002.0065][.0000.005B.0002.0304] # LATIN SMALL LETTER E WITH MACRON; QQCM +0112 ; [.119D.0020.0008.0045][.0000.005B.0002.0304] # LATIN CAPITAL LETTER E WITH MACRON; QQCM +1E17 ; [.119D.0020.0002.0065][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH MACRON AND ACUTE; QQCM +1E16 ; [.119D.0020.0008.0045][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE; QQCM +1E15 ; [.119D.0020.0002.0065][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH MACRON AND GRAVE; QQCM +1E14 ; [.119D.0020.0008.0045][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE; QQCM +1EBB ; [.119D.0020.0002.0065][.0000.0060.0002.0309] # LATIN SMALL LETTER E WITH HOOK ABOVE; QQCM +1EBA ; [.119D.0020.0008.0045][.0000.0060.0002.0309] # LATIN CAPITAL LETTER E WITH HOOK ABOVE; QQCM +0205 ; [.119D.0020.0002.0065][.0000.0063.0002.030F] # LATIN SMALL LETTER E WITH DOUBLE GRAVE; QQCM +0204 ; [.119D.0020.0008.0045][.0000.0063.0002.030F] # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE; QQCM +0207 ; [.119D.0020.0002.0065][.0000.0065.0002.0311] # LATIN SMALL LETTER E WITH INVERTED BREVE; QQCM +0206 ; [.119D.0020.0008.0045][.0000.0065.0002.0311] # LATIN CAPITAL LETTER E WITH INVERTED BREVE; QQCM +1EB9 ; [.119D.0020.0002.0065][.0000.007A.0002.0323] # LATIN SMALL LETTER E WITH DOT BELOW; QQCM +1EB8 ; [.119D.0020.0008.0045][.0000.007A.0002.0323] # LATIN CAPITAL LETTER E WITH DOT BELOW; QQCM +1EC7 ; [.119D.0020.0002.0065][.0000.007A.0002.0323][.0000.003C.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW; QQCM +1EC6 ; [.119D.0020.0008.0045][.0000.007A.0002.0323][.0000.003C.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW; QQCM +1E19 ; [.119D.0020.0002.0065][.0000.0086.0002.032D] # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW; QQCM +1E18 ; [.119D.0020.0008.0045][.0000.0086.0002.032D] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW; QQCM +1E1B ; [.119D.0020.0002.0065][.0000.0089.0002.0330] # LATIN SMALL LETTER E WITH TILDE BELOW; QQCM +1E1A ; [.119D.0020.0008.0045][.0000.0089.0002.0330] # LATIN CAPITAL LETTER E WITH TILDE BELOW; QQCM +32CD ; [.119D.0020.001C.32CD][.130C.0020.001C.32CD][.11E2.0020.001F.32CD] # SQUARE ERG; QQKN +32CE ; [.119D.0020.001C.32CE][.13AD.0020.001D.32CE] # SQUARE EV; QQKN +1D07 ; [.11A1.0020.0002.1D07] # LATIN LETTER SMALL CAPITAL E +0247 ; [.11A2.0020.0002.0247] # LATIN SMALL LETTER E WITH STROKE +0246 ; [.11A2.0020.0008.0246] # LATIN CAPITAL LETTER E WITH STROKE +1D92 ; [.11A6.0020.0002.1D92] # LATIN SMALL LETTER E WITH RETROFLEX HOOK +2C78 ; [.11A7.0020.0002.2C78] # LATIN SMALL LETTER E WITH NOTCH +01DD ; [.11A8.0020.0002.01DD] # LATIN SMALL LETTER TURNED E +018E ; [.11A8.0020.0008.018E] # LATIN CAPITAL LETTER REVERSED E +1D32 ; [.11A8.0020.001D.1D32] # MODIFIER LETTER CAPITAL REVERSED E; QQK +2C7B ; [.11AC.0020.0002.2C7B] # LATIN LETTER SMALL CAPITAL TURNED E +0259 ; [.11AD.0020.0002.0259] # LATIN SMALL LETTER SCHWA +018F ; [.11AD.0020.0008.018F] # LATIN CAPITAL LETTER SCHWA +1D4A ; [.11AD.0020.0014.1D4A] # MODIFIER LETTER SMALL SCHWA; QQK +2094 ; [.11AD.0020.0015.2094] # LATIN SUBSCRIPT SMALL LETTER SCHWA; QQK +1D95 ; [.11B1.0020.0002.1D95] # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK +025B ; [.11B2.0020.0002.025B] # LATIN SMALL LETTER OPEN E +0190 ; [.11B2.0020.0008.0190] # LATIN CAPITAL LETTER OPEN E +2107 ; [.11B2.0020.000A.2107] # EULER CONSTANT; QQK +1D4B ; [.11B2.0020.0014.1D4B] # MODIFIER LETTER SMALL OPEN E; QQK +1D93 ; [.11B6.0020.0002.1D93] # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK +0258 ; [.11B7.0020.0002.0258] # LATIN SMALL LETTER REVERSED E +025A ; [.11BB.0020.0002.025A] # LATIN SMALL LETTER SCHWA WITH HOOK +025C ; [.11BF.0020.0002.025C] # LATIN SMALL LETTER REVERSED OPEN E +1D9F ; [.11BF.0020.0014.1D9F] # MODIFIER LETTER SMALL REVERSED OPEN E; QQK +1D94 ; [.11C3.0020.0002.1D94] # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK +1D08 ; [.11C4.0020.0002.1D08] # LATIN SMALL LETTER TURNED OPEN E +1D4C ; [.11C4.0020.0014.1D4C] # MODIFIER LETTER SMALL TURNED OPEN E; QQK +025D ; [.11C5.0020.0002.025D] # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK +025E ; [.11C9.0020.0002.025E] # LATIN SMALL LETTER CLOSED REVERSED OPEN E +029A ; [.11CD.0020.0002.029A] # LATIN SMALL LETTER CLOSED OPEN E +0264 ; [.11D1.0020.0002.0264] # LATIN SMALL LETTER RAMS HORN +0066 ; [.11D5.0020.0002.0066] # LATIN SMALL LETTER F +FF46 ; [.11D5.0020.0003.FF46] # FULLWIDTH LATIN SMALL LETTER F; QQK +24A1 ; [*02C8.0020.0004.24A1][.11D5.0020.0004.24A1][*02C9.0020.001F.24A1] # PARENTHESIZED LATIN SMALL LETTER F; QQKN +24D5 ; [.11D5.0020.0006.24D5] # CIRCLED LATIN SMALL LETTER F; QQK +0046 ; [.11D5.0020.0008.0046] # LATIN CAPITAL LETTER F +FF26 ; [.11D5.0020.0009.FF26] # FULLWIDTH LATIN CAPITAL LETTER F; QQK +2109 ; [*03FE.0020.0004.2109][.11D5.0020.000A.2109] # DEGREE FAHRENHEIT; QQKN +2131 ; [.11D5.0020.000B.2131] # SCRIPT CAPITAL F; QQK +24BB ; [.11D5.0020.000C.24BB] # CIRCLED LATIN CAPITAL LETTER F; QQK +1E1F ; [.11D5.0020.0002.0066][.0000.0052.0002.0307] # LATIN SMALL LETTER F WITH DOT ABOVE; QQCM +1E1E ; [.11D5.0020.0008.0046][.0000.0052.0002.0307] # LATIN CAPITAL LETTER F WITH DOT ABOVE; QQCM +A77C ; [.11D5.0020.0004.A77C][.0000.01B0.0004.A77C] # LATIN SMALL LETTER INSULAR F; QQKN +A77B ; [.11D5.0020.000A.A77B][.0000.01B0.0004.A77B] # LATIN CAPITAL LETTER INSULAR F; QQKN +213B ; [.11D5.0020.000A.213B][.1141.0020.000A.213B][.13C9.0020.001F.213B] # FACSIMILE SIGN; QQKN +FB00 ; [.11D5.0020.0004.FB00][.11D5.0020.0004.FB00] # LATIN SMALL LIGATURE FF; QQKN +FB03 ; [.11D5.0020.0004.FB03][.11D5.0020.0004.FB03][.121E.0020.001F.FB03] # LATIN SMALL LIGATURE FFI; QQKN +FB04 ; [.11D5.0020.0004.FB04][.11D5.0020.0004.FB04][.1262.0020.001F.FB04] # LATIN SMALL LIGATURE FFL; QQKN +FB01 ; [.11D5.0020.0004.FB01][.121E.0020.0004.FB01] # LATIN SMALL LIGATURE FI; QQKN +FB02 ; [.11D5.0020.0004.FB02][.1262.0020.0004.FB02] # LATIN SMALL LIGATURE FL; QQKN +3399 ; [.11D5.0020.001C.3399][.1291.0020.001C.3399] # SQUARE FM; QQKN +02A9 ; [.11D5.0020.0004.02A9][.12BC.0020.0004.02A9] # LATIN SMALL LETTER FENG DIGRAPH; QQKN +A730 ; [.11D9.0020.0002.A730] # LATIN LETTER SMALL CAPITAL F +0192 ; [.11DC.0020.0002.0192] # LATIN SMALL LETTER F WITH HOOK +0191 ; [.11DC.0020.0008.0191] # LATIN CAPITAL LETTER F WITH HOOK +214E ; [.11E0.0020.0002.214E] # TURNED SMALL F +2132 ; [.11E0.0020.0008.2132] # TURNED CAPITAL F +A7FB ; [.11E1.0020.0002.A7FB] # LATIN EPIGRAPHIC LETTER REVERSED F +0067 ; [.11E2.0020.0002.0067] # LATIN SMALL LETTER G +FF47 ; [.11E2.0020.0003.FF47] # FULLWIDTH LATIN SMALL LETTER G; QQK +24A2 ; [*02C8.0020.0004.24A2][.11E2.0020.0004.24A2][*02C9.0020.001F.24A2] # PARENTHESIZED LATIN SMALL LETTER G; QQKN +210A ; [.11E2.0020.0005.210A] # SCRIPT SMALL G; QQK +24D6 ; [.11E2.0020.0006.24D6] # CIRCLED LATIN SMALL LETTER G; QQK +0047 ; [.11E2.0020.0008.0047] # LATIN CAPITAL LETTER G +FF27 ; [.11E2.0020.0009.FF27] # FULLWIDTH LATIN CAPITAL LETTER G; QQK +24BC ; [.11E2.0020.000C.24BC] # CIRCLED LATIN CAPITAL LETTER G; QQK +01F5 ; [.11E2.0020.0002.0067][.0000.0032.0002.0301] # LATIN SMALL LETTER G WITH ACUTE; QQCM +01F4 ; [.11E2.0020.0008.0047][.0000.0032.0002.0301] # LATIN CAPITAL LETTER G WITH ACUTE; QQCM +011F ; [.11E2.0020.0002.0067][.0000.0037.0002.0306] # LATIN SMALL LETTER G WITH BREVE; QQCM +011E ; [.11E2.0020.0008.0047][.0000.0037.0002.0306] # LATIN CAPITAL LETTER G WITH BREVE; QQCM +011D ; [.11E2.0020.0002.0067][.0000.003C.0002.0302] # LATIN SMALL LETTER G WITH CIRCUMFLEX; QQCM +011C ; [.11E2.0020.0008.0047][.0000.003C.0002.0302] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX; QQCM +01E7 ; [.11E2.0020.0002.0067][.0000.0041.0002.030C] # LATIN SMALL LETTER G WITH CARON; QQCM +01E6 ; [.11E2.0020.0008.0047][.0000.0041.0002.030C] # LATIN CAPITAL LETTER G WITH CARON; QQCM +0121 ; [.11E2.0020.0002.0067][.0000.0052.0002.0307] # LATIN SMALL LETTER G WITH DOT ABOVE; QQCM +0120 ; [.11E2.0020.0008.0047][.0000.0052.0002.0307] # LATIN CAPITAL LETTER G WITH DOT ABOVE; QQCM +0123 ; [.11E2.0020.0002.0067][.0000.0056.0002.0327] # LATIN SMALL LETTER G WITH CEDILLA; QQCM +0122 ; [.11E2.0020.0008.0047][.0000.0056.0002.0327] # LATIN CAPITAL LETTER G WITH CEDILLA; QQCM +1E21 ; [.11E2.0020.0002.0067][.0000.005B.0002.0304] # LATIN SMALL LETTER G WITH MACRON; QQCM +1E20 ; [.11E2.0020.0008.0047][.0000.005B.0002.0304] # LATIN CAPITAL LETTER G WITH MACRON; QQCM +A77D ; [.11E2.0020.000A.A77D][.0000.01B0.0004.A77D] # LATIN CAPITAL LETTER INSULAR G; QQKN +33FF ; [.11E2.0020.001C.33FF][.1141.0020.001C.33FF][.1262.0020.001F.33FF] # SQUARE GAL; QQKN +3387 ; [.11E2.0020.001D.3387][.1157.0020.001D.3387] # SQUARE GB; QQKN +3393 ; [.11E2.0020.001D.3393][.1205.0020.001D.3393][.13DF.0020.001F.3393] # SQUARE GHZ; QQKN +33AC ; [.11E2.0020.001D.33AC][.12E5.0020.001D.33AC][.1141.0020.001F.33AC] # SQUARE GPA; QQKN +33C9 ; [.11E2.0020.001D.33C9][.13CE.0020.001C.33C9] # SQUARE GY; QQKN +0261 ; [.11E6.0020.0002.0261] # LATIN SMALL LETTER SCRIPT G +0262 ; [.11EA.0020.0002.0262] # LATIN LETTER SMALL CAPITAL G +01E5 ; [.11EE.0020.0002.01E5] # LATIN SMALL LETTER G WITH STROKE +01E4 ; [.11EE.0020.0008.01E4] # LATIN CAPITAL LETTER G WITH STROKE +0260 ; [.11F3.0020.0002.0260] # LATIN SMALL LETTER G WITH HOOK +0193 ; [.11F3.0020.0008.0193] # LATIN CAPITAL LETTER G WITH HOOK +029B ; [.11F7.0020.0002.029B] # LATIN LETTER SMALL CAPITAL G WITH HOOK +A77F ; [.11FC.0020.0002.A77F] # LATIN SMALL LETTER TURNED INSULAR G +A77E ; [.11FC.0020.0008.A77E] # LATIN CAPITAL LETTER TURNED INSULAR G +0263 ; [.11FD.0020.0002.0263] # LATIN SMALL LETTER GAMMA +0194 ; [.11FD.0020.0008.0194] # LATIN CAPITAL LETTER GAMMA +02E0 ; [.11FD.0020.0014.02E0] # MODIFIER LETTER SMALL GAMMA; QQK +01A3 ; [.1201.0020.0002.01A3] # LATIN SMALL LETTER OI +01A2 ; [.1201.0020.0008.01A2] # LATIN CAPITAL LETTER OI +0068 ; [.1205.0020.0002.0068] # LATIN SMALL LETTER H +FF48 ; [.1205.0020.0003.FF48] # FULLWIDTH LATIN SMALL LETTER H; QQK +036A ; [.1205.0020.0004.036A] # COMBINING LATIN SMALL LETTER H; QQK +24A3 ; [*02C8.0020.0004.24A3][.1205.0020.0004.24A3][*02C9.0020.001F.24A3] # PARENTHESIZED LATIN SMALL LETTER H; QQKN +210E ; [.1205.0020.0005.210E] # PLANCK CONSTANT; QQK +24D7 ; [.1205.0020.0006.24D7] # CIRCLED LATIN SMALL LETTER H; QQK +0048 ; [.1205.0020.0008.0048] # LATIN CAPITAL LETTER H +FF28 ; [.1205.0020.0009.FF28] # FULLWIDTH LATIN CAPITAL LETTER H; QQK +210B ; [.1205.0020.000B.210B] # SCRIPT CAPITAL H; QQK +210C ; [.1205.0020.000B.210C] # BLACK-LETTER CAPITAL H; QQK +210D ; [.1205.0020.000B.210D] # DOUBLE-STRUCK CAPITAL H; QQK +24BD ; [.1205.0020.000C.24BD] # CIRCLED LATIN CAPITAL LETTER H; QQK +02B0 ; [.1205.0020.0014.02B0] # MODIFIER LETTER SMALL H; QQK +0125 ; [.1205.0020.0002.0068][.0000.003C.0002.0302] # LATIN SMALL LETTER H WITH CIRCUMFLEX; QQCM +0124 ; [.1205.0020.0008.0048][.0000.003C.0002.0302] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX; QQCM +021F ; [.1205.0020.0002.0068][.0000.0041.0002.030C] # LATIN SMALL LETTER H WITH CARON; QQCM +021E ; [.1205.0020.0008.0048][.0000.0041.0002.030C] # LATIN CAPITAL LETTER H WITH CARON; QQCM +1E27 ; [.1205.0020.0002.0068][.0000.0047.0002.0308] # LATIN SMALL LETTER H WITH DIAERESIS; QQCM +1E26 ; [.1205.0020.0008.0048][.0000.0047.0002.0308] # LATIN CAPITAL LETTER H WITH DIAERESIS; QQCM +1E23 ; [.1205.0020.0002.0068][.0000.0052.0002.0307] # LATIN SMALL LETTER H WITH DOT ABOVE; QQCM +1E22 ; [.1205.0020.0008.0048][.0000.0052.0002.0307] # LATIN CAPITAL LETTER H WITH DOT ABOVE; QQCM +1E29 ; [.1205.0020.0002.0068][.0000.0056.0002.0327] # LATIN SMALL LETTER H WITH CEDILLA; QQCM +1E28 ; [.1205.0020.0008.0048][.0000.0056.0002.0327] # LATIN CAPITAL LETTER H WITH CEDILLA; QQCM +1E25 ; [.1205.0020.0002.0068][.0000.007A.0002.0323] # LATIN SMALL LETTER H WITH DOT BELOW; QQCM +1E24 ; [.1205.0020.0008.0048][.0000.007A.0002.0323] # LATIN CAPITAL LETTER H WITH DOT BELOW; QQCM +1E2B ; [.1205.0020.0002.0068][.0000.0087.0002.032E] # LATIN SMALL LETTER H WITH BREVE BELOW; QQCM +1E2A ; [.1205.0020.0008.0048][.0000.0087.0002.032E] # LATIN CAPITAL LETTER H WITH BREVE BELOW; QQCM +1E96 ; [.1205.0020.0002.0068][.0000.008A.0002.0331] # LATIN SMALL LETTER H WITH LINE BELOW; QQCM +0127 ; [.1205.0020.0002.0068][.0000.008D.0002.0335] # LATIN SMALL LETTER H WITH STROKE; QQCM +210F ; [.1205.0020.0002.210F][.0000.008D.0002.210F] # PLANCK CONSTANT OVER TWO PI; QQKN +0126 ; [.1205.0020.0008.0048][.0000.008D.0002.0335] # LATIN CAPITAL LETTER H WITH STROKE; QQCM +33CA ; [.1205.0020.001C.33CA][.1141.0020.001C.33CA] # SQUARE HA; QQKN +32CC ; [.1205.0020.001D.32CC][.11E2.0020.001C.32CC] # SQUARE HG; QQKN +33CB ; [.1205.0020.001D.33CB][.12E5.0020.001D.33CB] # SQUARE HP; QQKN +3371 ; [.1205.0020.001C.3371][.12E5.0020.001D.3371][.1141.0020.001F.3371] # SQUARE HPA; QQKN +3390 ; [.1205.0020.001D.3390][.13DF.0020.001C.3390] # SQUARE HZ; QQKN +029C ; [.1209.0020.0002.029C] # LATIN LETTER SMALL CAPITAL H +0195 ; [.120D.0020.0002.0195] # LATIN SMALL LETTER HV +01F6 ; [.120D.0020.0008.01F6] # LATIN CAPITAL LETTER HWAIR +0266 ; [.1211.0020.0002.0266] # LATIN SMALL LETTER H WITH HOOK +02B1 ; [.1211.0020.0014.02B1] # MODIFIER LETTER SMALL H WITH HOOK; QQK +2C68 ; [.1215.0020.0002.2C68] # LATIN SMALL LETTER H WITH DESCENDER +2C67 ; [.1215.0020.0008.2C67] # LATIN CAPITAL LETTER H WITH DESCENDER +2C76 ; [.1216.0020.0002.2C76] # LATIN SMALL LETTER HALF H +2C75 ; [.1216.0020.0008.2C75] # LATIN CAPITAL LETTER HALF H +A727 ; [.1217.0020.0002.A727] # LATIN SMALL LETTER HENG +A726 ; [.1217.0020.0008.A726] # LATIN CAPITAL LETTER HENG +0267 ; [.1218.0020.0002.0267] # LATIN SMALL LETTER HENG WITH HOOK +02BB ; [.121C.0020.0002.02BB] # MODIFIER LETTER TURNED COMMA +02BD ; [.121D.0020.0002.02BD] # MODIFIER LETTER REVERSED COMMA +0069 ; [.121E.0020.0002.0069] # LATIN SMALL LETTER I +FF49 ; [.121E.0020.0003.FF49] # FULLWIDTH LATIN SMALL LETTER I; QQK +0365 ; [.121E.0020.0004.0365] # COMBINING LATIN SMALL LETTER I; QQK +2170 ; [.121E.0020.0004.2170] # SMALL ROMAN NUMERAL ONE; QQK +24A4 ; [*02C8.0020.0004.24A4][.121E.0020.0004.24A4][*02C9.0020.001F.24A4] # PARENTHESIZED LATIN SMALL LETTER I; QQKN +2139 ; [.121E.0020.0005.2139] # INFORMATION SOURCE; QQK +2148 ; [.121E.0020.0005.2148] # DOUBLE-STRUCK ITALIC SMALL I; QQK +24D8 ; [.121E.0020.0006.24D8] # CIRCLED LATIN SMALL LETTER I; QQK +0049 ; [.121E.0020.0008.0049] # LATIN CAPITAL LETTER I +FF29 ; [.121E.0020.0009.FF29] # FULLWIDTH LATIN CAPITAL LETTER I; QQK +2160 ; [.121E.0020.000A.2160] # ROMAN NUMERAL ONE; QQK +2110 ; [.121E.0020.000B.2110] # SCRIPT CAPITAL I; QQK +2111 ; [.121E.0020.000B.2111] # BLACK-LETTER CAPITAL I; QQK +24BE ; [.121E.0020.000C.24BE] # CIRCLED LATIN CAPITAL LETTER I; QQK +2071 ; [.121E.0020.0014.2071] # SUPERSCRIPT LATIN SMALL LETTER I; QQK +00ED ; [.121E.0020.0002.0069][.0000.0032.0002.0301] # LATIN SMALL LETTER I WITH ACUTE; QQCM +00CD ; [.121E.0020.0008.0049][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE; QQCM +00EC ; [.121E.0020.0002.0069][.0000.0035.0002.0300] # LATIN SMALL LETTER I WITH GRAVE; QQCM +00CC ; [.121E.0020.0008.0049][.0000.0035.0002.0300] # LATIN CAPITAL LETTER I WITH GRAVE; QQCM +012D ; [.121E.0020.0002.0069][.0000.0037.0002.0306] # LATIN SMALL LETTER I WITH BREVE; QQCM +012C ; [.121E.0020.0008.0049][.0000.0037.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE; QQCM +00EE ; [.121E.0020.0002.0069][.0000.003C.0002.0302] # LATIN SMALL LETTER I WITH CIRCUMFLEX; QQCM +00CE ; [.121E.0020.0008.0049][.0000.003C.0002.0302] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX; QQCM +01D0 ; [.121E.0020.0002.0069][.0000.0041.0002.030C] # LATIN SMALL LETTER I WITH CARON; QQCM +01CF ; [.121E.0020.0008.0049][.0000.0041.0002.030C] # LATIN CAPITAL LETTER I WITH CARON; QQCM +00EF ; [.121E.0020.0002.0069][.0000.0047.0002.0308] # LATIN SMALL LETTER I WITH DIAERESIS; QQCM +00CF ; [.121E.0020.0008.0049][.0000.0047.0002.0308] # LATIN CAPITAL LETTER I WITH DIAERESIS; QQCM +1E2F ; [.121E.0020.0002.0069][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE; QQCM +1E2E ; [.121E.0020.0008.0049][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE; QQCM +0129 ; [.121E.0020.0002.0069][.0000.004E.0002.0303] # LATIN SMALL LETTER I WITH TILDE; QQCM +0128 ; [.121E.0020.0008.0049][.0000.004E.0002.0303] # LATIN CAPITAL LETTER I WITH TILDE; QQCM +0130 ; [.121E.0020.0008.0049][.0000.0052.0002.0307] # LATIN CAPITAL LETTER I WITH DOT ABOVE; QQCM +012F ; [.121E.0020.0002.0069][.0000.0059.0002.0328] # LATIN SMALL LETTER I WITH OGONEK; QQCM +012E ; [.121E.0020.0008.0049][.0000.0059.0002.0328] # LATIN CAPITAL LETTER I WITH OGONEK; QQCM +012B ; [.121E.0020.0002.0069][.0000.005B.0002.0304] # LATIN SMALL LETTER I WITH MACRON; QQCM +012A ; [.121E.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON; QQCM +1EC9 ; [.121E.0020.0002.0069][.0000.0060.0002.0309] # LATIN SMALL LETTER I WITH HOOK ABOVE; QQCM +1EC8 ; [.121E.0020.0008.0049][.0000.0060.0002.0309] # LATIN CAPITAL LETTER I WITH HOOK ABOVE; QQCM +0209 ; [.121E.0020.0002.0069][.0000.0063.0002.030F] # LATIN SMALL LETTER I WITH DOUBLE GRAVE; QQCM +0208 ; [.121E.0020.0008.0049][.0000.0063.0002.030F] # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE; QQCM +020B ; [.121E.0020.0002.0069][.0000.0065.0002.0311] # LATIN SMALL LETTER I WITH INVERTED BREVE; QQCM +020A ; [.121E.0020.0008.0049][.0000.0065.0002.0311] # LATIN CAPITAL LETTER I WITH INVERTED BREVE; QQCM +1ECB ; [.121E.0020.0002.0069][.0000.007A.0002.0323] # LATIN SMALL LETTER I WITH DOT BELOW; QQCM +1ECA ; [.121E.0020.0008.0049][.0000.007A.0002.0323] # LATIN CAPITAL LETTER I WITH DOT BELOW; QQCM +1E2D ; [.121E.0020.0002.0069][.0000.0089.0002.0330] # LATIN SMALL LETTER I WITH TILDE BELOW; QQCM +1E2C ; [.121E.0020.0008.0049][.0000.0089.0002.0330] # LATIN CAPITAL LETTER I WITH TILDE BELOW; QQCM +2171 ; [.121E.0020.0004.2171][.121E.0020.0004.2171] # SMALL ROMAN NUMERAL TWO; QQKN +2161 ; [.121E.0020.000A.2161][.121E.0020.000A.2161] # ROMAN NUMERAL TWO; QQKN +2172 ; [.121E.0020.0004.2172][.121E.0020.0004.2172][.121E.0020.001F.2172] # SMALL ROMAN NUMERAL THREE; QQKN +2162 ; [.121E.0020.000A.2162][.121E.0020.000A.2162][.121E.0020.001F.2162] # ROMAN NUMERAL THREE; QQKN +0133 ; [.121E.0020.0004.0133][.1237.0020.0004.0133] # LATIN SMALL LIGATURE IJ; QQKN +0132 ; [.121E.0020.000A.0132][.1237.0020.000A.0132] # LATIN CAPITAL LIGATURE IJ; QQKN +33CC ; [.121E.0020.001C.33CC][.129F.0020.001C.33CC] # SQUARE IN; QQKN +337A ; [.121E.0020.001D.337A][.1385.0020.001D.337A] # SQUARE IU; QQKN +2173 ; [.121E.0020.0004.2173][.13AD.0020.0004.2173] # SMALL ROMAN NUMERAL FOUR; QQKN +2163 ; [.121E.0020.000A.2163][.13AD.0020.000A.2163] # ROMAN NUMERAL FOUR; QQKN +2178 ; [.121E.0020.0004.2178][.13C9.0020.0004.2178] # SMALL ROMAN NUMERAL NINE; QQKN +2168 ; [.121E.0020.000A.2168][.13C9.0020.000A.2168] # ROMAN NUMERAL NINE; QQKN +0131 ; [.1222.0020.0002.0131] # LATIN SMALL LETTER DOTLESS I +026A ; [.1226.0020.0002.026A] # LATIN LETTER SMALL CAPITAL I +A7FE ; [.122A.0020.0002.A7FE] # LATIN EPIGRAPHIC LETTER I LONGA +0268 ; [.122C.0020.0002.0268] # LATIN SMALL LETTER I WITH STROKE +0197 ; [.122C.0020.0008.0197] # LATIN CAPITAL LETTER I WITH STROKE +0269 ; [.1232.0020.0002.0269] # LATIN SMALL LETTER IOTA +0196 ; [.1232.0020.0008.0196] # LATIN CAPITAL LETTER IOTA +006A ; [.1237.0020.0002.006A] # LATIN SMALL LETTER J +FF4A ; [.1237.0020.0003.FF4A] # FULLWIDTH LATIN SMALL LETTER J; QQK +24A5 ; [*02C8.0020.0004.24A5][.1237.0020.0004.24A5][*02C9.0020.001F.24A5] # PARENTHESIZED LATIN SMALL LETTER J; QQKN +2149 ; [.1237.0020.0005.2149] # DOUBLE-STRUCK ITALIC SMALL J; QQK +24D9 ; [.1237.0020.0006.24D9] # CIRCLED LATIN SMALL LETTER J; QQK +004A ; [.1237.0020.0008.004A] # LATIN CAPITAL LETTER J +FF2A ; [.1237.0020.0009.FF2A] # FULLWIDTH LATIN CAPITAL LETTER J; QQK +24BF ; [.1237.0020.000C.24BF] # CIRCLED LATIN CAPITAL LETTER J; QQK +02B2 ; [.1237.0020.0014.02B2] # MODIFIER LETTER SMALL J; QQK +2C7C ; [.1237.0020.0015.2C7C] # LATIN SUBSCRIPT SMALL LETTER J; QQK +0135 ; [.1237.0020.0002.006A][.0000.003C.0002.0302] # LATIN SMALL LETTER J WITH CIRCUMFLEX; QQCM +0134 ; [.1237.0020.0008.004A][.0000.003C.0002.0302] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX; QQCM +01F0 ; [.1237.0020.0002.006A][.0000.0041.0002.030C] # LATIN SMALL LETTER J WITH CARON; QQCM +0237 ; [.123B.0020.0002.0237] # LATIN SMALL LETTER DOTLESS J +0249 ; [.1240.0020.0002.0249] # LATIN SMALL LETTER J WITH STROKE +0248 ; [.1240.0020.0008.0248] # LATIN CAPITAL LETTER J WITH STROKE +029D ; [.1244.0020.0002.029D] # LATIN SMALL LETTER J WITH CROSSED-TAIL +025F ; [.1248.0020.0002.025F] # LATIN SMALL LETTER DOTLESS J WITH STROKE +0284 ; [.124C.0020.0002.0284] # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK +006B ; [.1250.0020.0002.006B] # LATIN SMALL LETTER K +FF4B ; [.1250.0020.0003.FF4B] # FULLWIDTH LATIN SMALL LETTER K; QQK +24A6 ; [*02C8.0020.0004.24A6][.1250.0020.0004.24A6][*02C9.0020.001F.24A6] # PARENTHESIZED LATIN SMALL LETTER K; QQKN +24DA ; [.1250.0020.0006.24DA] # CIRCLED LATIN SMALL LETTER K; QQK +004B ; [.1250.0020.0008.004B] # LATIN CAPITAL LETTER K +212A ; [.1250.0020.0008.212A] # KELVIN SIGN; QQC +FF2B ; [.1250.0020.0009.FF2B] # FULLWIDTH LATIN CAPITAL LETTER K; QQK +24C0 ; [.1250.0020.000C.24C0] # CIRCLED LATIN CAPITAL LETTER K; QQK +1E31 ; [.1250.0020.0002.006B][.0000.0032.0002.0301] # LATIN SMALL LETTER K WITH ACUTE; QQCM +1E30 ; [.1250.0020.0008.004B][.0000.0032.0002.0301] # LATIN CAPITAL LETTER K WITH ACUTE; QQCM +01E9 ; [.1250.0020.0002.006B][.0000.0041.0002.030C] # LATIN SMALL LETTER K WITH CARON; QQCM +01E8 ; [.1250.0020.0008.004B][.0000.0041.0002.030C] # LATIN CAPITAL LETTER K WITH CARON; QQCM +0137 ; [.1250.0020.0002.006B][.0000.0056.0002.0327] # LATIN SMALL LETTER K WITH CEDILLA; QQCM +0136 ; [.1250.0020.0008.004B][.0000.0056.0002.0327] # LATIN CAPITAL LETTER K WITH CEDILLA; QQCM +1E33 ; [.1250.0020.0002.006B][.0000.007A.0002.0323] # LATIN SMALL LETTER K WITH DOT BELOW; QQCM +1E32 ; [.1250.0020.0008.004B][.0000.007A.0002.0323] # LATIN CAPITAL LETTER K WITH DOT BELOW; QQCM +1E35 ; [.1250.0020.0002.006B][.0000.008A.0002.0331] # LATIN SMALL LETTER K WITH LINE BELOW; QQCM +1E34 ; [.1250.0020.0008.004B][.0000.008A.0002.0331] # LATIN CAPITAL LETTER K WITH LINE BELOW; QQCM +3384 ; [.1250.0020.001C.3384][.1141.0020.001D.3384] # SQUARE KA; QQKN +3385 ; [.1250.0020.001D.3385][.1157.0020.001D.3385] # SQUARE KB; QQKN +3389 ; [.1250.0020.001C.3389][.116F.0020.001C.3389][.1141.0020.001F.3389][.1262.0020.001F.3389] # SQUARE KCAL; QQKN +338F ; [.1250.0020.001C.338F][.11E2.0020.001C.338F] # SQUARE KG; QQKN +3391 ; [.1250.0020.001C.3391][.1205.0020.001D.3391][.13DF.0020.001F.3391] # SQUARE KHZ; QQKN +33CD ; [.1250.0020.001D.33CD][.1250.0020.001D.33CD] # SQUARE KK; QQKN +3398 ; [.1250.0020.001C.3398][.1262.0020.001C.3398] # SQUARE KL; QQKN +339E ; [.1250.0020.001C.339E][.1291.0020.001C.339E] # SQUARE KM; QQKN +33CE ; [.1250.0020.001D.33CE][.1291.0020.001D.33CE] # SQUARE KM CAPITAL; QQKN +33A2 ; [.1250.0020.001C.33A2][.1291.0020.001C.33A2][.1139.0020.001F.33A2] # SQUARE KM SQUARED; QQKN +33A6 ; [.1250.0020.001C.33A6][.1291.0020.001C.33A6][.113A.0020.001F.33A6] # SQUARE KM CUBED; QQKN +33AA ; [.1250.0020.001C.33AA][.12E5.0020.001D.33AA][.1141.0020.001F.33AA] # SQUARE KPA; QQKN +33CF ; [.1250.0020.001C.33CF][.1365.0020.001C.33CF] # SQUARE KT; QQKN +33B8 ; [.1250.0020.001C.33B8][.13AD.0020.001D.33B8] # SQUARE KV; QQKN +33BE ; [.1250.0020.001C.33BE][.13BF.0020.001D.33BE] # SQUARE KW; QQKN +33C0 ; [.1250.0020.001C.33C0][.149F.0020.001D.33C0] # SQUARE K OHM; QQKN +0199 ; [.1256.0020.0002.0199] # LATIN SMALL LETTER K WITH HOOK +0198 ; [.1256.0020.0008.0198] # LATIN CAPITAL LETTER K WITH HOOK +2C6A ; [.125A.0020.0002.2C6A] # LATIN SMALL LETTER K WITH DESCENDER +2C69 ; [.125A.0020.0008.2C69] # LATIN CAPITAL LETTER K WITH DESCENDER +A741 ; [.125B.0020.0002.A741] # LATIN SMALL LETTER K WITH STROKE +A740 ; [.125B.0020.0008.A740] # LATIN CAPITAL LETTER K WITH STROKE +A743 ; [.125C.0020.0002.A743] # LATIN SMALL LETTER K WITH DIAGONAL STROKE +A742 ; [.125C.0020.0008.A742] # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE +A745 ; [.125D.0020.0002.A745] # LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE +A744 ; [.125D.0020.0008.A744] # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE +029E ; [.125E.0020.0002.029E] # LATIN SMALL LETTER TURNED K +006C ; [.1262.0020.0002.006C] # LATIN SMALL LETTER L +FF4C ; [.1262.0020.0003.FF4C] # FULLWIDTH LATIN SMALL LETTER L; QQK +217C ; [.1262.0020.0004.217C] # SMALL ROMAN NUMERAL FIFTY; QQK +24A7 ; [*02C8.0020.0004.24A7][.1262.0020.0004.24A7][*02C9.0020.001F.24A7] # PARENTHESIZED LATIN SMALL LETTER L; QQKN +2113 ; [.1262.0020.0005.2113] # SCRIPT SMALL L; QQK +24DB ; [.1262.0020.0006.24DB] # CIRCLED LATIN SMALL LETTER L; QQK +004C ; [.1262.0020.0008.004C] # LATIN CAPITAL LETTER L +FF2C ; [.1262.0020.0009.FF2C] # FULLWIDTH LATIN CAPITAL LETTER L; QQK +216C ; [.1262.0020.000A.216C] # ROMAN NUMERAL FIFTY; QQK +2112 ; [.1262.0020.000B.2112] # SCRIPT CAPITAL L; QQK +24C1 ; [.1262.0020.000C.24C1] # CIRCLED LATIN CAPITAL LETTER L; QQK +02E1 ; [.1262.0020.0014.02E1] # MODIFIER LETTER SMALL L; QQK +013A ; [.1262.0020.0002.006C][.0000.0032.0002.0301] # LATIN SMALL LETTER L WITH ACUTE; QQCM +0139 ; [.1262.0020.0008.004C][.0000.0032.0002.0301] # LATIN CAPITAL LETTER L WITH ACUTE; QQCM +013E ; [.1262.0020.0002.006C][.0000.0041.0002.030C] # LATIN SMALL LETTER L WITH CARON; QQCM +013D ; [.1262.0020.0008.004C][.0000.0041.0002.030C] # LATIN CAPITAL LETTER L WITH CARON; QQCM +013C ; [.1262.0020.0002.006C][.0000.0056.0002.0327] # LATIN SMALL LETTER L WITH CEDILLA; QQCM +013B ; [.1262.0020.0008.004C][.0000.0056.0002.0327] # LATIN CAPITAL LETTER L WITH CEDILLA; QQCM +1E37 ; [.1262.0020.0002.006C][.0000.007A.0002.0323] # LATIN SMALL LETTER L WITH DOT BELOW; QQCM +1E36 ; [.1262.0020.0008.004C][.0000.007A.0002.0323] # LATIN CAPITAL LETTER L WITH DOT BELOW; QQCM +1E39 ; [.1262.0020.0002.006C][.0000.007A.0002.0323][.0000.005B.0002.0304] # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON; QQCM +1E38 ; [.1262.0020.0008.004C][.0000.007A.0002.0323][.0000.005B.0002.0304] # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON; QQCM +1E3D ; [.1262.0020.0002.006C][.0000.0086.0002.032D] # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW; QQCM +1E3C ; [.1262.0020.0008.004C][.0000.0086.0002.032D] # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW; QQCM +1E3B ; [.1262.0020.0002.006C][.0000.008A.0002.0331] # LATIN SMALL LETTER L WITH LINE BELOW; QQCM +1E3A ; [.1262.0020.0008.004C][.0000.008A.0002.0331] # LATIN CAPITAL LETTER L WITH LINE BELOW; QQCM +0142 ; [.1262.0020.0002.006C][.0000.008D.0002.0335] # LATIN SMALL LETTER L WITH STROKE; QQCM +0141 ; [.1262.0020.0008.004C][.0000.008D.0002.0335] # LATIN CAPITAL LETTER L WITH STROKE; QQCM +0140 ; [.1262.0020.0002.0140][.0000.01AF.0002.0140] # LATIN SMALL LETTER L WITH MIDDLE DOT; QQKL +006C 00B7 ; [.1262.0020.0002.0140][.0000.01AF.0002.0140] # LATIN SMALL LETTER L WITH MIDDLE DOT +006C 0387 ; [.1262.0020.0002.0140][.0000.01AF.0002.0140] # LATIN SMALL LETTER L WITH MIDDLE DOT +013F ; [.1262.0020.0008.013F][.0000.01AF.0002.013F] # LATIN CAPITAL LETTER L WITH MIDDLE DOT; QQKL +004C 00B7 ; [.1262.0020.0008.013F][.0000.01AF.0002.013F] # LATIN CAPITAL LETTER L WITH MIDDLE DOT +004C 0387 ; [.1262.0020.0008.013F][.0000.01AF.0002.013F] # LATIN CAPITAL LETTER L WITH MIDDLE DOT +01C9 ; [.1262.0020.0004.01C9][.1237.0020.0004.01C9] # LATIN SMALL LETTER LJ; QQKN +01C8 ; [.1262.0020.000A.01C8][.1237.0020.0004.01C8] # LATIN CAPITAL LETTER L WITH SMALL LETTER J; QQKN +01C7 ; [.1262.0020.000A.01C7][.1237.0020.000A.01C7] # LATIN CAPITAL LETTER LJ; QQKN +1EFA ; [.1262.0020.0004.1EFA][.1262.0020.0004.1EFA] # LATIN CAPITAL LETTER MIDDLE-WELSH LL; QQKN +1EFB ; [.1262.0020.000A.1EFB][.1262.0020.000A.1EFB] # LATIN SMALL LETTER MIDDLE-WELSH LL; QQKN +33D0 ; [.1262.0020.001C.33D0][.1291.0020.001C.33D0] # SQUARE LM; QQKN +33D1 ; [.1262.0020.001C.33D1][.129F.0020.001C.33D1] # SQUARE LN; QQKN +33D2 ; [.1262.0020.001C.33D2][.12C0.0020.001C.33D2][.11E2.0020.001F.33D2] # SQUARE LOG; QQKN +02AA ; [.1262.0020.0004.02AA][.1342.0020.0004.02AA] # LATIN SMALL LETTER LS DIGRAPH; QQKN +32CF ; [.1262.0020.001D.32CF][.1365.0020.001D.32CF][.1182.0020.001F.32CF] # LIMITED LIABILITY SIGN; QQKN +33D3 ; [.1262.0020.001C.33D3][.13C9.0020.001C.33D3] # SQUARE LX; QQKN +02AB ; [.1262.0020.0004.02AB][.13DF.0020.0004.02AB] # LATIN SMALL LETTER LZ DIGRAPH; QQKN +029F ; [.1266.0020.0002.029F] # LATIN LETTER SMALL CAPITAL L +A747 ; [.126A.0020.0002.A747] # LATIN SMALL LETTER BROKEN L +A746 ; [.126A.0020.0008.A746] # LATIN CAPITAL LETTER BROKEN L +A749 ; [.126C.0020.0002.A749] # LATIN SMALL LETTER L WITH HIGH STROKE +A748 ; [.126C.0020.0008.A748] # LATIN CAPITAL LETTER L WITH HIGH STROKE +019A ; [.126D.0020.0002.019A] # LATIN SMALL LETTER L WITH BAR +023D ; [.126D.0020.0008.023D] # LATIN CAPITAL LETTER L WITH BAR +2C61 ; [.1271.0020.0002.2C61] # LATIN SMALL LETTER L WITH DOUBLE BAR +2C60 ; [.1271.0020.0008.2C60] # LATIN CAPITAL LETTER L WITH DOUBLE BAR +026B ; [.1272.0020.0002.026B] # LATIN SMALL LETTER L WITH MIDDLE TILDE +2C62 ; [.1272.0020.0008.2C62] # LATIN CAPITAL LETTER L WITH MIDDLE TILDE +026C ; [.1276.0020.0002.026C] # LATIN SMALL LETTER L WITH BELT +026D ; [.127B.0020.0002.026D] # LATIN SMALL LETTER L WITH RETROFLEX HOOK +0234 ; [.127F.0020.0002.0234] # LATIN SMALL LETTER L WITH CURL +A772 ; [.1283.0020.0002.A772] # LATIN SMALL LETTER LUM +026E ; [.1284.0020.0002.026E] # LATIN SMALL LETTER LEZH +A781 ; [.1288.0020.0002.A781] # LATIN SMALL LETTER TURNED L +A780 ; [.1288.0020.0008.A780] # LATIN CAPITAL LETTER TURNED L +019B ; [.1289.0020.0002.019B] # LATIN SMALL LETTER LAMBDA WITH STROKE +028E ; [.128D.0020.0002.028E] # LATIN SMALL LETTER TURNED Y +006D ; [.1291.0020.0002.006D] # LATIN SMALL LETTER M +FF4D ; [.1291.0020.0003.FF4D] # FULLWIDTH LATIN SMALL LETTER M; QQK +036B ; [.1291.0020.0004.036B] # COMBINING LATIN SMALL LETTER M; QQK +217F ; [.1291.0020.0004.217F] # SMALL ROMAN NUMERAL ONE THOUSAND; QQK +24A8 ; [*02C8.0020.0004.24A8][.1291.0020.0004.24A8][*02C9.0020.001F.24A8] # PARENTHESIZED LATIN SMALL LETTER M; QQKN +24DC ; [.1291.0020.0006.24DC] # CIRCLED LATIN SMALL LETTER M; QQK +004D ; [.1291.0020.0008.004D] # LATIN CAPITAL LETTER M +FF2D ; [.1291.0020.0009.FF2D] # FULLWIDTH LATIN CAPITAL LETTER M; QQK +216F ; [.1291.0020.000A.216F] # ROMAN NUMERAL ONE THOUSAND; QQK +2133 ; [.1291.0020.000B.2133] # SCRIPT CAPITAL M; QQK +24C2 ; [.1291.0020.000C.24C2] # CIRCLED LATIN CAPITAL LETTER M; QQK +1E3F ; [.1291.0020.0002.006D][.0000.0032.0002.0301] # LATIN SMALL LETTER M WITH ACUTE; QQCM +1E3E ; [.1291.0020.0008.004D][.0000.0032.0002.0301] # LATIN CAPITAL LETTER M WITH ACUTE; QQCM +1E41 ; [.1291.0020.0002.006D][.0000.0052.0002.0307] # LATIN SMALL LETTER M WITH DOT ABOVE; QQCM +1E40 ; [.1291.0020.0008.004D][.0000.0052.0002.0307] # LATIN CAPITAL LETTER M WITH DOT ABOVE; QQCM +1E43 ; [.1291.0020.0002.006D][.0000.007A.0002.0323] # LATIN SMALL LETTER M WITH DOT BELOW; QQCM +1E42 ; [.1291.0020.0008.004D][.0000.007A.0002.0323] # LATIN CAPITAL LETTER M WITH DOT BELOW; QQCM +33A1 ; [.1291.0020.001C.33A1][.1139.0020.001C.33A1] # SQUARE M SQUARED; QQKN +33A5 ; [.1291.0020.001C.33A5][.113A.0020.001C.33A5] # SQUARE M CUBED; QQKN +3383 ; [.1291.0020.001C.3383][.1141.0020.001D.3383] # SQUARE MA; QQKN +33D4 ; [.1291.0020.001C.33D4][.1157.0020.001C.33D4] # SQUARE MB SMALL; QQKN +3386 ; [.1291.0020.001D.3386][.1157.0020.001D.3386] # SQUARE MB; QQKN +338E ; [.1291.0020.001C.338E][.11E2.0020.001C.338E] # SQUARE MG; QQKN +3392 ; [.1291.0020.001D.3392][.1205.0020.001D.3392][.13DF.0020.001F.3392] # SQUARE MHZ; QQKN +33D5 ; [.1291.0020.001C.33D5][.121E.0020.001C.33D5][.1262.0020.001F.33D5] # SQUARE MIL; QQKN +3396 ; [.1291.0020.001C.3396][.1262.0020.001C.3396] # SQUARE ML; QQKN +339C ; [.1291.0020.001C.339C][.1291.0020.001C.339C] # SQUARE MM; QQKN +339F ; [.1291.0020.001C.339F][.1291.0020.001C.339F][.1139.0020.001F.339F] # SQUARE MM SQUARED; QQKN +33A3 ; [.1291.0020.001C.33A3][.1291.0020.001C.33A3][.113A.0020.001F.33A3] # SQUARE MM CUBED; QQKN +33D6 ; [.1291.0020.001C.33D6][.12C0.0020.001C.33D6][.1262.0020.001F.33D6] # SQUARE MOL; QQKN +33AB ; [.1291.0020.001D.33AB][.12E5.0020.001D.33AB][.1141.0020.001F.33AB] # SQUARE MPA; QQKN +33B3 ; [.1291.0020.001C.33B3][.1342.0020.001C.33B3] # SQUARE MS; QQKN +33A7 ; [.1291.0020.001C.33A7][*050B.0020.001C.33A7][.1342.0020.001F.33A7] # SQUARE M OVER S; QQKN +33A8 ; [.1291.0020.001C.33A8][*050B.0020.001C.33A8][.1342.0020.001F.33A8][.1139.0020.001F.33A8] # SQUARE M OVER S SQUARED; QQKN +33B7 ; [.1291.0020.001C.33B7][.13AD.0020.001D.33B7] # SQUARE MV; QQKN +33B9 ; [.1291.0020.001D.33B9][.13AD.0020.001D.33B9] # SQUARE MV MEGA; QQKN +33BD ; [.1291.0020.001C.33BD][.13BF.0020.001D.33BD] # SQUARE MW; QQKN +33BF ; [.1291.0020.001D.33BF][.13BF.0020.001D.33BF] # SQUARE MW MEGA; QQKN +33C1 ; [.1291.0020.001D.33C1][.149F.0020.001D.33C1] # SQUARE M OHM; QQKN +0271 ; [.1298.0020.0002.0271] # LATIN SMALL LETTER M WITH HOOK +2C6E ; [.1298.0020.0008.2C6E] # LATIN CAPITAL LETTER M WITH HOOK +A7FD ; [.129C.0020.0002.A7FD] # LATIN EPIGRAPHIC LETTER INVERTED M +A7FF ; [.129D.0020.0002.A7FF] # LATIN EPIGRAPHIC LETTER ARCHAIC M +A773 ; [.129E.0020.0002.A773] # LATIN SMALL LETTER MUM +006E ; [.129F.0020.0002.006E] # LATIN SMALL LETTER N +FF4E ; [.129F.0020.0003.FF4E] # FULLWIDTH LATIN SMALL LETTER N; QQK +24A9 ; [*02C8.0020.0004.24A9][.129F.0020.0004.24A9][*02C9.0020.001F.24A9] # PARENTHESIZED LATIN SMALL LETTER N; QQKN +24DD ; [.129F.0020.0006.24DD] # CIRCLED LATIN SMALL LETTER N; QQK +004E ; [.129F.0020.0008.004E] # LATIN CAPITAL LETTER N +FF2E ; [.129F.0020.0009.FF2E] # FULLWIDTH LATIN CAPITAL LETTER N; QQK +2115 ; [.129F.0020.000B.2115] # DOUBLE-STRUCK CAPITAL N; QQK +24C3 ; [.129F.0020.000C.24C3] # CIRCLED LATIN CAPITAL LETTER N; QQK +207F ; [.129F.0020.0014.207F] # SUPERSCRIPT LATIN SMALL LETTER N; QQK +0144 ; [.129F.0020.0002.006E][.0000.0032.0002.0301] # LATIN SMALL LETTER N WITH ACUTE; QQCM +0143 ; [.129F.0020.0008.004E][.0000.0032.0002.0301] # LATIN CAPITAL LETTER N WITH ACUTE; QQCM +01F9 ; [.129F.0020.0002.006E][.0000.0035.0002.0300] # LATIN SMALL LETTER N WITH GRAVE; QQCM +01F8 ; [.129F.0020.0008.004E][.0000.0035.0002.0300] # LATIN CAPITAL LETTER N WITH GRAVE; QQCM +0148 ; [.129F.0020.0002.006E][.0000.0041.0002.030C] # LATIN SMALL LETTER N WITH CARON; QQCM +0147 ; [.129F.0020.0008.004E][.0000.0041.0002.030C] # LATIN CAPITAL LETTER N WITH CARON; QQCM +00F1 ; [.129F.0020.0002.006E][.0000.004E.0002.0303] # LATIN SMALL LETTER N WITH TILDE; QQCM +00D1 ; [.129F.0020.0008.004E][.0000.004E.0002.0303] # LATIN CAPITAL LETTER N WITH TILDE; QQCM +1E45 ; [.129F.0020.0002.006E][.0000.0052.0002.0307] # LATIN SMALL LETTER N WITH DOT ABOVE; QQCM +1E44 ; [.129F.0020.0008.004E][.0000.0052.0002.0307] # LATIN CAPITAL LETTER N WITH DOT ABOVE; QQCM +0146 ; [.129F.0020.0002.006E][.0000.0056.0002.0327] # LATIN SMALL LETTER N WITH CEDILLA; QQCM +0145 ; [.129F.0020.0008.004E][.0000.0056.0002.0327] # LATIN CAPITAL LETTER N WITH CEDILLA; QQCM +1E47 ; [.129F.0020.0002.006E][.0000.007A.0002.0323] # LATIN SMALL LETTER N WITH DOT BELOW; QQCM +1E46 ; [.129F.0020.0008.004E][.0000.007A.0002.0323] # LATIN CAPITAL LETTER N WITH DOT BELOW; QQCM +1E4B ; [.129F.0020.0002.006E][.0000.0086.0002.032D] # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW; QQCM +1E4A ; [.129F.0020.0008.004E][.0000.0086.0002.032D] # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW; QQCM +1E49 ; [.129F.0020.0002.006E][.0000.008A.0002.0331] # LATIN SMALL LETTER N WITH LINE BELOW; QQCM +1E48 ; [.129F.0020.0008.004E][.0000.008A.0002.0331] # LATIN CAPITAL LETTER N WITH LINE BELOW; QQCM +3381 ; [.129F.0020.001C.3381][.1141.0020.001D.3381] # SQUARE NA; QQKN +338B ; [.129F.0020.001C.338B][.11D5.0020.001D.338B] # SQUARE NF; QQKN +01CC ; [.129F.0020.0004.01CC][.1237.0020.0004.01CC] # LATIN SMALL LETTER NJ; QQKN +01CB ; [.129F.0020.000A.01CB][.1237.0020.0004.01CB] # LATIN CAPITAL LETTER N WITH SMALL LETTER J; QQKN +01CA ; [.129F.0020.000A.01CA][.1237.0020.000A.01CA] # LATIN CAPITAL LETTER NJ; QQKN +339A ; [.129F.0020.001C.339A][.1291.0020.001C.339A] # SQUARE NM; QQKN +2116 ; [.129F.0020.000A.2116][.12C0.0020.0004.2116] # NUMERO SIGN; QQKN +33B1 ; [.129F.0020.001C.33B1][.1342.0020.001C.33B1] # SQUARE NS; QQKN +33B5 ; [.129F.0020.001C.33B5][.13AD.0020.001D.33B5] # SQUARE NV; QQKN +33BB ; [.129F.0020.001C.33BB][.13BF.0020.001D.33BB] # SQUARE NW; QQKN +0274 ; [.12A3.0020.0002.0274] # LATIN LETTER SMALL CAPITAL N +0272 ; [.12AA.0020.0002.0272] # LATIN SMALL LETTER N WITH LEFT HOOK +019D ; [.12AA.0020.0008.019D] # LATIN CAPITAL LETTER N WITH LEFT HOOK +019E ; [.12AE.0020.0002.019E] # LATIN SMALL LETTER N WITH LONG RIGHT LEG +0220 ; [.12AE.0020.0008.0220] # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG +0273 ; [.12B3.0020.0002.0273] # LATIN SMALL LETTER N WITH RETROFLEX HOOK +0235 ; [.12B7.0020.0002.0235] # LATIN SMALL LETTER N WITH CURL +A774 ; [.12BB.0020.0002.A774] # LATIN SMALL LETTER NUM +014B ; [.12BC.0020.0002.014B] # LATIN SMALL LETTER ENG +014A ; [.12BC.0020.0008.014A] # LATIN CAPITAL LETTER ENG +006F ; [.12C0.0020.0002.006F] # LATIN SMALL LETTER O +FF4F ; [.12C0.0020.0003.FF4F] # FULLWIDTH LATIN SMALL LETTER O; QQK +0366 ; [.12C0.0020.0004.0366] # COMBINING LATIN SMALL LETTER O; QQK +24AA ; [*02C8.0020.0004.24AA][.12C0.0020.0004.24AA][*02C9.0020.001F.24AA] # PARENTHESIZED LATIN SMALL LETTER O; QQKN +2134 ; [.12C0.0020.0005.2134] # SCRIPT SMALL O; QQK +24DE ; [.12C0.0020.0006.24DE] # CIRCLED LATIN SMALL LETTER O; QQK +004F ; [.12C0.0020.0008.004F] # LATIN CAPITAL LETTER O +FF2F ; [.12C0.0020.0009.FF2F] # FULLWIDTH LATIN CAPITAL LETTER O; QQK +24C4 ; [.12C0.0020.000C.24C4] # CIRCLED LATIN CAPITAL LETTER O; QQK +00BA ; [.12C0.0020.0014.00BA] # MASCULINE ORDINAL INDICATOR; QQK +2092 ; [.12C0.0020.0015.2092] # LATIN SUBSCRIPT SMALL LETTER O; QQK +00F3 ; [.12C0.0020.0002.006F][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH ACUTE; QQCM +00D3 ; [.12C0.0020.0008.004F][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH ACUTE; QQCM +00F2 ; [.12C0.0020.0002.006F][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH GRAVE; QQCM +00D2 ; [.12C0.0020.0008.004F][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH GRAVE; QQCM +014F ; [.12C0.0020.0002.006F][.0000.0037.0002.0306] # LATIN SMALL LETTER O WITH BREVE; QQCM +014E ; [.12C0.0020.0008.004F][.0000.0037.0002.0306] # LATIN CAPITAL LETTER O WITH BREVE; QQCM +00F4 ; [.12C0.0020.0002.006F][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX; QQCM +00D4 ; [.12C0.0020.0008.004F][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX; QQCM +1ED1 ; [.12C0.0020.0002.006F][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE; QQCM +1ED0 ; [.12C0.0020.0008.004F][.0000.003C.0002.0302][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE; QQCM +1ED3 ; [.12C0.0020.0002.006F][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE; QQCM +1ED2 ; [.12C0.0020.0008.004F][.0000.003C.0002.0302][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE; QQCM +1ED7 ; [.12C0.0020.0002.006F][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE; QQCM +1ED6 ; [.12C0.0020.0008.004F][.0000.003C.0002.0302][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE; QQCM +1ED5 ; [.12C0.0020.0002.006F][.0000.003C.0002.0302][.0000.0060.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE; QQCM +1ED4 ; [.12C0.0020.0008.004F][.0000.003C.0002.0302][.0000.0060.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE; QQCM +01D2 ; [.12C0.0020.0002.006F][.0000.0041.0002.030C] # LATIN SMALL LETTER O WITH CARON; QQCM +01D1 ; [.12C0.0020.0008.004F][.0000.0041.0002.030C] # LATIN CAPITAL LETTER O WITH CARON; QQCM +00F6 ; [.12C0.0020.0002.006F][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH DIAERESIS; QQCM +00D6 ; [.12C0.0020.0008.004F][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH DIAERESIS; QQCM +022B ; [.12C0.0020.0002.006F][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON; QQCM +022A ; [.12C0.0020.0008.004F][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON; QQCM +0151 ; [.12C0.0020.0002.006F][.0000.004D.0002.030B] # LATIN SMALL LETTER O WITH DOUBLE ACUTE; QQCM +0150 ; [.12C0.0020.0008.004F][.0000.004D.0002.030B] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE; QQCM +00F5 ; [.12C0.0020.0002.006F][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH TILDE; QQCM +00D5 ; [.12C0.0020.0008.004F][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH TILDE; QQCM +1E4D ; [.12C0.0020.0002.006F][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH TILDE AND ACUTE; QQCM +1E4C ; [.12C0.0020.0008.004F][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE; QQCM +1E4F ; [.12C0.0020.0002.006F][.0000.004E.0002.0303][.0000.0047.0002.0308] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS; QQCM +1E4E ; [.12C0.0020.0008.004F][.0000.004E.0002.0303][.0000.0047.0002.0308] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS; QQCM +022D ; [.12C0.0020.0002.006F][.0000.004E.0002.0303][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH TILDE AND MACRON; QQCM +022C ; [.12C0.0020.0008.004F][.0000.004E.0002.0303][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON; QQCM +022F ; [.12C0.0020.0002.006F][.0000.0052.0002.0307] # LATIN SMALL LETTER O WITH DOT ABOVE; QQCM +022E ; [.12C0.0020.0008.004F][.0000.0052.0002.0307] # LATIN CAPITAL LETTER O WITH DOT ABOVE; QQCM +0231 ; [.12C0.0020.0002.006F][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON; QQCM +0230 ; [.12C0.0020.0008.004F][.0000.0052.0002.0307][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON; QQCM +00F8 ; [.12C0.0020.0002.006F][.0000.0054.0002.0338] # LATIN SMALL LETTER O WITH STROKE; QQCM +00D8 ; [.12C0.0020.0008.004F][.0000.0054.0002.0338] # LATIN CAPITAL LETTER O WITH STROKE; QQCM +01FF ; [.12C0.0020.0002.006F][.0000.0054.0002.0338][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE; QQCM +01FE ; [.12C0.0020.0008.004F][.0000.0054.0002.0338][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE; QQCM +01EB ; [.12C0.0020.0002.006F][.0000.0059.0002.0328] # LATIN SMALL LETTER O WITH OGONEK; QQCM +01EA ; [.12C0.0020.0008.004F][.0000.0059.0002.0328] # LATIN CAPITAL LETTER O WITH OGONEK; QQCM +01ED ; [.12C0.0020.0002.006F][.0000.0059.0002.0328][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH OGONEK AND MACRON; QQCM +01EC ; [.12C0.0020.0008.004F][.0000.0059.0002.0328][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON; QQCM +014D ; [.12C0.0020.0002.006F][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH MACRON; QQCM +014C ; [.12C0.0020.0008.004F][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH MACRON; QQCM +1E53 ; [.12C0.0020.0002.006F][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH MACRON AND ACUTE; QQCM +1E52 ; [.12C0.0020.0008.004F][.0000.005B.0002.0304][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE; QQCM +1E51 ; [.12C0.0020.0002.006F][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH MACRON AND GRAVE; QQCM +1E50 ; [.12C0.0020.0008.004F][.0000.005B.0002.0304][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE; QQCM +1ECF ; [.12C0.0020.0002.006F][.0000.0060.0002.0309] # LATIN SMALL LETTER O WITH HOOK ABOVE; QQCM +1ECE ; [.12C0.0020.0008.004F][.0000.0060.0002.0309] # LATIN CAPITAL LETTER O WITH HOOK ABOVE; QQCM +020D ; [.12C0.0020.0002.006F][.0000.0063.0002.030F] # LATIN SMALL LETTER O WITH DOUBLE GRAVE; QQCM +020C ; [.12C0.0020.0008.004F][.0000.0063.0002.030F] # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE; QQCM +020F ; [.12C0.0020.0002.006F][.0000.0065.0002.0311] # LATIN SMALL LETTER O WITH INVERTED BREVE; QQCM +020E ; [.12C0.0020.0008.004F][.0000.0065.0002.0311] # LATIN CAPITAL LETTER O WITH INVERTED BREVE; QQCM +01A1 ; [.12C0.0020.0002.006F][.0000.006D.0002.031B] # LATIN SMALL LETTER O WITH HORN; QQCM +01A0 ; [.12C0.0020.0008.004F][.0000.006D.0002.031B] # LATIN CAPITAL LETTER O WITH HORN; QQCM +1EDB ; [.12C0.0020.0002.006F][.0000.006D.0002.031B][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH HORN AND ACUTE; QQCM +1EDA ; [.12C0.0020.0008.004F][.0000.006D.0002.031B][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE; QQCM +1EDD ; [.12C0.0020.0002.006F][.0000.006D.0002.031B][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH HORN AND GRAVE; QQCM +1EDC ; [.12C0.0020.0008.004F][.0000.006D.0002.031B][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE; QQCM +1EE1 ; [.12C0.0020.0002.006F][.0000.006D.0002.031B][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH HORN AND TILDE; QQCM +1EE0 ; [.12C0.0020.0008.004F][.0000.006D.0002.031B][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH HORN AND TILDE; QQCM +1EDF ; [.12C0.0020.0002.006F][.0000.006D.0002.031B][.0000.0060.0002.0309] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE; QQCM +1EDE ; [.12C0.0020.0008.004F][.0000.006D.0002.031B][.0000.0060.0002.0309] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE; QQCM +1EE3 ; [.12C0.0020.0002.006F][.0000.006D.0002.031B][.0000.007A.0002.0323] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW; QQCM +1EE2 ; [.12C0.0020.0008.004F][.0000.006D.0002.031B][.0000.007A.0002.0323] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW; QQCM +1ECD ; [.12C0.0020.0002.006F][.0000.007A.0002.0323] # LATIN SMALL LETTER O WITH DOT BELOW; QQCM +1ECC ; [.12C0.0020.0008.004F][.0000.007A.0002.0323] # LATIN CAPITAL LETTER O WITH DOT BELOW; QQCM +1ED9 ; [.12C0.0020.0002.006F][.0000.007A.0002.0323][.0000.003C.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW; QQCM +1ED8 ; [.12C0.0020.0008.004F][.0000.007A.0002.0323][.0000.003C.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW; QQCM +0153 ; [.12C0.0020.0004.0153][.0000.01AF.0004.0153][.119D.0020.001F.0153] # LATIN SMALL LIGATURE OE; QQKN +0152 ; [.12C0.0020.000A.0152][.0000.01AF.0004.0152][.119D.0020.001F.0152] # LATIN CAPITAL LIGATURE OE; QQKN +A74F ; [.12C0.0020.0004.A74F][.12C0.0020.0004.A74F] # LATIN SMALL LETTER OO; QQKN +A74E ; [.12C0.0020.000A.A74E][.12C0.0020.000A.A74E] # LATIN CAPITAL LETTER OO; QQKN +3375 ; [.12C0.0020.001C.3375][.13AD.0020.001D.3375] # SQUARE OV; QQKN +0276 ; [.12C6.0020.0002.0276] # LATIN LETTER SMALL CAPITAL OE +0254 ; [.12CC.0020.0002.0254] # LATIN SMALL LETTER OPEN O +0186 ; [.12CC.0020.0008.0186] # LATIN CAPITAL LETTER OPEN O +A74D ; [.12D3.0020.0002.A74D] # LATIN SMALL LETTER O WITH LOOP +A74C ; [.12D3.0020.0008.A74C] # LATIN CAPITAL LETTER O WITH LOOP +2C7A ; [.12D6.0020.0002.2C7A] # LATIN SMALL LETTER O WITH LOW RING INSIDE +0275 ; [.12D7.0020.0002.0275] # LATIN SMALL LETTER BARRED O +019F ; [.12D7.0020.0008.019F] # LATIN CAPITAL LETTER O WITH MIDDLE TILDE +A74B ; [.12DB.0020.0002.A74B] # LATIN SMALL LETTER O WITH LONG STROKE OVERLAY +A74A ; [.12DB.0020.0008.A74A] # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY +0277 ; [.12DC.0020.0002.0277] # LATIN SMALL LETTER CLOSED OMEGA +0223 ; [.12E0.0020.0002.0223] # LATIN SMALL LETTER OU +0222 ; [.12E0.0020.0008.0222] # LATIN CAPITAL LETTER OU +0070 ; [.12E5.0020.0002.0070] # LATIN SMALL LETTER P +FF50 ; [.12E5.0020.0003.FF50] # FULLWIDTH LATIN SMALL LETTER P; QQK +24AB ; [*02C8.0020.0004.24AB][.12E5.0020.0004.24AB][*02C9.0020.001F.24AB] # PARENTHESIZED LATIN SMALL LETTER P; QQKN +24DF ; [.12E5.0020.0006.24DF] # CIRCLED LATIN SMALL LETTER P; QQK +0050 ; [.12E5.0020.0008.0050] # LATIN CAPITAL LETTER P +FF30 ; [.12E5.0020.0009.FF30] # FULLWIDTH LATIN CAPITAL LETTER P; QQK +2119 ; [.12E5.0020.000B.2119] # DOUBLE-STRUCK CAPITAL P; QQK +24C5 ; [.12E5.0020.000C.24C5] # CIRCLED LATIN CAPITAL LETTER P; QQK +1E55 ; [.12E5.0020.0002.0070][.0000.0032.0002.0301] # LATIN SMALL LETTER P WITH ACUTE; QQCM +1E54 ; [.12E5.0020.0008.0050][.0000.0032.0002.0301] # LATIN CAPITAL LETTER P WITH ACUTE; QQCM +1E57 ; [.12E5.0020.0002.0070][.0000.0052.0002.0307] # LATIN SMALL LETTER P WITH DOT ABOVE; QQCM +1E56 ; [.12E5.0020.0008.0050][.0000.0052.0002.0307] # LATIN CAPITAL LETTER P WITH DOT ABOVE; QQCM +3380 ; [.12E5.0020.001C.3380][.1141.0020.001D.3380] # SQUARE PA AMPS; QQKN +33A9 ; [.12E5.0020.001D.33A9][.1141.0020.001C.33A9] # SQUARE PA; QQKN +3376 ; [.12E5.0020.001C.3376][.116F.0020.001C.3376] # SQUARE PC; QQKN +338A ; [.12E5.0020.001C.338A][.11D5.0020.001D.338A] # SQUARE PF; QQKN +33D7 ; [.12E5.0020.001D.33D7][.1205.0020.001D.33D7] # SQUARE PH; QQKN +33D8 ; [.12E5.0020.001C.33D8][*026A.0020.001C.33D8][.1291.0020.001F.33D8][*026A.0020.001F.33D8] # SQUARE PM; QQKN +33D9 ; [.12E5.0020.001D.33D9][.12E5.0020.001D.33D9][.1291.0020.001F.33D9] # SQUARE PPM; QQKN +33DA ; [.12E5.0020.001D.33DA][.130C.0020.001D.33DA] # SQUARE PR; QQKN +33B0 ; [.12E5.0020.001C.33B0][.1342.0020.001C.33B0] # SQUARE PS; QQKN +3250 ; [.12E5.0020.001D.3250][.1365.0020.001D.3250][.119D.0020.001F.3250] # PARTNERSHIP SIGN; QQKN +33B4 ; [.12E5.0020.001C.33B4][.13AD.0020.001D.33B4] # SQUARE PV; QQKN +33BA ; [.12E5.0020.001C.33BA][.13BF.0020.001D.33BA] # SQUARE PW; QQKN +2C63 ; [.12EA.0020.0008.2C63] # LATIN CAPITAL LETTER P WITH STROKE +A751 ; [.12EB.0020.0002.A751] # LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER +A750 ; [.12EB.0020.0008.A750] # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER +01A5 ; [.12EE.0020.0002.01A5] # LATIN SMALL LETTER P WITH HOOK +01A4 ; [.12EE.0020.0008.01A4] # LATIN CAPITAL LETTER P WITH HOOK +A753 ; [.12F2.0020.0002.A753] # LATIN SMALL LETTER P WITH FLOURISH +A752 ; [.12F2.0020.0008.A752] # LATIN CAPITAL LETTER P WITH FLOURISH +A755 ; [.12F3.0020.0002.A755] # LATIN SMALL LETTER P WITH SQUIRREL TAIL +A754 ; [.12F3.0020.0008.A754] # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL +A7FC ; [.12F4.0020.0002.A7FC] # LATIN EPIGRAPHIC LETTER REVERSED P +0278 ; [.12F5.0020.0002.0278] # LATIN SMALL LETTER PHI +2C77 ; [.12F9.0020.0002.2C77] # LATIN SMALL LETTER TAILLESS PHI +0071 ; [.12FA.0020.0002.0071] # LATIN SMALL LETTER Q +FF51 ; [.12FA.0020.0003.FF51] # FULLWIDTH LATIN SMALL LETTER Q; QQK +24AC ; [*02C8.0020.0004.24AC][.12FA.0020.0004.24AC][*02C9.0020.001F.24AC] # PARENTHESIZED LATIN SMALL LETTER Q; QQKN +24E0 ; [.12FA.0020.0006.24E0] # CIRCLED LATIN SMALL LETTER Q; QQK +0051 ; [.12FA.0020.0008.0051] # LATIN CAPITAL LETTER Q +FF31 ; [.12FA.0020.0009.FF31] # FULLWIDTH LATIN CAPITAL LETTER Q; QQK +211A ; [.12FA.0020.000B.211A] # DOUBLE-STRUCK CAPITAL Q; QQK +24C6 ; [.12FA.0020.000C.24C6] # CIRCLED LATIN CAPITAL LETTER Q; QQK +0239 ; [.12FA.0020.0004.0239][.12E5.0020.0004.0239] # LATIN SMALL LETTER QP DIGRAPH; QQKN +A757 ; [.12FE.0020.0002.A757] # LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER +A756 ; [.12FE.0020.0008.A756] # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER +A759 ; [.12FF.0020.0002.A759] # LATIN SMALL LETTER Q WITH DIAGONAL STROKE +A758 ; [.12FF.0020.0008.A758] # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE +02A0 ; [.1300.0020.0002.02A0] # LATIN SMALL LETTER Q WITH HOOK +024B ; [.1304.0020.0002.024B] # LATIN SMALL LETTER Q WITH HOOK TAIL +024A ; [.1304.0020.0008.024A] # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL +0138 ; [.1308.0020.0002.0138] # LATIN SMALL LETTER KRA +0072 ; [.130C.0020.0002.0072] # LATIN SMALL LETTER R +FF52 ; [.130C.0020.0003.FF52] # FULLWIDTH LATIN SMALL LETTER R; QQK +036C ; [.130C.0020.0004.036C] # COMBINING LATIN SMALL LETTER R; QQK +24AD ; [*02C8.0020.0004.24AD][.130C.0020.0004.24AD][*02C9.0020.001F.24AD] # PARENTHESIZED LATIN SMALL LETTER R; QQKN +24E1 ; [.130C.0020.0006.24E1] # CIRCLED LATIN SMALL LETTER R; QQK +0052 ; [.130C.0020.0008.0052] # LATIN CAPITAL LETTER R +FF32 ; [.130C.0020.0009.FF32] # FULLWIDTH LATIN CAPITAL LETTER R; QQK +211B ; [.130C.0020.000B.211B] # SCRIPT CAPITAL R; QQK +211C ; [.130C.0020.000B.211C] # BLACK-LETTER CAPITAL R; QQK +211D ; [.130C.0020.000B.211D] # DOUBLE-STRUCK CAPITAL R; QQK +24C7 ; [.130C.0020.000C.24C7] # CIRCLED LATIN CAPITAL LETTER R; QQK +02B3 ; [.130C.0020.0014.02B3] # MODIFIER LETTER SMALL R; QQK +0155 ; [.130C.0020.0002.0072][.0000.0032.0002.0301] # LATIN SMALL LETTER R WITH ACUTE; QQCM +0154 ; [.130C.0020.0008.0052][.0000.0032.0002.0301] # LATIN CAPITAL LETTER R WITH ACUTE; QQCM +0159 ; [.130C.0020.0002.0072][.0000.0041.0002.030C] # LATIN SMALL LETTER R WITH CARON; QQCM +0158 ; [.130C.0020.0008.0052][.0000.0041.0002.030C] # LATIN CAPITAL LETTER R WITH CARON; QQCM +1E59 ; [.130C.0020.0002.0072][.0000.0052.0002.0307] # LATIN SMALL LETTER R WITH DOT ABOVE; QQCM +1E58 ; [.130C.0020.0008.0052][.0000.0052.0002.0307] # LATIN CAPITAL LETTER R WITH DOT ABOVE; QQCM +0157 ; [.130C.0020.0002.0072][.0000.0056.0002.0327] # LATIN SMALL LETTER R WITH CEDILLA; QQCM +0156 ; [.130C.0020.0008.0052][.0000.0056.0002.0327] # LATIN CAPITAL LETTER R WITH CEDILLA; QQCM +0211 ; [.130C.0020.0002.0072][.0000.0063.0002.030F] # LATIN SMALL LETTER R WITH DOUBLE GRAVE; QQCM +0210 ; [.130C.0020.0008.0052][.0000.0063.0002.030F] # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE; QQCM +0213 ; [.130C.0020.0002.0072][.0000.0065.0002.0311] # LATIN SMALL LETTER R WITH INVERTED BREVE; QQCM +0212 ; [.130C.0020.0008.0052][.0000.0065.0002.0311] # LATIN CAPITAL LETTER R WITH INVERTED BREVE; QQCM +1E5B ; [.130C.0020.0002.0072][.0000.007A.0002.0323] # LATIN SMALL LETTER R WITH DOT BELOW; QQCM +1E5A ; [.130C.0020.0008.0052][.0000.007A.0002.0323] # LATIN CAPITAL LETTER R WITH DOT BELOW; QQCM +1E5D ; [.130C.0020.0002.0072][.0000.007A.0002.0323][.0000.005B.0002.0304] # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON; QQCM +1E5C ; [.130C.0020.0008.0052][.0000.007A.0002.0323][.0000.005B.0002.0304] # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON; QQCM +1E5F ; [.130C.0020.0002.0072][.0000.008A.0002.0331] # LATIN SMALL LETTER R WITH LINE BELOW; QQCM +1E5E ; [.130C.0020.0008.0052][.0000.008A.0002.0331] # LATIN CAPITAL LETTER R WITH LINE BELOW; QQCM +A783 ; [.130C.0020.0004.A783][.0000.01B0.0004.A783] # LATIN SMALL LETTER INSULAR R; QQKN +A782 ; [.130C.0020.000A.A782][.0000.01B0.0004.A782] # LATIN CAPITAL LETTER INSULAR R; QQKN +33AD ; [.130C.0020.001C.33AD][.1141.0020.001C.33AD][.1182.0020.001F.33AD] # SQUARE RAD; QQKN +33AE ; [.130C.0020.001C.33AE][.1141.0020.001C.33AE][.1182.0020.001F.33AE][*050B.0020.001F.33AE][.1342.0020.001F.33AE] # SQUARE RAD OVER S; QQKN +33AF ; [.130C.0020.001C.33AF][.1141.0020.001C.33AF][.1182.0020.001F.33AF][*050B.0020.001F.33AF][.1342.0020.001F.33AF][.1139.0020.001F.33AF] # SQUARE RAD OVER S SQUARED; QQKN +20A8 ; [.130C.0020.000A.20A8][.1342.0020.0004.20A8] # RUPEE SIGN; QQKN +0280 ; [.1310.0020.0002.0280] # LATIN LETTER SMALL CAPITAL R +01A6 ; [.1310.0020.0008.01A6] # LATIN LETTER YR +A75B ; [.1314.0020.0002.A75B] # LATIN SMALL LETTER R ROTUNDA +A75A ; [.1314.0020.0008.A75A] # LATIN CAPITAL LETTER R ROTUNDA +024D ; [.1316.0020.0002.024D] # LATIN SMALL LETTER R WITH STROKE +024C ; [.1316.0020.0008.024C] # LATIN CAPITAL LETTER R WITH STROKE +0279 ; [.131B.0020.0002.0279] # LATIN SMALL LETTER TURNED R +02B4 ; [.131B.0020.0014.02B4] # MODIFIER LETTER SMALL TURNED R; QQK +027A ; [.1320.0020.0002.027A] # LATIN SMALL LETTER TURNED R WITH LONG LEG +027B ; [.1325.0020.0002.027B] # LATIN SMALL LETTER TURNED R WITH HOOK +02B5 ; [.1325.0020.0014.02B5] # MODIFIER LETTER SMALL TURNED R WITH HOOK; QQK +2C79 ; [.1329.0020.0002.2C79] # LATIN SMALL LETTER TURNED R WITH TAIL +027C ; [.132A.0020.0002.027C] # LATIN SMALL LETTER R WITH LONG LEG +027D ; [.132E.0020.0002.027D] # LATIN SMALL LETTER R WITH TAIL +2C64 ; [.132E.0020.0008.2C64] # LATIN CAPITAL LETTER R WITH TAIL +027E ; [.1332.0020.0002.027E] # LATIN SMALL LETTER R WITH FISHHOOK +027F ; [.1337.0020.0002.027F] # LATIN SMALL LETTER REVERSED R WITH FISHHOOK +0281 ; [.133B.0020.0002.0281] # LATIN LETTER SMALL CAPITAL INVERTED R +02B6 ; [.133B.0020.0014.02B6] # MODIFIER LETTER SMALL CAPITAL INVERTED R; QQK +A775 ; [.133F.0020.0002.A775] # LATIN SMALL LETTER RUM +A776 ; [.1340.0020.0002.A776] # LATIN LETTER SMALL CAPITAL RUM +A75D ; [.1341.0020.0002.A75D] # LATIN SMALL LETTER RUM ROTUNDA +A75C ; [.1341.0020.0008.A75C] # LATIN CAPITAL LETTER RUM ROTUNDA +0073 ; [.1342.0020.0002.0073] # LATIN SMALL LETTER S +FF53 ; [.1342.0020.0003.FF53] # FULLWIDTH LATIN SMALL LETTER S; QQK +24AE ; [*02C8.0020.0004.24AE][.1342.0020.0004.24AE][*02C9.0020.001F.24AE] # PARENTHESIZED LATIN SMALL LETTER S; QQKN +24E2 ; [.1342.0020.0006.24E2] # CIRCLED LATIN SMALL LETTER S; QQK +0053 ; [.1342.0020.0008.0053] # LATIN CAPITAL LETTER S +FF33 ; [.1342.0020.0009.FF33] # FULLWIDTH LATIN CAPITAL LETTER S; QQK +24C8 ; [.1342.0020.000C.24C8] # CIRCLED LATIN CAPITAL LETTER S; QQK +02E2 ; [.1342.0020.0014.02E2] # MODIFIER LETTER SMALL S; QQK +015B ; [.1342.0020.0002.0073][.0000.0032.0002.0301] # LATIN SMALL LETTER S WITH ACUTE; QQCM +015A ; [.1342.0020.0008.0053][.0000.0032.0002.0301] # LATIN CAPITAL LETTER S WITH ACUTE; QQCM +1E65 ; [.1342.0020.0002.0073][.0000.0032.0002.0301][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE; QQCM +1E64 ; [.1342.0020.0008.0053][.0000.0032.0002.0301][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE; QQCM +015D ; [.1342.0020.0002.0073][.0000.003C.0002.0302] # LATIN SMALL LETTER S WITH CIRCUMFLEX; QQCM +015C ; [.1342.0020.0008.0053][.0000.003C.0002.0302] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX; QQCM +0161 ; [.1342.0020.0002.0073][.0000.0041.0002.030C] # LATIN SMALL LETTER S WITH CARON; QQCM +0160 ; [.1342.0020.0008.0053][.0000.0041.0002.030C] # LATIN CAPITAL LETTER S WITH CARON; QQCM +1E67 ; [.1342.0020.0002.0073][.0000.0041.0002.030C][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE; QQCM +1E66 ; [.1342.0020.0008.0053][.0000.0041.0002.030C][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE; QQCM +1E61 ; [.1342.0020.0002.0073][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH DOT ABOVE; QQCM +1E60 ; [.1342.0020.0008.0053][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH DOT ABOVE; QQCM +015F ; [.1342.0020.0002.0073][.0000.0056.0002.0327] # LATIN SMALL LETTER S WITH CEDILLA; QQCM +015E ; [.1342.0020.0008.0053][.0000.0056.0002.0327] # LATIN CAPITAL LETTER S WITH CEDILLA; QQCM +1E63 ; [.1342.0020.0002.0073][.0000.007A.0002.0323] # LATIN SMALL LETTER S WITH DOT BELOW; QQCM +1E62 ; [.1342.0020.0008.0053][.0000.007A.0002.0323] # LATIN CAPITAL LETTER S WITH DOT BELOW; QQCM +1E69 ; [.1342.0020.0002.0073][.0000.007A.0002.0323][.0000.0052.0002.0307] # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE; QQCM +1E68 ; [.1342.0020.0008.0053][.0000.007A.0002.0323][.0000.0052.0002.0307] # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE; QQCM +0219 ; [.1342.0020.0002.0073][.0000.0081.0002.0326] # LATIN SMALL LETTER S WITH COMMA BELOW; QQCM +0218 ; [.1342.0020.0008.0053][.0000.0081.0002.0326] # LATIN CAPITAL LETTER S WITH COMMA BELOW; QQCM +017F ; [.1342.0020.0004.017F][.0000.01B0.0004.017F] # LATIN SMALL LETTER LONG S; QQKN +A785 ; [.1342.0020.0004.A785][.0000.01B0.0004.A785] # LATIN SMALL LETTER INSULAR S; QQKN +A784 ; [.1342.0020.000A.A784][.0000.01B0.0004.A784] # LATIN CAPITAL LETTER INSULAR S; QQKN +1E9B ; [.1342.0020.0004.1E9B][.0000.01B0.0004.1E9B][.0000.0052.0002.1E9B] # LATIN SMALL LETTER LONG S WITH DOT ABOVE; QQKN +2120 ; [.1342.0020.0014.2120][.1291.0020.0014.2120] # SERVICE MARK; QQKN +33DB ; [.1342.0020.001C.33DB][.130C.0020.001C.33DB] # SQUARE SR; QQKN +00DF ; [.1342.0020.0004.00DF][.0000.01AF.0004.00DF][.1342.0020.001F.00DF] # LATIN SMALL LETTER SHARP S; QQKN +1E9E ; [.1342.0020.000A.1E9E][.0000.01AF.0004.1E9E][.1342.0020.001F.1E9E] # LATIN CAPITAL LETTER SHARP S; QQKN +FB06 ; [.1342.0020.0004.FB06][.1365.0020.0004.FB06] # LATIN SMALL LIGATURE ST; QQKN +FB05 ; [.1342.0020.0004.FB05][.0000.01B0.0004.FB05][.1365.0020.001F.FB05] # LATIN SMALL LIGATURE LONG S T; QQKN +33DC ; [.1342.0020.001D.33DC][.13AD.0020.001C.33DC] # SQUARE SV; QQKN +A731 ; [.1346.0020.0002.A731] # LATIN LETTER SMALL CAPITAL S +0282 ; [.1349.0020.0002.0282] # LATIN SMALL LETTER S WITH HOOK +023F ; [.134D.0020.0002.023F] # LATIN SMALL LETTER S WITH SWASH TAIL +1E9C ; [.1351.0020.0002.1E9C] # LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE +1E9D ; [.1352.0020.0002.1E9D] # LATIN SMALL LETTER LONG S WITH HIGH STROKE +0283 ; [.1353.0020.0002.0283] # LATIN SMALL LETTER ESH +01A9 ; [.1353.0020.0008.01A9] # LATIN CAPITAL LETTER ESH +01AA ; [.1358.0020.0002.01AA] # LATIN LETTER REVERSED ESH LOOP +0285 ; [.135C.0020.0002.0285] # LATIN SMALL LETTER SQUAT REVERSED ESH +0286 ; [.1361.0020.0002.0286] # LATIN SMALL LETTER ESH WITH CURL +0074 ; [.1365.0020.0002.0074] # LATIN SMALL LETTER T +FF54 ; [.1365.0020.0003.FF54] # FULLWIDTH LATIN SMALL LETTER T; QQK +036D ; [.1365.0020.0004.036D] # COMBINING LATIN SMALL LETTER T; QQK +24AF ; [*02C8.0020.0004.24AF][.1365.0020.0004.24AF][*02C9.0020.001F.24AF] # PARENTHESIZED LATIN SMALL LETTER T; QQKN +24E3 ; [.1365.0020.0006.24E3] # CIRCLED LATIN SMALL LETTER T; QQK +0054 ; [.1365.0020.0008.0054] # LATIN CAPITAL LETTER T +FF34 ; [.1365.0020.0009.FF34] # FULLWIDTH LATIN CAPITAL LETTER T; QQK +24C9 ; [.1365.0020.000C.24C9] # CIRCLED LATIN CAPITAL LETTER T; QQK +0165 ; [.1365.0020.0002.0074][.0000.0041.0002.030C] # LATIN SMALL LETTER T WITH CARON; QQCM +0164 ; [.1365.0020.0008.0054][.0000.0041.0002.030C] # LATIN CAPITAL LETTER T WITH CARON; QQCM +1E97 ; [.1365.0020.0002.0074][.0000.0047.0002.0308] # LATIN SMALL LETTER T WITH DIAERESIS; QQCM +1E6B ; [.1365.0020.0002.0074][.0000.0052.0002.0307] # LATIN SMALL LETTER T WITH DOT ABOVE; QQCM +1E6A ; [.1365.0020.0008.0054][.0000.0052.0002.0307] # LATIN CAPITAL LETTER T WITH DOT ABOVE; QQCM +0163 ; [.1365.0020.0002.0074][.0000.0056.0002.0327] # LATIN SMALL LETTER T WITH CEDILLA; QQCM +0162 ; [.1365.0020.0008.0054][.0000.0056.0002.0327] # LATIN CAPITAL LETTER T WITH CEDILLA; QQCM +1E6D ; [.1365.0020.0002.0074][.0000.007A.0002.0323] # LATIN SMALL LETTER T WITH DOT BELOW; QQCM +1E6C ; [.1365.0020.0008.0054][.0000.007A.0002.0323] # LATIN CAPITAL LETTER T WITH DOT BELOW; QQCM +021B ; [.1365.0020.0002.0074][.0000.0081.0002.0326] # LATIN SMALL LETTER T WITH COMMA BELOW; QQCM +021A ; [.1365.0020.0008.0054][.0000.0081.0002.0326] # LATIN CAPITAL LETTER T WITH COMMA BELOW; QQCM +1E71 ; [.1365.0020.0002.0074][.0000.0086.0002.032D] # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW; QQCM +1E70 ; [.1365.0020.0008.0054][.0000.0086.0002.032D] # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW; QQCM +1E6F ; [.1365.0020.0002.0074][.0000.008A.0002.0331] # LATIN SMALL LETTER T WITH LINE BELOW; QQCM +1E6E ; [.1365.0020.0008.0054][.0000.008A.0002.0331] # LATIN CAPITAL LETTER T WITH LINE BELOW; QQCM +A787 ; [.1365.0020.0004.A787][.0000.01B0.0004.A787] # LATIN SMALL LETTER INSULAR T; QQKN +A786 ; [.1365.0020.000A.A786][.0000.01B0.0004.A786] # LATIN CAPITAL LETTER INSULAR T; QQKN +02A8 ; [.1365.0020.0004.02A8][.117C.0020.0004.02A8] # LATIN SMALL LETTER TC DIGRAPH WITH CURL; QQKN +2121 ; [.1365.0020.000A.2121][.119D.0020.000A.2121][.1262.0020.001F.2121] # TELEPHONE SIGN; QQKN +3394 ; [.1365.0020.001D.3394][.1205.0020.001D.3394][.13DF.0020.001F.3394] # SQUARE THZ; QQKN +2122 ; [.1365.0020.0014.2122][.1291.0020.0014.2122] # TRADE MARK SIGN; QQKN +01BE ; [.1365.0020.0004.01BE][.1342.0020.0004.01BE] # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE; QQKN +02A6 ; [.1365.0020.0004.02A6][.1342.0020.0004.02A6] # LATIN SMALL LETTER TS DIGRAPH; QQKN +02A7 ; [.1365.0020.0004.02A7][.1353.0020.0004.02A7] # LATIN SMALL LETTER TESH DIGRAPH; QQKN +A729 ; [.1365.0020.0004.A729][.13DF.0020.0004.A729] # LATIN SMALL LETTER TZ; QQKN +A728 ; [.1365.0020.000A.A728][.13DF.0020.0004.A728] # LATIN CAPITAL LETTER TZ; QQKN +0167 ; [.136A.0020.0002.0167] # LATIN SMALL LETTER T WITH STROKE +0166 ; [.136A.0020.0008.0166] # LATIN CAPITAL LETTER T WITH STROKE +2C66 ; [.136E.0020.0002.2C66] # LATIN SMALL LETTER T WITH DIAGONAL STROKE +023E ; [.136E.0020.0008.023E] # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE +01AB ; [.1370.0020.0002.01AB] # LATIN SMALL LETTER T WITH PALATAL HOOK +01AD ; [.1374.0020.0002.01AD] # LATIN SMALL LETTER T WITH HOOK +01AC ; [.1374.0020.0008.01AC] # LATIN CAPITAL LETTER T WITH HOOK +0288 ; [.1378.0020.0002.0288] # LATIN SMALL LETTER T WITH RETROFLEX HOOK +01AE ; [.1378.0020.0008.01AE] # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK +0236 ; [.137C.0020.0002.0236] # LATIN SMALL LETTER T WITH CURL +A777 ; [.1380.0020.0002.A777] # LATIN SMALL LETTER TUM +0287 ; [.1381.0020.0002.0287] # LATIN SMALL LETTER TURNED T +0075 ; [.1385.0020.0002.0075] # LATIN SMALL LETTER U +FF55 ; [.1385.0020.0003.FF55] # FULLWIDTH LATIN SMALL LETTER U; QQK +0367 ; [.1385.0020.0004.0367] # COMBINING LATIN SMALL LETTER U; QQK +24B0 ; [*02C8.0020.0004.24B0][.1385.0020.0004.24B0][*02C9.0020.001F.24B0] # PARENTHESIZED LATIN SMALL LETTER U; QQKN +24E4 ; [.1385.0020.0006.24E4] # CIRCLED LATIN SMALL LETTER U; QQK +0055 ; [.1385.0020.0008.0055] # LATIN CAPITAL LETTER U +FF35 ; [.1385.0020.0009.FF35] # FULLWIDTH LATIN CAPITAL LETTER U; QQK +24CA ; [.1385.0020.000C.24CA] # CIRCLED LATIN CAPITAL LETTER U; QQK +00FA ; [.1385.0020.0002.0075][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH ACUTE; QQCM +00DA ; [.1385.0020.0008.0055][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH ACUTE; QQCM +00F9 ; [.1385.0020.0002.0075][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH GRAVE; QQCM +00D9 ; [.1385.0020.0008.0055][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH GRAVE; QQCM +016D ; [.1385.0020.0002.0075][.0000.0037.0002.0306] # LATIN SMALL LETTER U WITH BREVE; QQCM +016C ; [.1385.0020.0008.0055][.0000.0037.0002.0306] # LATIN CAPITAL LETTER U WITH BREVE; QQCM +00FB ; [.1385.0020.0002.0075][.0000.003C.0002.0302] # LATIN SMALL LETTER U WITH CIRCUMFLEX; QQCM +00DB ; [.1385.0020.0008.0055][.0000.003C.0002.0302] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX; QQCM +01D4 ; [.1385.0020.0002.0075][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH CARON; QQCM +01D3 ; [.1385.0020.0008.0055][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH CARON; QQCM +016F ; [.1385.0020.0002.0075][.0000.0043.0002.030A] # LATIN SMALL LETTER U WITH RING ABOVE; QQCM +016E ; [.1385.0020.0008.0055][.0000.0043.0002.030A] # LATIN CAPITAL LETTER U WITH RING ABOVE; QQCM +00FC ; [.1385.0020.0002.0075][.0000.0047.0002.0308] # LATIN SMALL LETTER U WITH DIAERESIS; QQCM +00DC ; [.1385.0020.0008.0055][.0000.0047.0002.0308] # LATIN CAPITAL LETTER U WITH DIAERESIS; QQCM +01D8 ; [.1385.0020.0002.0075][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE; QQCM +01D7 ; [.1385.0020.0008.0055][.0000.0047.0002.0308][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE; QQCM +01DC ; [.1385.0020.0002.0075][.0000.0047.0002.0308][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE; QQCM +01DB ; [.1385.0020.0008.0055][.0000.0047.0002.0308][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE; QQCM +01DA ; [.1385.0020.0002.0075][.0000.0047.0002.0308][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON; QQCM +01D9 ; [.1385.0020.0008.0055][.0000.0047.0002.0308][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON; QQCM +01D6 ; [.1385.0020.0002.0075][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON; QQCM +01D5 ; [.1385.0020.0008.0055][.0000.0047.0002.0308][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON; QQCM +0171 ; [.1385.0020.0002.0075][.0000.004D.0002.030B] # LATIN SMALL LETTER U WITH DOUBLE ACUTE; QQCM +0170 ; [.1385.0020.0008.0055][.0000.004D.0002.030B] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE; QQCM +0169 ; [.1385.0020.0002.0075][.0000.004E.0002.0303] # LATIN SMALL LETTER U WITH TILDE; QQCM +0168 ; [.1385.0020.0008.0055][.0000.004E.0002.0303] # LATIN CAPITAL LETTER U WITH TILDE; QQCM +1E79 ; [.1385.0020.0002.0075][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH TILDE AND ACUTE; QQCM +1E78 ; [.1385.0020.0008.0055][.0000.004E.0002.0303][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE; QQCM +0173 ; [.1385.0020.0002.0075][.0000.0059.0002.0328] # LATIN SMALL LETTER U WITH OGONEK; QQCM +0172 ; [.1385.0020.0008.0055][.0000.0059.0002.0328] # LATIN CAPITAL LETTER U WITH OGONEK; QQCM +016B ; [.1385.0020.0002.0075][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH MACRON; QQCM +016A ; [.1385.0020.0008.0055][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH MACRON; QQCM +1E7B ; [.1385.0020.0002.0075][.0000.005B.0002.0304][.0000.0047.0002.0308] # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS; QQCM +1E7A ; [.1385.0020.0008.0055][.0000.005B.0002.0304][.0000.0047.0002.0308] # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS; QQCM +1EE7 ; [.1385.0020.0002.0075][.0000.0060.0002.0309] # LATIN SMALL LETTER U WITH HOOK ABOVE; QQCM +1EE6 ; [.1385.0020.0008.0055][.0000.0060.0002.0309] # LATIN CAPITAL LETTER U WITH HOOK ABOVE; QQCM +0215 ; [.1385.0020.0002.0075][.0000.0063.0002.030F] # LATIN SMALL LETTER U WITH DOUBLE GRAVE; QQCM +0214 ; [.1385.0020.0008.0055][.0000.0063.0002.030F] # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE; QQCM +0217 ; [.1385.0020.0002.0075][.0000.0065.0002.0311] # LATIN SMALL LETTER U WITH INVERTED BREVE; QQCM +0216 ; [.1385.0020.0008.0055][.0000.0065.0002.0311] # LATIN CAPITAL LETTER U WITH INVERTED BREVE; QQCM +01B0 ; [.1385.0020.0002.0075][.0000.006D.0002.031B] # LATIN SMALL LETTER U WITH HORN; QQCM +01AF ; [.1385.0020.0008.0055][.0000.006D.0002.031B] # LATIN CAPITAL LETTER U WITH HORN; QQCM +1EE9 ; [.1385.0020.0002.0075][.0000.006D.0002.031B][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH HORN AND ACUTE; QQCM +1EE8 ; [.1385.0020.0008.0055][.0000.006D.0002.031B][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE; QQCM +1EEB ; [.1385.0020.0002.0075][.0000.006D.0002.031B][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH HORN AND GRAVE; QQCM +1EEA ; [.1385.0020.0008.0055][.0000.006D.0002.031B][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE; QQCM +1EEF ; [.1385.0020.0002.0075][.0000.006D.0002.031B][.0000.004E.0002.0303] # LATIN SMALL LETTER U WITH HORN AND TILDE; QQCM +1EEE ; [.1385.0020.0008.0055][.0000.006D.0002.031B][.0000.004E.0002.0303] # LATIN CAPITAL LETTER U WITH HORN AND TILDE; QQCM +1EED ; [.1385.0020.0002.0075][.0000.006D.0002.031B][.0000.0060.0002.0309] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE; QQCM +1EEC ; [.1385.0020.0008.0055][.0000.006D.0002.031B][.0000.0060.0002.0309] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE; QQCM +1EF1 ; [.1385.0020.0002.0075][.0000.006D.0002.031B][.0000.007A.0002.0323] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW; QQCM +1EF0 ; [.1385.0020.0008.0055][.0000.006D.0002.031B][.0000.007A.0002.0323] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW; QQCM +1EE5 ; [.1385.0020.0002.0075][.0000.007A.0002.0323] # LATIN SMALL LETTER U WITH DOT BELOW; QQCM +1EE4 ; [.1385.0020.0008.0055][.0000.007A.0002.0323] # LATIN CAPITAL LETTER U WITH DOT BELOW; QQCM +1E73 ; [.1385.0020.0002.0075][.0000.007F.0002.0324] # LATIN SMALL LETTER U WITH DIAERESIS BELOW; QQCM +1E72 ; [.1385.0020.0008.0055][.0000.007F.0002.0324] # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW; QQCM +1E77 ; [.1385.0020.0002.0075][.0000.0086.0002.032D] # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW; QQCM +1E76 ; [.1385.0020.0008.0055][.0000.0086.0002.032D] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW; QQCM +1E75 ; [.1385.0020.0002.0075][.0000.0089.0002.0330] # LATIN SMALL LETTER U WITH TILDE BELOW; QQCM +1E74 ; [.1385.0020.0008.0055][.0000.0089.0002.0330] # LATIN CAPITAL LETTER U WITH TILDE BELOW; QQCM +0289 ; [.138D.0020.0002.0289] # LATIN SMALL LETTER U BAR +0244 ; [.138D.0020.0008.0244] # LATIN CAPITAL LETTER U BAR +0265 ; [.1393.0020.0002.0265] # LATIN SMALL LETTER TURNED H +02AE ; [.1397.0020.0002.02AE] # LATIN SMALL LETTER TURNED H WITH FISHHOOK +02AF ; [.139B.0020.0002.02AF] # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL +026F ; [.139F.0020.0002.026F] # LATIN SMALL LETTER TURNED M +019C ; [.139F.0020.0008.019C] # LATIN CAPITAL LETTER TURNED M +0270 ; [.13A4.0020.0002.0270] # LATIN SMALL LETTER TURNED M WITH LONG LEG +028A ; [.13A8.0020.0002.028A] # LATIN SMALL LETTER UPSILON +01B1 ; [.13A8.0020.0008.01B1] # LATIN CAPITAL LETTER UPSILON +0076 ; [.13AD.0020.0002.0076] # LATIN SMALL LETTER V +FF56 ; [.13AD.0020.0003.FF56] # FULLWIDTH LATIN SMALL LETTER V; QQK +036E ; [.13AD.0020.0004.036E] # COMBINING LATIN SMALL LETTER V; QQK +2174 ; [.13AD.0020.0004.2174] # SMALL ROMAN NUMERAL FIVE; QQK +24B1 ; [*02C8.0020.0004.24B1][.13AD.0020.0004.24B1][*02C9.0020.001F.24B1] # PARENTHESIZED LATIN SMALL LETTER V; QQKN +24E5 ; [.13AD.0020.0006.24E5] # CIRCLED LATIN SMALL LETTER V; QQK +0056 ; [.13AD.0020.0008.0056] # LATIN CAPITAL LETTER V +FF36 ; [.13AD.0020.0009.FF36] # FULLWIDTH LATIN CAPITAL LETTER V; QQK +2164 ; [.13AD.0020.000A.2164] # ROMAN NUMERAL FIVE; QQK +24CB ; [.13AD.0020.000C.24CB] # CIRCLED LATIN CAPITAL LETTER V; QQK +2C7D ; [.13AD.0020.001D.2C7D] # MODIFIER LETTER CAPITAL V; QQK +1E7D ; [.13AD.0020.0002.0076][.0000.004E.0002.0303] # LATIN SMALL LETTER V WITH TILDE; QQCM +1E7C ; [.13AD.0020.0008.0056][.0000.004E.0002.0303] # LATIN CAPITAL LETTER V WITH TILDE; QQCM +1E7F ; [.13AD.0020.0002.0076][.0000.007A.0002.0323] # LATIN SMALL LETTER V WITH DOT BELOW; QQCM +1E7E ; [.13AD.0020.0008.0056][.0000.007A.0002.0323] # LATIN CAPITAL LETTER V WITH DOT BELOW; QQCM +2175 ; [.13AD.0020.0004.2175][.121E.0020.0004.2175] # SMALL ROMAN NUMERAL SIX; QQKN +2165 ; [.13AD.0020.000A.2165][.121E.0020.000A.2165] # ROMAN NUMERAL SIX; QQKN +2176 ; [.13AD.0020.0004.2176][.121E.0020.0004.2176][.121E.0020.001F.2176] # SMALL ROMAN NUMERAL SEVEN; QQKN +2166 ; [.13AD.0020.000A.2166][.121E.0020.000A.2166][.121E.0020.001F.2166] # ROMAN NUMERAL SEVEN; QQKN +2177 ; [.13AD.0020.0004.2177][.121E.0020.0004.2177][.121E.0020.001F.2177][.121E.0020.001F.2177] # SMALL ROMAN NUMERAL EIGHT; QQKN +2167 ; [.13AD.0020.000A.2167][.121E.0020.000A.2167][.121E.0020.001F.2167][.121E.0020.001F.2167] # ROMAN NUMERAL EIGHT; QQKN +33DE ; [.13AD.0020.001D.33DE][*050B.0020.001C.33DE][.1291.0020.001F.33DE] # SQUARE V OVER M; QQKN +A761 ; [.13AD.0020.0004.A761][.13CE.0020.0004.A761] # LATIN SMALL LETTER VY; QQKN +A760 ; [.13AD.0020.000A.A760][.13CE.0020.000A.A760] # LATIN CAPITAL LETTER VY; QQKN +A75F ; [.13B2.0020.0002.A75F] # LATIN SMALL LETTER V WITH DIAGONAL STROKE +A75E ; [.13B2.0020.0008.A75E] # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE +028B ; [.13B4.0020.0002.028B] # LATIN SMALL LETTER V WITH HOOK +01B2 ; [.13B4.0020.0008.01B2] # LATIN CAPITAL LETTER V WITH HOOK +2C71 ; [.13B8.0020.0002.2C71] # LATIN SMALL LETTER V WITH RIGHT HOOK +2C74 ; [.13B9.0020.0002.2C74] # LATIN SMALL LETTER V WITH CURL +1EFD ; [.13BA.0020.0002.1EFD] # LATIN SMALL LETTER MIDDLE-WELSH V +1EFC ; [.13BA.0020.0008.1EFC] # LATIN CAPITAL LETTER MIDDLE-WELSH V +028C ; [.13BB.0020.0002.028C] # LATIN SMALL LETTER TURNED V +0245 ; [.13BB.0020.0008.0245] # LATIN CAPITAL LETTER TURNED V +0077 ; [.13BF.0020.0002.0077] # LATIN SMALL LETTER W +FF57 ; [.13BF.0020.0003.FF57] # FULLWIDTH LATIN SMALL LETTER W; QQK +24B2 ; [*02C8.0020.0004.24B2][.13BF.0020.0004.24B2][*02C9.0020.001F.24B2] # PARENTHESIZED LATIN SMALL LETTER W; QQKN +24E6 ; [.13BF.0020.0006.24E6] # CIRCLED LATIN SMALL LETTER W; QQK +0057 ; [.13BF.0020.0008.0057] # LATIN CAPITAL LETTER W +FF37 ; [.13BF.0020.0009.FF37] # FULLWIDTH LATIN CAPITAL LETTER W; QQK +24CC ; [.13BF.0020.000C.24CC] # CIRCLED LATIN CAPITAL LETTER W; QQK +02B7 ; [.13BF.0020.0014.02B7] # MODIFIER LETTER SMALL W; QQK +1E83 ; [.13BF.0020.0002.0077][.0000.0032.0002.0301] # LATIN SMALL LETTER W WITH ACUTE; QQCM +1E82 ; [.13BF.0020.0008.0057][.0000.0032.0002.0301] # LATIN CAPITAL LETTER W WITH ACUTE; QQCM +1E81 ; [.13BF.0020.0002.0077][.0000.0035.0002.0300] # LATIN SMALL LETTER W WITH GRAVE; QQCM +1E80 ; [.13BF.0020.0008.0057][.0000.0035.0002.0300] # LATIN CAPITAL LETTER W WITH GRAVE; QQCM +0175 ; [.13BF.0020.0002.0077][.0000.003C.0002.0302] # LATIN SMALL LETTER W WITH CIRCUMFLEX; QQCM +0174 ; [.13BF.0020.0008.0057][.0000.003C.0002.0302] # LATIN CAPITAL LETTER W WITH CIRCUMFLEX; QQCM +1E98 ; [.13BF.0020.0002.0077][.0000.0043.0002.030A] # LATIN SMALL LETTER W WITH RING ABOVE; QQCM +1E85 ; [.13BF.0020.0002.0077][.0000.0047.0002.0308] # LATIN SMALL LETTER W WITH DIAERESIS; QQCM +1E84 ; [.13BF.0020.0008.0057][.0000.0047.0002.0308] # LATIN CAPITAL LETTER W WITH DIAERESIS; QQCM +1E87 ; [.13BF.0020.0002.0077][.0000.0052.0002.0307] # LATIN SMALL LETTER W WITH DOT ABOVE; QQCM +1E86 ; [.13BF.0020.0008.0057][.0000.0052.0002.0307] # LATIN CAPITAL LETTER W WITH DOT ABOVE; QQCM +1E89 ; [.13BF.0020.0002.0077][.0000.007A.0002.0323] # LATIN SMALL LETTER W WITH DOT BELOW; QQCM +1E88 ; [.13BF.0020.0008.0057][.0000.007A.0002.0323] # LATIN CAPITAL LETTER W WITH DOT BELOW; QQCM +33DD ; [.13BF.0020.001D.33DD][.1157.0020.001C.33DD] # SQUARE WB; QQKN +2C73 ; [.13C4.0020.0002.2C73] # LATIN SMALL LETTER W WITH HOOK +2C72 ; [.13C4.0020.0008.2C72] # LATIN CAPITAL LETTER W WITH HOOK +028D ; [.13C5.0020.0002.028D] # LATIN SMALL LETTER TURNED W +0078 ; [.13C9.0020.0002.0078] # LATIN SMALL LETTER X +FF58 ; [.13C9.0020.0003.FF58] # FULLWIDTH LATIN SMALL LETTER X; QQK +036F ; [.13C9.0020.0004.036F] # COMBINING LATIN SMALL LETTER X; QQK +2179 ; [.13C9.0020.0004.2179] # SMALL ROMAN NUMERAL TEN; QQK +24B3 ; [*02C8.0020.0004.24B3][.13C9.0020.0004.24B3][*02C9.0020.001F.24B3] # PARENTHESIZED LATIN SMALL LETTER X; QQKN +24E7 ; [.13C9.0020.0006.24E7] # CIRCLED LATIN SMALL LETTER X; QQK +0058 ; [.13C9.0020.0008.0058] # LATIN CAPITAL LETTER X +FF38 ; [.13C9.0020.0009.FF38] # FULLWIDTH LATIN CAPITAL LETTER X; QQK +2169 ; [.13C9.0020.000A.2169] # ROMAN NUMERAL TEN; QQK +24CD ; [.13C9.0020.000C.24CD] # CIRCLED LATIN CAPITAL LETTER X; QQK +02E3 ; [.13C9.0020.0014.02E3] # MODIFIER LETTER SMALL X; QQK +2093 ; [.13C9.0020.0015.2093] # LATIN SUBSCRIPT SMALL LETTER X; QQK +1E8D ; [.13C9.0020.0002.0078][.0000.0047.0002.0308] # LATIN SMALL LETTER X WITH DIAERESIS; QQCM +1E8C ; [.13C9.0020.0008.0058][.0000.0047.0002.0308] # LATIN CAPITAL LETTER X WITH DIAERESIS; QQCM +1E8B ; [.13C9.0020.0002.0078][.0000.0052.0002.0307] # LATIN SMALL LETTER X WITH DOT ABOVE; QQCM +1E8A ; [.13C9.0020.0008.0058][.0000.0052.0002.0307] # LATIN CAPITAL LETTER X WITH DOT ABOVE; QQCM +217A ; [.13C9.0020.0004.217A][.121E.0020.0004.217A] # SMALL ROMAN NUMERAL ELEVEN; QQKN +216A ; [.13C9.0020.000A.216A][.121E.0020.000A.216A] # ROMAN NUMERAL ELEVEN; QQKN +217B ; [.13C9.0020.0004.217B][.121E.0020.0004.217B][.121E.0020.001F.217B] # SMALL ROMAN NUMERAL TWELVE; QQKN +216B ; [.13C9.0020.000A.216B][.121E.0020.000A.216B][.121E.0020.001F.216B] # ROMAN NUMERAL TWELVE; QQKN +0079 ; [.13CE.0020.0002.0079] # LATIN SMALL LETTER Y +FF59 ; [.13CE.0020.0003.FF59] # FULLWIDTH LATIN SMALL LETTER Y; QQK +24B4 ; [*02C8.0020.0004.24B4][.13CE.0020.0004.24B4][*02C9.0020.001F.24B4] # PARENTHESIZED LATIN SMALL LETTER Y; QQKN +24E8 ; [.13CE.0020.0006.24E8] # CIRCLED LATIN SMALL LETTER Y; QQK +0059 ; [.13CE.0020.0008.0059] # LATIN CAPITAL LETTER Y +FF39 ; [.13CE.0020.0009.FF39] # FULLWIDTH LATIN CAPITAL LETTER Y; QQK +24CE ; [.13CE.0020.000C.24CE] # CIRCLED LATIN CAPITAL LETTER Y; QQK +02B8 ; [.13CE.0020.0014.02B8] # MODIFIER LETTER SMALL Y; QQK +00FD ; [.13CE.0020.0002.0079][.0000.0032.0002.0301] # LATIN SMALL LETTER Y WITH ACUTE; QQCM +00DD ; [.13CE.0020.0008.0059][.0000.0032.0002.0301] # LATIN CAPITAL LETTER Y WITH ACUTE; QQCM +1EF3 ; [.13CE.0020.0002.0079][.0000.0035.0002.0300] # LATIN SMALL LETTER Y WITH GRAVE; QQCM +1EF2 ; [.13CE.0020.0008.0059][.0000.0035.0002.0300] # LATIN CAPITAL LETTER Y WITH GRAVE; QQCM +0177 ; [.13CE.0020.0002.0079][.0000.003C.0002.0302] # LATIN SMALL LETTER Y WITH CIRCUMFLEX; QQCM +0176 ; [.13CE.0020.0008.0059][.0000.003C.0002.0302] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX; QQCM +1E99 ; [.13CE.0020.0002.0079][.0000.0043.0002.030A] # LATIN SMALL LETTER Y WITH RING ABOVE; QQCM +00FF ; [.13CE.0020.0002.0079][.0000.0047.0002.0308] # LATIN SMALL LETTER Y WITH DIAERESIS; QQCM +0178 ; [.13CE.0020.0008.0059][.0000.0047.0002.0308] # LATIN CAPITAL LETTER Y WITH DIAERESIS; QQCM +1EF9 ; [.13CE.0020.0002.0079][.0000.004E.0002.0303] # LATIN SMALL LETTER Y WITH TILDE; QQCM +1EF8 ; [.13CE.0020.0008.0059][.0000.004E.0002.0303] # LATIN CAPITAL LETTER Y WITH TILDE; QQCM +1E8F ; [.13CE.0020.0002.0079][.0000.0052.0002.0307] # LATIN SMALL LETTER Y WITH DOT ABOVE; QQCM +1E8E ; [.13CE.0020.0008.0059][.0000.0052.0002.0307] # LATIN CAPITAL LETTER Y WITH DOT ABOVE; QQCM +0233 ; [.13CE.0020.0002.0079][.0000.005B.0002.0304] # LATIN SMALL LETTER Y WITH MACRON; QQCM +0232 ; [.13CE.0020.0008.0059][.0000.005B.0002.0304] # LATIN CAPITAL LETTER Y WITH MACRON; QQCM +1EF7 ; [.13CE.0020.0002.0079][.0000.0060.0002.0309] # LATIN SMALL LETTER Y WITH HOOK ABOVE; QQCM +1EF6 ; [.13CE.0020.0008.0059][.0000.0060.0002.0309] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE; QQCM +1EF5 ; [.13CE.0020.0002.0079][.0000.007A.0002.0323] # LATIN SMALL LETTER Y WITH DOT BELOW; QQCM +1EF4 ; [.13CE.0020.0008.0059][.0000.007A.0002.0323] # LATIN CAPITAL LETTER Y WITH DOT BELOW; QQCM +028F ; [.13D2.0020.0002.028F] # LATIN LETTER SMALL CAPITAL Y +024F ; [.13D6.0020.0002.024F] # LATIN SMALL LETTER Y WITH STROKE +024E ; [.13D6.0020.0008.024E] # LATIN CAPITAL LETTER Y WITH STROKE +01B4 ; [.13DA.0020.0002.01B4] # LATIN SMALL LETTER Y WITH HOOK +01B3 ; [.13DA.0020.0008.01B3] # LATIN CAPITAL LETTER Y WITH HOOK +1EFF ; [.13DE.0020.0002.1EFF] # LATIN SMALL LETTER Y WITH LOOP +1EFE ; [.13DE.0020.0008.1EFE] # LATIN CAPITAL LETTER Y WITH LOOP +007A ; [.13DF.0020.0002.007A] # LATIN SMALL LETTER Z +FF5A ; [.13DF.0020.0003.FF5A] # FULLWIDTH LATIN SMALL LETTER Z; QQK +24B5 ; [*02C8.0020.0004.24B5][.13DF.0020.0004.24B5][*02C9.0020.001F.24B5] # PARENTHESIZED LATIN SMALL LETTER Z; QQKN +24E9 ; [.13DF.0020.0006.24E9] # CIRCLED LATIN SMALL LETTER Z; QQK +005A ; [.13DF.0020.0008.005A] # LATIN CAPITAL LETTER Z +FF3A ; [.13DF.0020.0009.FF3A] # FULLWIDTH LATIN CAPITAL LETTER Z; QQK +2124 ; [.13DF.0020.000B.2124] # DOUBLE-STRUCK CAPITAL Z; QQK +2128 ; [.13DF.0020.000B.2128] # BLACK-LETTER CAPITAL Z; QQK +24CF ; [.13DF.0020.000C.24CF] # CIRCLED LATIN CAPITAL LETTER Z; QQK +017A ; [.13DF.0020.0002.007A][.0000.0032.0002.0301] # LATIN SMALL LETTER Z WITH ACUTE; QQCM +0179 ; [.13DF.0020.0008.005A][.0000.0032.0002.0301] # LATIN CAPITAL LETTER Z WITH ACUTE; QQCM +1E91 ; [.13DF.0020.0002.007A][.0000.003C.0002.0302] # LATIN SMALL LETTER Z WITH CIRCUMFLEX; QQCM +1E90 ; [.13DF.0020.0008.005A][.0000.003C.0002.0302] # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX; QQCM +017E ; [.13DF.0020.0002.007A][.0000.0041.0002.030C] # LATIN SMALL LETTER Z WITH CARON; QQCM +017D ; [.13DF.0020.0008.005A][.0000.0041.0002.030C] # LATIN CAPITAL LETTER Z WITH CARON; QQCM +017C ; [.13DF.0020.0002.007A][.0000.0052.0002.0307] # LATIN SMALL LETTER Z WITH DOT ABOVE; QQCM +017B ; [.13DF.0020.0008.005A][.0000.0052.0002.0307] # LATIN CAPITAL LETTER Z WITH DOT ABOVE; QQCM +1E93 ; [.13DF.0020.0002.007A][.0000.007A.0002.0323] # LATIN SMALL LETTER Z WITH DOT BELOW; QQCM +1E92 ; [.13DF.0020.0008.005A][.0000.007A.0002.0323] # LATIN CAPITAL LETTER Z WITH DOT BELOW; QQCM +1E95 ; [.13DF.0020.0002.007A][.0000.008A.0002.0331] # LATIN SMALL LETTER Z WITH LINE BELOW; QQCM +1E94 ; [.13DF.0020.0008.005A][.0000.008A.0002.0331] # LATIN CAPITAL LETTER Z WITH LINE BELOW; QQCM +018D ; [.13DF.0020.0004.018D][.13BF.0020.0004.018D] # LATIN SMALL LETTER TURNED DELTA; QQKN +01B6 ; [.13E4.0020.0002.01B6] # LATIN SMALL LETTER Z WITH STROKE +01B5 ; [.13E4.0020.0008.01B5] # LATIN CAPITAL LETTER Z WITH STROKE +0225 ; [.13EA.0020.0002.0225] # LATIN SMALL LETTER Z WITH HOOK +0224 ; [.13EA.0020.0008.0224] # LATIN CAPITAL LETTER Z WITH HOOK +0290 ; [.13EE.0020.0002.0290] # LATIN SMALL LETTER Z WITH RETROFLEX HOOK +0291 ; [.13F2.0020.0002.0291] # LATIN SMALL LETTER Z WITH CURL +0240 ; [.13F6.0020.0002.0240] # LATIN SMALL LETTER Z WITH SWASH TAIL +2C6C ; [.13FA.0020.0002.2C6C] # LATIN SMALL LETTER Z WITH DESCENDER +2C6B ; [.13FA.0020.0008.2C6B] # LATIN CAPITAL LETTER Z WITH DESCENDER +A763 ; [.13FB.0020.0002.A763] # LATIN SMALL LETTER VISIGOTHIC Z +A762 ; [.13FB.0020.0008.A762] # LATIN CAPITAL LETTER VISIGOTHIC Z +0292 ; [.13FC.0020.0002.0292] # LATIN SMALL LETTER EZH +01B7 ; [.13FC.0020.0008.01B7] # LATIN CAPITAL LETTER EZH +01EF ; [.13FC.0020.0002.0292][.0000.0041.0002.030C] # LATIN SMALL LETTER EZH WITH CARON; QQCM +01EE ; [.13FC.0020.0008.01B7][.0000.0041.0002.030C] # LATIN CAPITAL LETTER EZH WITH CARON; QQCM +01B9 ; [.1401.0020.0002.01B9] # LATIN SMALL LETTER EZH REVERSED +01B8 ; [.1401.0020.0008.01B8] # LATIN CAPITAL LETTER EZH REVERSED +01BA ; [.1406.0020.0002.01BA] # LATIN SMALL LETTER EZH WITH TAIL +0293 ; [.140A.0020.0002.0293] # LATIN SMALL LETTER EZH WITH CURL +021D ; [.140E.0020.0002.021D] # LATIN SMALL LETTER YOGH +021C ; [.140E.0020.0008.021C] # LATIN CAPITAL LETTER YOGH +00FE ; [.1412.0020.0002.00FE] # LATIN SMALL LETTER THORN +00DE ; [.1412.0020.0008.00DE] # LATIN CAPITAL LETTER THORN +A765 ; [.1416.0020.0002.A765] # LATIN SMALL LETTER THORN WITH STROKE +A764 ; [.1416.0020.0008.A764] # LATIN CAPITAL LETTER THORN WITH STROKE +A767 ; [.1417.0020.0002.A767] # LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER +A766 ; [.1417.0020.0008.A766] # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER +01BF ; [.1418.0020.0002.01BF] # LATIN LETTER WYNN +01F7 ; [.1418.0020.0008.01F7] # LATIN CAPITAL LETTER WYNN +A769 ; [.141C.0020.0002.A769] # LATIN SMALL LETTER VEND +A768 ; [.141C.0020.0008.A768] # LATIN CAPITAL LETTER VEND +A76B ; [.141D.0020.0002.A76B] # LATIN SMALL LETTER ET +A76A ; [.141D.0020.0008.A76A] # LATIN CAPITAL LETTER ET +A76D ; [.141E.0020.0002.A76D] # LATIN SMALL LETTER IS +A76C ; [.141E.0020.0008.A76C] # LATIN CAPITAL LETTER IS +A76F ; [.141F.0020.0002.A76F] # LATIN SMALL LETTER CON +A76E ; [.141F.0020.0008.A76E] # LATIN CAPITAL LETTER CON +A770 ; [.141F.0020.0014.A770] # MODIFIER LETTER US; QQK +A778 ; [.1420.0020.0002.A778] # LATIN SMALL LETTER UM +01BB ; [.1421.0020.0002.01BB] # LATIN LETTER TWO WITH STROKE +A72B ; [.1425.0020.0002.A72B] # LATIN SMALL LETTER TRESILLO +A72A ; [.1425.0020.0008.A72A] # LATIN CAPITAL LETTER TRESILLO +A72D ; [.1426.0020.0002.A72D] # LATIN SMALL LETTER CUATRILLO +A72C ; [.1426.0020.0008.A72C] # LATIN CAPITAL LETTER CUATRILLO +A72F ; [.1427.0020.0002.A72F] # LATIN SMALL LETTER CUATRILLO WITH COMMA +A72E ; [.1427.0020.0008.A72E] # LATIN CAPITAL LETTER CUATRILLO WITH COMMA +01A8 ; [.1428.0020.0002.01A8] # LATIN SMALL LETTER TONE TWO +01A7 ; [.1428.0020.0008.01A7] # LATIN CAPITAL LETTER TONE TWO +01BD ; [.142C.0020.0002.01BD] # LATIN SMALL LETTER TONE FIVE +01BC ; [.142C.0020.0008.01BC] # LATIN CAPITAL LETTER TONE FIVE +0185 ; [.1430.0020.0002.0185] # LATIN SMALL LETTER TONE SIX +0184 ; [.1430.0020.0008.0184] # LATIN CAPITAL LETTER TONE SIX +0294 ; [.1434.0020.0002.0294] # LATIN LETTER GLOTTAL STOP +0242 ; [.1438.0020.0002.0242] # LATIN SMALL LETTER GLOTTAL STOP +0241 ; [.1438.0020.0008.0241] # LATIN CAPITAL LETTER GLOTTAL STOP +02C0 ; [.143C.0020.0002.02C0] # MODIFIER LETTER GLOTTAL STOP +02BC ; [.143D.0020.0002.02BC] # MODIFIER LETTER APOSTROPHE +0149 ; [.143D.0020.0004.0149][.129F.0020.0004.0149] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE; QQKN +02EE ; [.143E.0020.0002.02EE] # MODIFIER LETTER DOUBLE APOSTROPHE +02BE ; [.143F.0020.0002.02BE] # MODIFIER LETTER RIGHT HALF RING +A723 ; [.1440.0020.0002.A723] # LATIN SMALL LETTER EGYPTOLOGICAL ALEF +A722 ; [.1440.0020.0008.A722] # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF +A78C ; [.1441.0020.0002.A78C] # LATIN SMALL LETTER SALTILLO +A78B ; [.1441.0020.0008.A78B] # LATIN CAPITAL LETTER SALTILLO +0295 ; [.1442.0020.0002.0295] # LATIN LETTER PHARYNGEAL VOICED FRICATIVE +02E4 ; [.1442.0020.0014.02E4] # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP; QQK +02BF ; [.1446.0020.0002.02BF] # MODIFIER LETTER LEFT HALF RING +02C1 ; [.1447.0020.0002.02C1] # MODIFIER LETTER REVERSED GLOTTAL STOP +A725 ; [.144A.0020.0002.A725] # LATIN SMALL LETTER EGYPTOLOGICAL AIN +A724 ; [.144A.0020.0008.A724] # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN +02A1 ; [.144B.0020.0002.02A1] # LATIN LETTER GLOTTAL STOP WITH STROKE +02A2 ; [.144F.0020.0002.02A2] # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE +0296 ; [.1453.0020.0002.0296] # LATIN LETTER INVERTED GLOTTAL STOP +01C0 ; [.1457.0020.0002.01C0] # LATIN LETTER DENTAL CLICK +01C1 ; [.145B.0020.0002.01C1] # LATIN LETTER LATERAL CLICK +01C2 ; [.145F.0020.0002.01C2] # LATIN LETTER ALVEOLAR CLICK +01C3 ; [.1463.0020.0002.01C3] # LATIN LETTER RETROFLEX CLICK +0297 ; [.1467.0020.0002.0297] # LATIN LETTER STRETCHED C +0298 ; [.146B.0020.0002.0298] # LATIN LETTER BILABIAL CLICK +02AC ; [.146F.0020.0002.02AC] # LATIN LETTER BILABIAL PERCUSSIVE +02AD ; [.1473.0020.0002.02AD] # LATIN LETTER BIDENTAL PERCUSSIVE diff --git a/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rnc b/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rnc new file mode 100644 index 00000000000..7e0710da050 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rnc @@ -0,0 +1,533 @@ +namespace bcf = "https://sourceforge.net/projects/biblatex" + +start = + element bcf:controlfile { + # This is usually the same as the biblatex version string but not necessarily. + # Sometimes the BCF format version doesn't change between biblatex releases + attribute version { xsd:string {minLength="1"}}, + + # "Global" Biber options. It's not clear what a non-global biber option + # would be but just in case, we have the option ... + element bcf:options { + attribute component { "biber" }, + attribute type { "global" }, + bblencoding, + bibencoding, + debug, + mincrossrefs, + sortcase, + sortlocale?, + sortupper + }, + + # Global BibLaTeX options. That is, options that apply to all + # entrytypes (unless a more specifically scoped option is specified) + element bcf:options { + attribute component { "biblatex" }, + attribute type { "global" }, + alphaothers, + labelalpha, + labelnamespec, + labelyear, + labelyearspec, + maxitems, + maxnames, + minitems, + minnames, + singletitle, + sortalphaothers?, + sortlos, + terseinits, + uniquename, + useauthor, + useeditor, + useprefix, + usetranslator + }, + + # Per-entrytype BibLaTeX options + element bcf:options { + attribute component { "biblatex" }, + attribute type { xsd:NCName }, + alphaothers?, + labelalpha?, + labelnamespec?, + labelyear?, + labelyearspec?, + singletitle?, + skipbib?, + skiplab?, + skiplos?, + sortalphaothers?, + uniquename?, + useauthor?, + useeditor?, + useprefix?, + usetranslator? + }*, + + # Display modes definition + element bcf:displaymodes { + element bcf:displaymode { + element bcf:target { "*" | xsd:string {minLength="1"}}, + element bcf:mode { "original" | "uniform" | "romanised" | "translated" }+ + }+ + }?, + + # Cross-reference inheritance specifications + element bcf:inheritance { + # Defaults + element bcf:defaults { + # Whether to inherit all fields + attribute inherit_all { "true" | "false" }, + # Should we overwrite the target field if it exists? + attribute override_target { "true" | "false" }, + # Default inherit_all and override_target settings for entrytype source/target pairs + element bcf:type_pair { + attribute source { "*" | xsd:string {minLength="1"}}, + attribute target { "*" | xsd:string {minLength="1"}}, + attribute inherit_all { "true" | "false" }?, + attribute override_target { "true" | "false" }?, + empty + }* + }, + # An inheritance specification + element bcf:inherit { + # applies to these pairs of source/target entrytypes + element bcf:type_pair { + attribute source { "*" | xsd:string {minLength="1"}}, + attribute target { "*" | xsd:string {minLength="1"}}, + empty + }+, + # and here are the field specifications + element bcf:field { + ( + # either a "skip this field" specification + # so we can say inherit all except certain fields OR ... + (attribute source { xsd:string }, + attribute skip { "true" | "false" }) | + # ... a source and target field with an optional override attribute + (attribute source { xsd:string {minLength="1"}}, + attribute target { xsd:string {minLength="1"}}, + attribute override_target { "true" | "false" }?) + ), + empty + }+ + }* + }, + + # Global sorting specification + sorting, + # Structure specification + element bcf:structure { + # Valid datetypes + element bcf:datetypes { + element bcf:datetype { xsd:NCName }+ + }, + # Valid entrytypes + element bcf:entrytypes { + element bcf:entrytype { xsd:NCName }+ + }, + # Entrytype and field alias specifications + element bcf:aliases { + element bcf:alias { + ( + ( + # entrytype alias specification + attribute type { "entrytype" }, + # alias name + element bcf:name { xsd:NCName }, + # canonical name + element bcf:realname { xsd:NCName }, + # Any other fields that need setting when resolving the alias + # for example when "phdthesis" -> "thesis", we also need to set + # "type" = "phdthesis" + element bcf:field { + attribute name { xsd:NCName }, + xsd:NCName + }* ) | + ( + # field alias specification + attribute type { "field" }, + # alias name + element bcf:name { xsd:NCName }, + # canonical name + element bcf:realname { xsd:NCName } + ) + ) + }+ + }?, + # BibLaTeX field types. Biber uses this to determine how to output various types + # to the .bbl + element bcf:fields { + element bcf:field { + # fieldtype is "field" or "list" + attribute fieldtype { "field" | "list" }, + # datatype of field content + attribute datatype { "literal" | "name" | "key" | "date" | "verbatim" | "integer" | "range" | "special" }, + # Are we allowed to output a null field value to the .bbl for this field? + attribute nullok { "true" }?, + # Should this field be skipped and not output to the .bbl? + attribute skip_output { "true" }?, + xsd:NCName + }+ + }, + # Allowable fields for entrytypes + # Only one specification per entrytype: even though it might be nice to have several + # so that one could share information, this would be hard to manage and confusing as it + # not be visible in one place which fields were valid for an entrytype. + element bcf:entryfields { + element bcf:entrytype { xsd:NCName }+, + (element bcf:field { "ALL" } | + element bcf:field { xsd:NCName }+) + }+, + # Constraints on field (co-)existence and format + element bcf:constraints { + # Set of entrytypes that this constraint applies to + # An entrytype can be specified in multiple constraints + # + # Special entrytype "ALL" can be used to cover, well, all entrytypes ... + (element bcf:entrytype { "ALL" } | + element bcf:entrytype { xsd:NCName }+), + # A constraint specification + element bcf:constraint { + ( + # Conditional constraints have an antecedent and consequent + # both of which have a quantifier. This allows you to enforce + # constraints like: + # + # if field a,b,c are all present then one of x,y,z must be + # if one of field a,b,c are present then none of x,y,z must be + # etc. + (attribute type { "conditional" }, + element bcf:antecedent { + attribute quant { "all" | "one" | "none"}, + element bcf:field { xsd:NCName }+ + }, + element bcf:consequent { + attribute quant { "all" | "one" | "none"}, + element bcf:field { xsd:NCName }+ + } + ) | + # Datatype and format constraints + (attribute type { "data" }, + # datespec is a BibLaTeX date range specification + # range* attributes are for limiting integer type range + attribute datatype { "integer" | "datespec" }?, + attribute rangemin { xsd:int }?, + attribute rangemax { xsd:int }?, + element bcf:field { xsd:NCName }+ + ) | + # Mandatoriness constraints which say which fields must appear + (attribute type { "mandatory" }, + (element bcf:field { xsd:NCName } | + # An XOR set of fields so you can enforce: + # + # One (but not more) of fields a,b,c must exist + element bcf:fieldxor { + element bcf:field { + attribute coerce { "true" }?, + xsd:NCName + }+ + } | + # An OR set of fields so you can enforce: + # + # One (possibly more of fields a,b,c must exist + element bcf:fieldor { + element bcf:field { xsd:NCName }+ + } + )+ + ) + ) + }* + }+ + }?, + # Section specifications + secspec+ + } + +sorting = + element bcf:sorting { + # presort default strings for different entry types + element bcf:presort { + attribute type { xsd:NCName }?, + text + }+, + # excludes of certain fields for sorting for specified types + element bcf:sortexclusion { + attribute type { text }, + element bcf:exclusion { xsd:NCName }+ + }*, + sort+ + } + +sort = + # sort specification + element bcf:sort { + # order of this specification in the set of all sort specifications + attribute order { xsd:integer }, + # Should we stop generating sorting information after this item? + attribute final { xsd:integer }?, + # Sort ascending or descending + attribute sort_direction { "ascending" | "descending" }?, + # Sort case sensitive or not? + attribute sortcase { "0" | "1" }?, + # Sort upper before lower? + attribute sortupper { "0" | "1" }?, + # A sort item specification - a field or pseudo-field to get sort information from + element bcf:sortitem { + # order of this item in the set of all other item specifications + attribute order { xsd:integer }, + # Just use a part of the item information for sorting? + attribute substring_side { "left" | "right" }?, + attribute substring_width { xsd:integer }?, + # Pad the item information when sorting with it? + attribute pad_side { "left" | "right" }?, + attribute pad_width { xsd:integer }?, + attribute pad_char { xsd:string { minLength = "1" maxLength = "1" } }?, + text + }+ + }+ + +# Section specification +secspec = + # data sources + element bcf:bibdata { + # which sections the datafiles are for + attribute section { xsd:integer }, + element bcf:datasource { + attribute type { "file" }, + attribute datatype { "bibtex" | "biblatexml" | "ris" }?, + xsd:anyURI + }* + }?, + # citekeys or citekey sets in each section + element bcf:section { + attribute number { xsd:integer }, + element bcf:citekey { + ( attribute type { "set" }, + attribute members { xsd:string {minLength="1"}}, + xsd:string {minLength="1"}) | + xsd:string {minLength="1"} + }*, + element bcf:sectionlist { + attribute label { xsd:string {minLength="1"}}, + attribute type { "entry" | "key" | "shorthand" }, + (filter | orfilter )*, + element bcf:sorting { + sort+ + }? + }* + } + +orfilter = element bcf:orfilter { + filter+ + } + +filter = element bcf:filter { + attribute type { "type" | "nottype" | "subtype" | "notsubtype" + | "keyword" | "notkeyword" | "field" | "notfield" }, + xsd:string {minLength="1"} + } + + +# option definitions +terseinits = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "terseinits" }, + element bcf:value { "0" | "1" } + } +useprefix = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "useprefix" }, + element bcf:value { "0" | "1" } + } +useauthor = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "useauthor" }, + element bcf:value { "0" | "1" } + } +useeditor = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "useeditor" }, + element bcf:value { "0" | "1" } + } +usetranslator = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "usetranslator" }, + element bcf:value { "0" | "1" } + } +labelalpha = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "labelalpha" }, + element bcf:value { "0" | "1" } + } +labelyear = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "labelyear" }, + element bcf:value { "0" | "1" } + } +labelyearspec = + element bcf:option { + attribute type { "multivalued" }, + element bcf:key { "labelyearspec" }, + element bcf:value { + attribute order { xsd:integer }, + xsd:NCName + }+ + } +singletitle = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "singletitle" }, + element bcf:value { "0" | "1" } + } +skipbib = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "skipbib" }, + element bcf:value { "0" | "1" } + } +skiplab = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "skiplab" }, + element bcf:value { "0" | "1" } + } +skiplos = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "skiplos" }, + element bcf:value { "0" | "1" } + } +uniquename = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "uniquename" }, + element bcf:value { "0" | "1" | "2" } + } +maxitems = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "maxitems" }, + element bcf:value { xsd:integer } + } +maxnames = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "maxnames" }, + element bcf:value { xsd:integer } + } +minitems = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "minitems" }, + element bcf:value { xsd:integer } + } +minnames = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "minnames" }, + element bcf:value { xsd:integer } + } +sortlos = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "sortlos" }, + element bcf:value { "0" | "1" } + } +labelnamespec = + element bcf:option { + attribute type { "multivalued" }, + element bcf:key { "labelnamespec" }, + element bcf:value { + attribute order { xsd:integer }, + xsd:NCName + }+ + } +mincrossrefs = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "mincrossrefs" }, + element bcf:value { xsd:integer } + } +debug = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "debug" }, + element bcf:value { "0" | "1" } + } +wrapline = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "wrapline" }, + element bcf:value { xsd:integer } + } +bblencoding = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "bblencoding" }, + element bcf:value { xsd:NCName } + } +bibencoding = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "bibencoding" }, + element bcf:value { xsd:NCName } + } +sortcase = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "sortcase" }, + element bcf:value { "0" | "1" } + } +alphaothers = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "alphaothers" }, + element bcf:value { + xsd:normalizedString { pattern = "\S+" } + } + } +# This is xsd:language but also allows underscore separators +sortlocale = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "sortlocale" }, + element bcf:value { + xsd:normalizedString { pattern = "([a-zA-Z]{2}|[iI][\-_][a-zA-Z]+|[xX][\-_][a-zA-Z]{1,10})([\-_][a-zA-Z]{1,10})*" + } + } + } +sortupper = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "sortupper" }, + element bcf:value { "0" | "1" } + } +sortalphaothers = + element bcf:option { + attribute type { "singlevalued" }, + element bcf:key { "sortalphaothers" }, + element bcf:value { + xsd:normalizedString { pattern = "\S+" } + } + } + +## these are perl regexes +nonsortprefixes = + element bcf:nonsortprefixes { + element bcf:item { text }+ + } +nonsortdiacritics = + element bcf:nonsortdiacritics { + element bcf:item { text }+ + } + diff --git a/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rng b/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rng new file mode 100644 index 00000000000..cca6302496e --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rng @@ -0,0 +1,1267 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:bcf="https://sourceforge.net/projects/biblatex" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <start> + <element name="bcf:controlfile"> + <!-- + This is usually the same as the biblatex version string but not necessarily. + Sometimes the BCF format version doesn't change between biblatex releases + --> + <attribute name="version"> + <data type="string"> + <param name="minLength">1</param> + </data> + </attribute> + <!-- + "Global" Biber options. It's not clear what a non-global biber option + would be but just in case, we have the option ... + --> + <element name="bcf:options"> + <attribute name="component"> + <value>biber</value> + </attribute> + <attribute name="type"> + <value>global</value> + </attribute> + <ref name="bblencoding"/> + <ref name="bibencoding"/> + <ref name="debug"/> + <ref name="mincrossrefs"/> + <ref name="sortcase"/> + <optional> + <ref name="sortlocale"/> + </optional> + <ref name="sortupper"/> + </element> + <!-- + Global BibLaTeX options. That is, options that apply to all + entrytypes (unless a more specifically scoped option is specified) + --> + <element name="bcf:options"> + <attribute name="component"> + <value>biblatex</value> + </attribute> + <attribute name="type"> + <value>global</value> + </attribute> + <ref name="alphaothers"/> + <ref name="labelalpha"/> + <ref name="labelnamespec"/> + <ref name="labelyear"/> + <ref name="labelyearspec"/> + <ref name="maxitems"/> + <ref name="maxnames"/> + <ref name="minitems"/> + <ref name="minnames"/> + <ref name="singletitle"/> + <optional> + <ref name="sortalphaothers"/> + </optional> + <ref name="sortlos"/> + <ref name="terseinits"/> + <ref name="uniquename"/> + <ref name="useauthor"/> + <ref name="useeditor"/> + <ref name="useprefix"/> + <ref name="usetranslator"/> + </element> + <zeroOrMore> + <!-- Per-entrytype BibLaTeX options --> + <element name="bcf:options"> + <attribute name="component"> + <value>biblatex</value> + </attribute> + <attribute name="type"> + <data type="NCName"/> + </attribute> + <optional> + <ref name="alphaothers"/> + </optional> + <optional> + <ref name="labelalpha"/> + </optional> + <optional> + <ref name="labelnamespec"/> + </optional> + <optional> + <ref name="labelyear"/> + </optional> + <optional> + <ref name="labelyearspec"/> + </optional> + <optional> + <ref name="singletitle"/> + </optional> + <optional> + <ref name="skipbib"/> + </optional> + <optional> + <ref name="skiplab"/> + </optional> + <optional> + <ref name="skiplos"/> + </optional> + <optional> + <ref name="sortalphaothers"/> + </optional> + <optional> + <ref name="uniquename"/> + </optional> + <optional> + <ref name="useauthor"/> + </optional> + <optional> + <ref name="useeditor"/> + </optional> + <optional> + <ref name="useprefix"/> + </optional> + <optional> + <ref name="usetranslator"/> + </optional> + </element> + </zeroOrMore> + <optional> + <!-- Display modes definition --> + <element name="bcf:displaymodes"> + <oneOrMore> + <element name="bcf:displaymode"> + <element name="bcf:target"> + <choice> + <value>*</value> + <data type="string"> + <param name="minLength">1</param> + </data> + </choice> + </element> + <oneOrMore> + <element name="bcf:mode"> + <choice> + <value>original</value> + <value>uniform</value> + <value>romanised</value> + <value>translated</value> + </choice> + </element> + </oneOrMore> + </element> + </oneOrMore> + </element> + </optional> + <!-- Cross-reference inheritance specifications --> + <element name="bcf:inheritance"> + <!-- Defaults --> + <element name="bcf:defaults"> + <!-- Whether to inherit all fields --> + <attribute name="inherit_all"> + <choice> + <value>true</value> + <value>false</value> + </choice> + </attribute> + <!-- Should we overwrite the target field if it exists? --> + <attribute name="override_target"> + <choice> + <value>true</value> + <value>false</value> + </choice> + </attribute> + <zeroOrMore> + <!-- Default inherit_all and override_target settings for entrytype source/target pairs --> + <element name="bcf:type_pair"> + <attribute name="source"> + <choice> + <value>*</value> + <data type="string"> + <param name="minLength">1</param> + </data> + </choice> + </attribute> + <attribute name="target"> + <choice> + <value>*</value> + <data type="string"> + <param name="minLength">1</param> + </data> + </choice> + </attribute> + <optional> + <attribute name="inherit_all"> + <choice> + <value>true</value> + <value>false</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="override_target"> + <choice> + <value>true</value> + <value>false</value> + </choice> + </attribute> + </optional> + <empty/> + </element> + </zeroOrMore> + </element> + <zeroOrMore> + <!-- An inheritance specification --> + <element name="bcf:inherit"> + <oneOrMore> + <!-- applies to these pairs of source/target entrytypes --> + <element name="bcf:type_pair"> + <attribute name="source"> + <choice> + <value>*</value> + <data type="string"> + <param name="minLength">1</param> + </data> + </choice> + </attribute> + <attribute name="target"> + <choice> + <value>*</value> + <data type="string"> + <param name="minLength">1</param> + </data> + </choice> + </attribute> + <empty/> + </element> + </oneOrMore> + <oneOrMore> + <!-- and here are the field specifications --> + <element name="bcf:field"> + <choice> + <!-- + either a "skip this field" specification + so we can say inherit all except certain fields OR ... + --> + <group> + <attribute name="source"> + <data type="string"/> + </attribute> + <attribute name="skip"> + <choice> + <value>true</value> + <value>false</value> + </choice> + </attribute> + </group> + <!-- ... a source and target field with an optional override attribute --> + <group> + <attribute name="source"> + <data type="string"> + <param name="minLength">1</param> + </data> + </attribute> + <attribute name="target"> + <data type="string"> + <param name="minLength">1</param> + </data> + </attribute> + <optional> + <attribute name="override_target"> + <choice> + <value>true</value> + <value>false</value> + </choice> + </attribute> + </optional> + </group> + </choice> + <empty/> + </element> + </oneOrMore> + </element> + </zeroOrMore> + </element> + <!-- Global sorting specification --> + <ref name="sorting"/> + <optional> + <!-- Structure specification --> + <element name="bcf:structure"> + <!-- Valid datetypes --> + <element name="bcf:datetypes"> + <oneOrMore> + <element name="bcf:datetype"> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + <!-- Valid entrytypes --> + <element name="bcf:entrytypes"> + <oneOrMore> + <element name="bcf:entrytype"> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + <optional> + <!-- Entrytype and field alias specifications --> + <element name="bcf:aliases"> + <oneOrMore> + <element name="bcf:alias"> + <choice> + <group> + <!-- entrytype alias specification --> + <attribute name="type"> + <value>entrytype</value> + </attribute> + <!-- alias name --> + <element name="bcf:name"> + <data type="NCName"/> + </element> + <!-- canonical name --> + <element name="bcf:realname"> + <data type="NCName"/> + </element> + <zeroOrMore> + <!-- + Any other fields that need setting when resolving the alias + for example when "phdthesis" -> "thesis", we also need to set + "type" = "phdthesis" + --> + <element name="bcf:field"> + <attribute name="name"> + <data type="NCName"/> + </attribute> + <data type="NCName"/> + </element> + </zeroOrMore> + </group> + <group> + <!-- field alias specification --> + <attribute name="type"> + <value>field</value> + </attribute> + <!-- alias name --> + <element name="bcf:name"> + <data type="NCName"/> + </element> + <!-- canonical name --> + <element name="bcf:realname"> + <data type="NCName"/> + </element> + </group> + </choice> + </element> + </oneOrMore> + </element> + </optional> + <!-- + BibLaTeX field types. Biber uses this to determine how to output various types + to the .bbl + --> + <element name="bcf:fields"> + <oneOrMore> + <element name="bcf:field"> + <!-- fieldtype is "field" or "list" --> + <attribute name="fieldtype"> + <choice> + <value>field</value> + <value>list</value> + </choice> + </attribute> + <!-- datatype of field content --> + <attribute name="datatype"> + <choice> + <value>literal</value> + <value>name</value> + <value>key</value> + <value>date</value> + <value>verbatim</value> + <value>integer</value> + <value>range</value> + <value>special</value> + </choice> + </attribute> + <optional> + <!-- Are we allowed to output a null field value to the .bbl for this field? --> + <attribute name="nullok"> + <value>true</value> + </attribute> + </optional> + <optional> + <!-- Should this field be skipped and not output to the .bbl? --> + <attribute name="skip_output"> + <value>true</value> + </attribute> + </optional> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + <oneOrMore> + <!-- + Allowable fields for entrytypes + Only one specification per entrytype: even though it might be nice to have several + so that one could share information, this would be hard to manage and confusing as it + not be visible in one place which fields were valid for an entrytype. + --> + <element name="bcf:entryfields"> + <oneOrMore> + <element name="bcf:entrytype"> + <data type="NCName"/> + </element> + </oneOrMore> + <choice> + <element name="bcf:field"> + <value>ALL</value> + </element> + <oneOrMore> + <element name="bcf:field"> + <data type="NCName"/> + </element> + </oneOrMore> + </choice> + </element> + </oneOrMore> + <oneOrMore> + <!-- Constraints on field (co-)existence and format --> + <element name="bcf:constraints"> + <!-- + Set of entrytypes that this constraint applies to + An entrytype can be specified in multiple constraints + + Special entrytype "ALL" can be used to cover, well, all entrytypes ... + --> + <choice> + <element name="bcf:entrytype"> + <value>ALL</value> + </element> + <oneOrMore> + <element name="bcf:entrytype"> + <data type="NCName"/> + </element> + </oneOrMore> + </choice> + <zeroOrMore> + <!-- A constraint specification --> + <element name="bcf:constraint"> + <choice> + <!-- + Conditional constraints have an antecedent and consequent + both of which have a quantifier. This allows you to enforce + constraints like: + + if field a,b,c are all present then one of x,y,z must be + if one of field a,b,c are present then none of x,y,z must be + etc. + --> + <group> + <attribute name="type"> + <value>conditional</value> + </attribute> + <element name="bcf:antecedent"> + <attribute name="quant"> + <choice> + <value>all</value> + <value>one</value> + <value>none</value> + </choice> + </attribute> + <oneOrMore> + <element name="bcf:field"> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + <element name="bcf:consequent"> + <attribute name="quant"> + <choice> + <value>all</value> + <value>one</value> + <value>none</value> + </choice> + </attribute> + <oneOrMore> + <element name="bcf:field"> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + </group> + <!-- Datatype and format constraints --> + <group> + <attribute name="type"> + <value>data</value> + </attribute> + <optional> + <!-- + datespec is a BibLaTeX date range specification + range* attributes are for limiting integer type range + --> + <attribute name="datatype"> + <choice> + <value>integer</value> + <value>datespec</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="rangemin"> + <data type="int"/> + </attribute> + </optional> + <optional> + <attribute name="rangemax"> + <data type="int"/> + </attribute> + </optional> + <oneOrMore> + <element name="bcf:field"> + <data type="NCName"/> + </element> + </oneOrMore> + </group> + <!-- Mandatoriness constraints which say which fields must appear --> + <group> + <attribute name="type"> + <value>mandatory</value> + </attribute> + <oneOrMore> + <choice> + <element name="bcf:field"> + <data type="NCName"/> + </element> + <!-- + An XOR set of fields so you can enforce: + + One (but not more) of fields a,b,c must exist + --> + <element name="bcf:fieldxor"> + <oneOrMore> + <element name="bcf:field"> + <optional> + <attribute name="coerce"> + <value>true</value> + </attribute> + </optional> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + <!-- + An OR set of fields so you can enforce: + + One (possibly more of fields a,b,c must exist + --> + <element name="bcf:fieldor"> + <oneOrMore> + <element name="bcf:field"> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + </choice> + </oneOrMore> + </group> + </choice> + </element> + </zeroOrMore> + </element> + </oneOrMore> + </element> + </optional> + <oneOrMore> + <!-- Section specifications --> + <ref name="secspec"/> + </oneOrMore> + </element> + </start> + <define name="sorting"> + <element name="bcf:sorting"> + <oneOrMore> + <!-- presort default strings for different entry types --> + <element name="bcf:presort"> + <optional> + <attribute name="type"> + <data type="NCName"/> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + <zeroOrMore> + <!-- excludes of certain fields for sorting for specified types --> + <element name="bcf:sortexclusion"> + <attribute name="type"/> + <oneOrMore> + <element name="bcf:exclusion"> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + </zeroOrMore> + <oneOrMore> + <ref name="sort"/> + </oneOrMore> + </element> + </define> + <define name="sort"> + <oneOrMore> + <!-- sort specification --> + <element name="bcf:sort"> + <!-- order of this specification in the set of all sort specifications --> + <attribute name="order"> + <data type="integer"/> + </attribute> + <optional> + <!-- Should we stop generating sorting information after this item? --> + <attribute name="final"> + <data type="integer"/> + </attribute> + </optional> + <optional> + <!-- Sort ascending or descending --> + <attribute name="sort_direction"> + <choice> + <value>ascending</value> + <value>descending</value> + </choice> + </attribute> + </optional> + <optional> + <!-- Sort case sensitive or not? --> + <attribute name="sortcase"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </attribute> + </optional> + <optional> + <!-- Sort upper before lower? --> + <attribute name="sortupper"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </attribute> + </optional> + <oneOrMore> + <!-- A sort item specification - a field or pseudo-field to get sort information from --> + <element name="bcf:sortitem"> + <!-- order of this item in the set of all other item specifications --> + <attribute name="order"> + <data type="integer"/> + </attribute> + <optional> + <!-- Just use a part of the item information for sorting? --> + <attribute name="substring_side"> + <choice> + <value>left</value> + <value>right</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="substring_width"> + <data type="integer"/> + </attribute> + </optional> + <optional> + <!-- Pad the item information when sorting with it? --> + <attribute name="pad_side"> + <choice> + <value>left</value> + <value>right</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="pad_width"> + <data type="integer"/> + </attribute> + </optional> + <optional> + <attribute name="pad_char"> + <data type="string"> + <param name="minLength">1</param> + <param name="maxLength">1</param> + </data> + </attribute> + </optional> + <text/> + </element> + </oneOrMore> + </element> + </oneOrMore> + </define> + <!-- Section specification --> + <define name="secspec"> + <optional> + <!-- data sources --> + <element name="bcf:bibdata"> + <!-- which sections the datafiles are for --> + <attribute name="section"> + <data type="integer"/> + </attribute> + <zeroOrMore> + <element name="bcf:datasource"> + <attribute name="type"> + <value>file</value> + </attribute> + <optional> + <attribute name="datatype"> + <choice> + <value>bibtex</value> + <value>biblatexml</value> + <value>ris</value> + </choice> + </attribute> + </optional> + <data type="anyURI"/> + </element> + </zeroOrMore> + </element> + </optional> + <!-- citekeys or citekey sets in each section --> + <element name="bcf:section"> + <attribute name="number"> + <data type="integer"/> + </attribute> + <zeroOrMore> + <element name="bcf:citekey"> + <choice> + <group> + <attribute name="type"> + <value>set</value> + </attribute> + <attribute name="members"> + <data type="string"> + <param name="minLength">1</param> + </data> + </attribute> + <data type="string"> + <param name="minLength">1</param> + </data> + </group> + <data type="string"> + <param name="minLength">1</param> + </data> + </choice> + </element> + </zeroOrMore> + <zeroOrMore> + <element name="bcf:sectionlist"> + <attribute name="label"> + <data type="string"> + <param name="minLength">1</param> + </data> + </attribute> + <attribute name="type"> + <choice> + <value>entry</value> + <value>key</value> + <value>shorthand</value> + </choice> + </attribute> + <zeroOrMore> + <choice> + <ref name="filter"/> + <ref name="orfilter"/> + </choice> + </zeroOrMore> + <optional> + <element name="bcf:sorting"> + <oneOrMore> + <ref name="sort"/> + </oneOrMore> + </element> + </optional> + </element> + </zeroOrMore> + </element> + </define> + <define name="orfilter"> + <element name="bcf:orfilter"> + <oneOrMore> + <ref name="filter"/> + </oneOrMore> + </element> + </define> + <define name="filter"> + <element name="bcf:filter"> + <attribute name="type"> + <choice> + <value>type</value> + <value>nottype</value> + <value>subtype</value> + <value>notsubtype</value> + <value>keyword</value> + <value>notkeyword</value> + <value>field</value> + <value>notfield</value> + </choice> + </attribute> + <data type="string"> + <param name="minLength">1</param> + </data> + </element> + </define> + <!-- option definitions --> + <define name="terseinits"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>terseinits</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="useprefix"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>useprefix</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="useauthor"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>useauthor</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="useeditor"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>useeditor</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="usetranslator"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>usetranslator</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="labelalpha"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>labelalpha</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="labelyear"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>labelyear</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="labelyearspec"> + <element name="bcf:option"> + <attribute name="type"> + <value>multivalued</value> + </attribute> + <element name="bcf:key"> + <value>labelyearspec</value> + </element> + <oneOrMore> + <element name="bcf:value"> + <attribute name="order"> + <data type="integer"/> + </attribute> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + </define> + <define name="singletitle"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>singletitle</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="skipbib"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>skipbib</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="skiplab"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>skiplab</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="skiplos"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>skiplos</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="uniquename"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>uniquename</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + <value>2</value> + </choice> + </element> + </element> + </define> + <define name="maxitems"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>maxitems</value> + </element> + <element name="bcf:value"> + <data type="integer"/> + </element> + </element> + </define> + <define name="maxnames"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>maxnames</value> + </element> + <element name="bcf:value"> + <data type="integer"/> + </element> + </element> + </define> + <define name="minitems"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>minitems</value> + </element> + <element name="bcf:value"> + <data type="integer"/> + </element> + </element> + </define> + <define name="minnames"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>minnames</value> + </element> + <element name="bcf:value"> + <data type="integer"/> + </element> + </element> + </define> + <define name="sortlos"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>sortlos</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="labelnamespec"> + <element name="bcf:option"> + <attribute name="type"> + <value>multivalued</value> + </attribute> + <element name="bcf:key"> + <value>labelnamespec</value> + </element> + <oneOrMore> + <element name="bcf:value"> + <attribute name="order"> + <data type="integer"/> + </attribute> + <data type="NCName"/> + </element> + </oneOrMore> + </element> + </define> + <define name="mincrossrefs"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>mincrossrefs</value> + </element> + <element name="bcf:value"> + <data type="integer"/> + </element> + </element> + </define> + <define name="debug"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>debug</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="wrapline"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>wrapline</value> + </element> + <element name="bcf:value"> + <data type="integer"/> + </element> + </element> + </define> + <define name="bblencoding"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>bblencoding</value> + </element> + <element name="bcf:value"> + <data type="NCName"/> + </element> + </element> + </define> + <define name="bibencoding"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>bibencoding</value> + </element> + <element name="bcf:value"> + <data type="NCName"/> + </element> + </element> + </define> + <define name="sortcase"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>sortcase</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="alphaothers"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>alphaothers</value> + </element> + <element name="bcf:value"> + <data type="normalizedString"> + <param name="pattern">\S+</param> + </data> + </element> + </element> + </define> + <!-- This is xsd:language but also allows underscore separators --> + <define name="sortlocale"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>sortlocale</value> + </element> + <element name="bcf:value"> + <data type="normalizedString"> + <param name="pattern">([a-zA-Z]{2}|[iI][\-_][a-zA-Z]+|[xX][\-_][a-zA-Z]{1,10})([\-_][a-zA-Z]{1,10})*</param> + </data> + </element> + </element> + </define> + <define name="sortupper"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>sortupper</value> + </element> + <element name="bcf:value"> + <choice> + <value>0</value> + <value>1</value> + </choice> + </element> + </element> + </define> + <define name="sortalphaothers"> + <element name="bcf:option"> + <attribute name="type"> + <value>singlevalued</value> + </attribute> + <element name="bcf:key"> + <value>sortalphaothers</value> + </element> + <element name="bcf:value"> + <data type="normalizedString"> + <param name="pattern">\S+</param> + </data> + </element> + </element> + </define> + <define name="nonsortprefixes"> + <a:documentation>these are perl regexes</a:documentation> + <element name="bcf:nonsortprefixes"> + <oneOrMore> + <element name="bcf:item"> + <text/> + </element> + </oneOrMore> + </element> + </define> + <define name="nonsortdiacritics"> + <element name="bcf:nonsortdiacritics"> + <oneOrMore> + <element name="bcf:item"> + <text/> + </element> + </oneOrMore> + </element> + </define> +</grammar> diff --git a/Master/texmf-dist/source/bibtex/biber/data/schemata/biblatexml.rnc b/Master/texmf-dist/source/bibtex/biber/data/schemata/biblatexml.rnc new file mode 100644 index 00000000000..cfd5710b054 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/data/schemata/biblatexml.rnc @@ -0,0 +1,891 @@ +default namespace bib = "http://biblatex-biber.sourceforge.net/biblatexml" +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes" +namespace user = "http://localhost/biblatexml/user" +## TODO? change namespace of bib:emphasis, bib:superscript, bib:subscript +## to db = "http://docbook.org/ns/docbook" + +start = element entries { + (article | + bibnote | + book | + bookmisc | + booklet | + books | + collmisc | + collections | + inmisc | + inproceedings | + manual | + misc | + online | + patent | + periodical | + proceedings | + report | + set | + thesis | + unpublished | + misctypes)+ +} + +BibLaTeXML.common.fields = + abstract? & + annotation? & + crossref? & + entryset? & + entrysubtype? & + execute? & + file? & + hyphenation? & + indextitle* & + indexsorttitle* & + isan? & + ismn? & + iswc? & + keywords? & + label? & + library? & + nameaddon* & + options? & + origlocation* & + origpublisher* & + origtitle* & + presort? & + related? & + shortauthor* & + shorteditor* & + shorthand* & + shorthandintro* & + shortjournal* & + shortseries* & + shorttitle* & + sortkey? & + sortname* & + sorttitle* & + sortyear? & + xref? + +######################################################### +## We now define the biblatexml elements + +formattext = (emphasis?, superscript?, subscript?, quote?, math?, text?)* +emphasis = element emphasis { text } +superscript = element superscript { text } +subscript = element subscript { text } +quote = element quote { text } +## The textual content of bib:math should be in (La)TeX notation +## MathML mathml:* insertions would also be possible with http://xsltml.sourceforge.net/ +## the optional attribute "text" gives a Unicode representation of the mathematical expression (if feasible), e.g., x³+y³=z³ +math = element math { attribute text { text }?, text } + +att.mode = attribute mode { "original" | "romanised" | "translated" | "uniform" } +att.lang = attribute xml:lang {xsd:language} + +abstract = element abstract { att.lang?, formattext } +addendum = element addendum { att.lang?, formattext } +annotation = element annotation { att.lang?, formattext } +booksubtitle = element booksubtitle { att.lang?, att.mode?, formattext } +booktitle = element booktitle { att.lang?, att.mode?, formattext } +booktitleaddon = element booktitleaddon { att.lang?, att.mode?, formattext } +chapter = element chapter { text } +crossref = element crossref { text } +doi = element doi { text } +edition = element edition { xsd:integer | ( attribute string { text } ) } +eid = element eid { text } +entryset = element entryset { item+ | text } +entrysubtype = element entrysubtype { text } +eprint = element eprint { attribute type {text}, attribute class {text}?, text } +eventtitle = element eventtitle { att.lang?, att.mode?, formattext } +execute = element execute { text } +file = element file { text } +hyphenation = element hyphenation { text } +pdf = element pdf { text } +id = element id { text } +indexsorttitle = element indexsorttitle { text } +indextitle = element indextitle { text } +isan = element isan { text } #TODO validate with pattern +isbn = element isbn { text } #TODO validate with pattern +oclc = element oclc { text } #TODO validate with pattern +lccn = element lccn { text } #TODO validate with pattern +ismn = element ismn { text } #TODO validate with pattern +isrn = element isrn { text } #TODO validate with pattern +issn = element issn { text } #TODO validate with pattern +issue = element issue { att.lang?, att.mode?, formattext } +issuetitle = element issuetitle { att.lang?, att.mode?, formattext } +issuesubtitle = element issuesubtitle { att.lang?, att.mode?, formattext } +iswc = element iswc { text } +journaltitle = element journaltitle { att.lang?, att.mode?, formattext } +journalsubtitle = element journalsubtitle { att.lang?, att.mode?, formattext } +label = element label { text } +user.field = element user:* { text } +library = element library { libraryitem+ } +libraryitem = element item { attribute location {text}?, + attribute ref {text}?, + attribute url {xsd:anyURI}?, + attribute note {text}? } +mainsubtitle = element mainsubtitle { att.lang?, att.mode?, formattext } +maintitle = element maintitle { att.lang?, att.mode?, formattext } +maintitleaddon = element maintitleaddon { att.lang?, att.mode?, formattext } +nameaddon = element nameaddon { att.mode?, text } +note = element note { att.lang?, formattext } +number = element number { text } +options = element options { + ( element option { + element key { text}, + element value { text } + } + | text ) +} +origtitle = element origtitle { att.lang?, att.mode?, formattext } +pagetotal = element pagetotal { text } +part = element part { text } +presort = element presort { text } +series = element series { att.lang?, att.mode?, formattext } +shorthand = element shorthand { att.lang?, att.mode?, text } +shorthandintro = element shorthandintro { att.lang?, att.mode?, text } +shorttitle = element shorttitle { att.lang?, att.mode?, formattext } +shortjournal = element shortjournal { att.lang?, att.mode?, formattext } +shortseries = element shortseries { att.lang?, att.mode?, formattext } +sortkey = element sortkey { text } +sortyear = element sortyear { text } +sorttitle = element sorttitle { att.mode?, text } +subtitle = element subtitle { att.lang?, att.mode?, formattext } +title = element title { att.lang?, att.mode?, formattext } +titleaddon = element titleaddon { att.lang?, att.mode?, formattext } +url = element url { xsd:anyURI } +useprefix = element useprefix { text } +venue = element venue { att.lang?, att.mode?, formattext } +version = element version { text } +volume = element volume { ( text | volume.range )} +volume.range = ( volume.list | range ) +volume.list = element list { element item { ( text | volume.range ) }+ } +volumes = element volumes { text } +xref = element xref { text } + +# dates +attlist.year = attribute appeared { date.type }?, attribute type { "approximate" | "assumed" }?, attribute note { text }? +attlist.dates = attribute datetype { "orig" | "event" | "url" } +date = element date { attlist.dates?, attlist.year?, (date.type | date.range) } +pubstate = element pubstate { text } +date.type = (xsd:date | xsd:gYearMonth | xsd:gYear) +date.range = (date.range.list | (date.range.start, date.range.end?) ) +date.range.start = element start { xsd:date | xsd:gYear } +date.range.end = element end { xsd:date | xsd:gYear | "" } +date.range.list = element list { element item { (date.type|date.range) }+ } + +# pages +pages = element pages { attlist.pages?, (text | range | pagelist ) } +pagelist = element list { ( text | element item {( text | range )}+ ) } +attlist.pages = + attribute pagination { "page" | "column" | "line" | "verse" | "paragraph" | "none" }?, + attribute bookpagination { "page" | "column" | "line" | "verse" | "paragraph" | "none" }?, + attribute part { text }? ## e.g. when a book has parts in different scripts, with respective paginations +range = range.start, range.end +range.start = element start { text } +range.end = element end { text } + +# literal lists +att.lists = attribute andothers { "true" } +institution = element institution { att.lists?, att.mode?, ( text | item+ ) } +organisation = (element organisation { att.lists?, att.mode?, ( text | item+ ) } | + element organization { att.lists?, att.mode?, ( text | item+ ) } ) +location = element location { att.lists?, att.mode?, ( text | item+ ) } +origlocation = element origlocation { att.lists?, att.mode?, ( text | item+ ) } +publisher = element publisher { att.lists?, att.mode?, ( text | pubitem+ ) } +origpublisher = element origpublisher { att.lists?, att.mode?, ( text | pubitem+ ) } +item = element item { formattext } +pubitem = element item { publishername, location } +publishername = element name { attribute id {text}?, formattext } +publocation = element location { attribute id {text}?, text } + +# key lists +language = element language { xsd:language | itemlang+ } +origlanguage = element origlanguage { xsd:language | itemlang+ } +itemlang = element item { xsd:language } +script.list = "Arab" | "Armi" | "Armn" | "Avst" | "Bali" | "Batk" | "Beng" | "Blis" | "Bopo" | "Brah" | "Brai" | "Bugi" | "Buhd" | "Cakm" | "Cans" | "Cari" | "Cham" | "Cher" | "Cirt" | "Copt" | "Cprt" | "Cyrl" | "Cyrs" | "Deva" | "Dsrt" | "Egyd" | "Egyh" | "Egyp" | "Ethi" | "Geok" | "Geor" | "Glag" | "Goth" | "Grek" | "Gujr" | "Guru" | "Hang" | "Hani" | "Hano" | "Hans" | "Hant" | "Hebr" | "Hira" | "Hmng" | "Hrkt" | "Hung" | "Inds" | "Ital" | "Java" | "Jpan" | "Kali" | "Kana" | "Khar" | "Khmr" | "Knda" | "Kore" | "Kthi" | "Lana" | "Laoo" | "Latf" | "Latg" | "Latn" | "Lepc" | "Limb" | "Lina" | "Linb" | "Lisu" | "Lyci" | "Lydi" | "Mand" | "Mani" | "Maya" | "Mero" | "Mlym" | "Mong" | "Moon" | "Mtei" | "Mymr" | "Nkgb" | "Nkoo" | "Ogam" | "Olck" | "Orkh" | "Orya" | "Osma" | "Perm" | "Phag" | "Phli" | "Phlp" | "Phlv" | "Phnx" | "Plrd" | "Prti" | "Qaaa" | "Qabx" | "Rjng" | "Roro" | "Runr" | "Samr" | "Sara" | "Saur" | "Sgnw" | "Shaw" | "Sinh" | "Sund" | "Sylo" | "Syrc" | "Syre" | "Syrj" | "Syrn" | "Tagb" | "Tale" | "Talu" | "Taml" | "Tavt" | "Telu" | "Teng" | "Tfng" | "Tglg" | "Thaa" | "Thai" | "Tibt" | "Ugar" | "Vaii" | "Visp" | "Xpeo" | "Xsux" | "Yiii" | "Zinh" | "Zmth" | "Zsym" | "Zxxx" | "Zyyy" | "Zzzz" +script = element script { script.list | itemscript+ } +origscript = element origscript { script.list | itemscript+ } +itemscript = element item { script.list } +# NAME LISTS +attlist.name = attribute class { "sub" | "vol" | "main" }?, att.gender?, att.lists? +att.gender = attribute gender { "sf" | "sm" | "sn" | "pf" | "pm" | "pn" | "pp" } +author = element author { attlist.name?, att.mode?, ( text | person+ ) } +editor = element editor { attlist.name?, att.mode?, (text | person+) } +afterword = element afterword { attlist.name?, att.mode?, (text | person+) } +annotator = element annotator { attlist.name?, att.mode?, (text | person+) } +bookauthor = element bookauthor { attlist.name?, att.mode?, (text | person+) } +commentator = element commentator { attlist.name?, att.mode?, (text | person+) } +foreword = element foreword { attlist.name?, att.mode?, (text | person+) } +holder = element holder { attlist.name?, att.mode?, (text | person+) } +introduction = element introduction { attlist.name?, att.mode?, (text | person+) } +translator = element translator { attlist.name?, att.mode?, (text | person+) } +shortauthor = element shortauthor { attlist.name?, att.mode?, (text | person+) } +shorteditor = element shorteditor { attlist.name?, att.mode?, (text | person+) } +sortname = element sortname { attlist.name?, att.mode?, (text | person+) } +person = element person { + attlist.person, + ( text | (first & + firstinitial? & + prefix? & + prefixinitial? & + middle? & + middleinitial? & + last & + lastinitial? & + suffix? & + suffixinitial?) ) + } +attlist.person |= + attribute id { text }?, + att.gender?, + attribute useprefix { "yes" | "no" }? +first = element first { (text | namepart+) } +firstinitial = element firstinitial { text } +last = element last { (text | namepart+) } +lastinitial = element lastinitial { text } +middle = element middle { (text | namepart+) } +middleinitial = element middleinitial { text } +prefix = element prefix { (text | namepart+) } +prefixinitial = element prefixinitial { text } +suffix = element suffix { (text | namepart+) } +suffixinitial = element suffixinitial { text } +namepart = element namepart { text } +keywords = element keywords { list {xsd:string+} | item+ } +related = element related { + element item { + attribute type { text }, + attribute string { text }?, + attribute ids { text } }+ # can be comma-sep IDs + } + +######################################################### + +article = element entry { + attribute id {text} & + attribute entrytype { "article" } & + author+ & + title+ & + journaltitle+ & + date+ & + addendum? & + annotator* & + commentator* & + doi? & + editor? & + eid? & + eprint? & + issn? & + issue* & + issuetitle* & + issuesubtitle* & + journalsubtitle* & + language? & + note? & + number? & + origlanguage? & + pages? & + pubstate? & + series* & + subtitle* & + titleaddon* & + translator* & + url? & + version? & + volume? & + BibLaTeXML.common.fields +} + +######################################################### + +bibnote = element entry { + attribute id {text} & + attribute entrytype { "bibnote" } & + element note { text } +} + +######################################################### +book = element entry { + attribute id {text} & + attribute entrytype {"book"} & + author+ & + title+ & + date+ & + addendum? & + afterword* & + annotator* & + chapter? & + commentator* & + doi? & + edition? & + editor? & + eprint? & + foreword* & + introduction* & + isbn? & + language? & + location* & + maintitle* & + maintitleaddon* & + mainsubtitle* & + note? & + number? & + origlanguage? & + pages? & + pagetotal? & + part? & + publisher* & + pubstate? & + series* & + subtitle* & + titleaddon* & + translator* & + url? & + volume? & + volumes? & + BibLaTeXML.common.fields +} + +######################################################### + +booklet = element entry { + attribute id {text} & + attribute entrytype {"booklet"} & + attribute howpublished { text }? & + attribute type { text }? & + (author | editor)& + title+ & + date+ & + addendum? & + chapter? & + doi? & + eprint? & + language? & + location* & + note? & + pages? & + pagetotal? & + pubstate? & + subtitle* & + titleaddon* & + url? & + BibLaTeXML.common.fields +} + + +######################################################### + +books = element entry { + attribute id {text} & + attribute entrytype {"books"} & + author+ & + title+ & + date+ & + addendum? & + afterword* & + annotator* & + commentator* & + doi? & + edition? & + editor? & + eprint? & + foreword* & + introduction* & + isbn? & + language? & + location* & + note? & + number? & + origlanguage? & + publisher* & + pubstate? & + subtitle* & + titleaddon* & + translator* & + url? & + volume? & + volumes? & + BibLaTeXML.common.fields +} + +######################################################### + +bookmisc = element entry { + attribute id {text} & + attribute entrytype { "inbook" | "bookinbook" | "suppbook" } & + author+ & + title+ & + booktitle+ & + date+ & + addendum? & + afterword* & + annotator* & + bookauthor* & + booksubtitle* & + booktitleaddon* & + chapter? & + commentator* & + doi? & + edition? & + editor? & + eprint? & + foreword* & + introduction* & + isbn? & + language? & + location* & + mainsubtitle* & + maintitle* & + maintitleaddon* & + note? & + number? & + origlanguage? & + part? & + publisher* & + pages? & + pubstate? & + series* & + subtitle* & + titleaddon* & + translator* & + url? & + volume? & + volumes? & + BibLaTeXML.common.fields +} + +######################################################### + +collmisc = element entry { + attribute id {text} & + attribute entrytype { "collection" | "reference" } & + editor+ & + title+ & + date+ & + addendum? & + afterword* & + annotator* & + chapter? & + commentator* & + doi? & + edition? & + eprint? & + foreword* & + introduction* & + isbn? & + language? & + location* & + mainsubtitle* & + maintitle* & + maintitleaddon* & + note? & + number? & + origlanguage? & + pages? & + pagetotal? & + part? & + publisher* & + pubstate? & + series* & + subtitle* & + titleaddon* & + translator* & + url? & + volume? & + volumes? & + BibLaTeXML.common.fields +} + +######################################################### + +collections = element entry { + attribute id {text} & + attribute entrytype { "collections" } & + author+ & + title+ & + date+ & + addendum? & + afterword* & + annotator* & + commentator* & + doi? & + edition? & + editor? & + eprint? & + foreword* & + introduction* & + isbn? & + language? & + location* & + note? & + number? & + origlanguage? & + publisher* & + pubstate? & + subtitle* & + titleaddon* & + translator* & + url? & + volume? & + volumes? & + BibLaTeXML.common.fields +} + +######################################################### + +inmisc = element entry { + attribute id {text} & + attribute entrytype { "incollection" | "suppcollection" | "inreference" } & + author+ & + editor+ & + title+ & + booktitle+ & + date+ & + addendum? & + afterword* & + annotator* & + booksubtitle* & + booktitleaddon* & + chapter? & + commentator* & + doi? & + edition? & + eprint? & + foreword* & + introduction* & + isbn? & + language? & + location* & + mainsubtitle* & + maintitle* & + maintitleaddon* & + note? & + number? & + origlanguage? & + pages? & + part? & + publisher* & + pubstate? & + series* & + subtitle* & + titleaddon* & + translator* & + url? & + volume? & + volumes? & + BibLaTeXML.common.fields +} + +######################################################### + +inproceedings = element entry { + attribute id {text} & + attribute entrytype { "inproceedings" } & + author+ & + editor+ & + title+ & + booktitle+ & + date+ & + addendum? & + booksubtitle* & + booktitleaddon* & + chapter? & + doi? & + eprint? & + eventtitle* & + isbn? & + language? & + location* & + mainsubtitle* & + maintitle* & + maintitleaddon* & + note? & + number? & + organisation* & + pages? & + part? & + publisher* & + pubstate? & + series* & + subtitle* & + titleaddon* & + url? & + venue* & + volume? & + volumes? & + BibLaTeXML.common.fields +} + +######################################################### + +manual = element entry { + attribute id {text} & + attribute entrytype { "manual" } & + attribute type { text } & + (author | editor) & + title+ & + date+ & + addendum? & + chapter? & + doi? & + edition? & + eprint? & + isbn? & + language? & + location* & + note? & + number? & + organisation* & + pages? & + pagetotal? & + publisher* & + pubstate? & + series* & + subtitle* & + titleaddon* & + url? & + version? & + BibLaTeXML.common.fields +} + +######################################################### + +misc = element entry { + attribute id {text} & + attribute entrytype { "misc" } & + attribute howpublished { text } & + attribute type { text } & + (author | editor) & + title+ & + date+ & + addendum? & + doi? & + eprint? & + language? & + location* & + note? & + organisation* & + pubstate? & + subtitle* & + titleaddon* & + url? & + version? & + BibLaTeXML.common.fields +} + +######################################################### + +online = element entry { + attribute id {text} & + attribute entrytype { "online" } & + (author | editor) & + title+ & + date+ & + url & + addendum? & + language? & + note? & + organisation* & + pubstate? & + subtitle* & + titleaddon* & + version? & + BibLaTeXML.common.fields +} + + +######################################################### + +patent = element entry { + attribute id {text} & + attribute entrytype { "patent" } & + attribute type { text } & + author+ & + title+ & + number & + date+ & + addendum? & + doi? & + eprint? & + holder* & + location* & + note? & + pubstate? & + subtitle* & + titleaddon* & + url? & + version? & + BibLaTeXML.common.fields +} + +######################################################### + +periodical = element entry { + attribute id {text} & + attribute entrytype { "periodical" } & + editor+ & + title+ & + date+ & + addendum? & + doi? & + eprint? & + issn? & + issue* & + issuesubtitle* & + issuetitle* & + language? & + note? & + number? & + pubstate? & + series* & + subtitle* & + url? & + volume? & + BibLaTeXML.common.fields +} + +######################################################### + +proceedings = element entry { + attribute id {text} & + attribute entrytype { "proceedings" } & + editor+ & + title+ & + date+ & + addendum? & + chapter? & + doi? & + eprint? & + eventtitle* & + isbn? & + language? & + location* & + mainsubtitle* & + maintitle* & + maintitleaddon* & + note? & + number? & + organisation* & + pages? & + pagetotal? & + part? & + publisher* & + pubstate? & + series* & + subtitle* & + titleaddon* & + url? & + venue* & + volume? & + volumes? & + BibLaTeXML.common.fields +} + +######################################################### + +report = element entry { + attribute id {text} & + attribute entrytype { "report" } & + attribute type { text } & + author+ & + title+ & + institution+ & + date+ & + addendum? & + chapter? & + doi? & + eprint? & + isrn? & + language? & + location* & + note? & + number? & + pages? & + pagetotal? & + pubstate? & + subtitle* & + titleaddon* & + url? & + version? & + BibLaTeXML.common.fields +} + +######################################################### + +thesis = element entry { + attribute id {text} & + attribute entrytype { "thesis" } & + attribute type { text } & + author+ & + title+ & + institution+ & + date+ & + addendum? & + chapter? & + doi? & + eprint? & + language? & + location* & + note? & + pages? & + pagetotal? & + pubstate? & + subtitle* & + titleaddon* & + url? & + BibLaTeXML.common.fields +} + +######################################################### + +unpublished = element entry { + attribute id {text} & + attribute entrytype { "unpublished" } & + attribute howpublished { text } & + author+ & + title+ & + date+ & + addendum? & + language? & + location* & + note? & + pubstate? & + subtitle* & + titleaddon* & + url? & + BibLaTeXML.common.fields +} + +######################################################### + +set = element entry { + attribute id {text} & + attribute entrytype { "set" } & + attribute howpublished { text } & + entryset & + crossref? +} + +######################################################### + +misctypes = element entry { + attribute id {text} & + attribute entrytype { + "artwork" | "audio" | "commentary" | "image" | "jurisdiction" | + "legal" | "legislation" | "letter" | "movie" | "music" | + "performance" | "review" | "software" | "standard" | "video" } & + attribute howpublished { text } & + author* & + title* & + date* & + addendum? & + language? & + location* & + note? & + pubstate? & + subtitle* & + titleaddon* & + url? & + BibLaTeXML.common.fields +} + diff --git a/Master/texmf-dist/source/bibtex/biber/data/schemata/biblatexml.rng b/Master/texmf-dist/source/bibtex/biber/data/schemata/biblatexml.rng new file mode 100644 index 00000000000..2c83a9974bd --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/data/schemata/biblatexml.rng @@ -0,0 +1,3316 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grammar ns="http://biblatex-biber.sourceforge.net/biblatexml" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:bib="http://biblatex-biber.sourceforge.net/biblatexml" xmlns:user="http://localhost/biblatexml/user" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <start> + <a:documentation>TODO? change namespace of bib:emphasis, bib:superscript, bib:subscript + to db = "http://docbook.org/ns/docbook"</a:documentation> + <element name="entries"> + <oneOrMore> + <choice> + <ref name="article"/> + <ref name="bibnote"/> + <ref name="book"/> + <ref name="bookmisc"/> + <ref name="booklet"/> + <ref name="books"/> + <ref name="collmisc"/> + <ref name="collections"/> + <ref name="inmisc"/> + <ref name="inproceedings"/> + <ref name="manual"/> + <ref name="misc"/> + <ref name="online"/> + <ref name="patent"/> + <ref name="periodical"/> + <ref name="proceedings"/> + <ref name="report"/> + <ref name="set"/> + <ref name="thesis"/> + <ref name="unpublished"/> + <ref name="misctypes"/> + </choice> + </oneOrMore> + </element> + </start> + <define name="BibLaTeXML.common.fields"> + <interleave> + <optional> + <ref name="abstract"/> + </optional> + <optional> + <ref name="annotation"/> + </optional> + <optional> + <ref name="crossref"/> + </optional> + <optional> + <ref name="entryset"/> + </optional> + <optional> + <ref name="entrysubtype"/> + </optional> + <optional> + <ref name="execute"/> + </optional> + <optional> + <ref name="file"/> + </optional> + <optional> + <ref name="hyphenation"/> + </optional> + <zeroOrMore> + <ref name="indextitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="indexsorttitle"/> + </zeroOrMore> + <optional> + <ref name="isan"/> + </optional> + <optional> + <ref name="ismn"/> + </optional> + <optional> + <ref name="iswc"/> + </optional> + <optional> + <ref name="keywords"/> + </optional> + <optional> + <ref name="label"/> + </optional> + <optional> + <ref name="library"/> + </optional> + <zeroOrMore> + <ref name="nameaddon"/> + </zeroOrMore> + <optional> + <ref name="options"/> + </optional> + <zeroOrMore> + <ref name="origlocation"/> + </zeroOrMore> + <zeroOrMore> + <ref name="origpublisher"/> + </zeroOrMore> + <zeroOrMore> + <ref name="origtitle"/> + </zeroOrMore> + <optional> + <ref name="presort"/> + </optional> + <optional> + <ref name="related"/> + </optional> + <zeroOrMore> + <ref name="shortauthor"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shorteditor"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shorthand"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shorthandintro"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shortjournal"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shortseries"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shorttitle"/> + </zeroOrMore> + <optional> + <ref name="sortkey"/> + </optional> + <zeroOrMore> + <ref name="sortname"/> + </zeroOrMore> + <zeroOrMore> + <ref name="sorttitle"/> + </zeroOrMore> + <optional> + <ref name="sortyear"/> + </optional> + <optional> + <ref name="xref"/> + </optional> + </interleave> + </define> + <define name="formattext"> + <a:documentation> +We now define the biblatexml elements</a:documentation> + <zeroOrMore> + <optional> + <ref name="emphasis"/> + </optional> + <optional> + <ref name="superscript"/> + </optional> + <optional> + <ref name="subscript"/> + </optional> + <optional> + <ref name="quote"/> + </optional> + <optional> + <ref name="math"/> + </optional> + <optional> + <text/> + </optional> + </zeroOrMore> + </define> + <define name="emphasis"> + <element name="emphasis"> + <text/> + </element> + </define> + <define name="superscript"> + <element name="superscript"> + <text/> + </element> + </define> + <define name="subscript"> + <element name="subscript"> + <text/> + </element> + </define> + <define name="quote"> + <element name="quote"> + <text/> + </element> + </define> + <define name="math"> + <a:documentation>The textual content of bib:math should be in (La)TeX notation +MathML mathml:* insertions would also be possible with http://xsltml.sourceforge.net/ +the optional attribute "text" gives a Unicode representation of the mathematical expression (if feasible), e.g., x³+y³=z³</a:documentation> + <element name="math"> + <optional> + <attribute name="text"/> + </optional> + <text/> + </element> + </define> + <define name="att.mode"> + <attribute name="mode"> + <choice> + <value>original</value> + <value>romanised</value> + <value>translated</value> + <value>uniform</value> + </choice> + </attribute> + </define> + <define name="att.lang"> + <attribute name="xml:lang"> + <data type="language"/> + </attribute> + </define> + <define name="abstract"> + <element name="abstract"> + <optional> + <ref name="att.lang"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="addendum"> + <element name="addendum"> + <optional> + <ref name="att.lang"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="annotation"> + <element name="annotation"> + <optional> + <ref name="att.lang"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="booksubtitle"> + <element name="booksubtitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="booktitle"> + <element name="booktitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="booktitleaddon"> + <element name="booktitleaddon"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="chapter"> + <element name="chapter"> + <text/> + </element> + </define> + <define name="crossref"> + <element name="crossref"> + <text/> + </element> + </define> + <define name="doi"> + <element name="doi"> + <text/> + </element> + </define> + <define name="edition"> + <element name="edition"> + <choice> + <data type="integer"/> + <attribute name="string"/> + </choice> + </element> + </define> + <define name="eid"> + <element name="eid"> + <text/> + </element> + </define> + <define name="entryset"> + <element name="entryset"> + <choice> + <oneOrMore> + <ref name="item"/> + </oneOrMore> + <text/> + </choice> + </element> + </define> + <define name="entrysubtype"> + <element name="entrysubtype"> + <text/> + </element> + </define> + <define name="eprint"> + <element name="eprint"> + <attribute name="type"/> + <optional> + <attribute name="class"/> + </optional> + <text/> + </element> + </define> + <define name="eventtitle"> + <element name="eventtitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="execute"> + <element name="execute"> + <text/> + </element> + </define> + <define name="file"> + <element name="file"> + <text/> + </element> + </define> + <define name="hyphenation"> + <element name="hyphenation"> + <text/> + </element> + </define> + <define name="pdf"> + <element name="pdf"> + <text/> + </element> + </define> + <define name="id"> + <element name="id"> + <text/> + </element> + </define> + <define name="indexsorttitle"> + <element name="indexsorttitle"> + <text/> + </element> + </define> + <define name="indextitle"> + <element name="indextitle"> + <text/> + </element> + </define> + <define name="isan"> + <element name="isan"> + <text/> + </element> + </define> + <!-- TODO validate with pattern --> + <define name="isbn"> + <element name="isbn"> + <text/> + </element> + </define> + <!-- TODO validate with pattern --> + <define name="oclc"> + <element name="oclc"> + <text/> + </element> + </define> + <!-- TODO validate with pattern --> + <define name="lccn"> + <element name="lccn"> + <text/> + </element> + </define> + <!-- TODO validate with pattern --> + <define name="ismn"> + <element name="ismn"> + <text/> + </element> + </define> + <!-- TODO validate with pattern --> + <define name="isrn"> + <element name="isrn"> + <text/> + </element> + </define> + <!-- TODO validate with pattern --> + <define name="issn"> + <element name="issn"> + <text/> + </element> + </define> + <!-- TODO validate with pattern --> + <define name="issue"> + <element name="issue"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="issuetitle"> + <element name="issuetitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="issuesubtitle"> + <element name="issuesubtitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="iswc"> + <element name="iswc"> + <text/> + </element> + </define> + <define name="journaltitle"> + <element name="journaltitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="journalsubtitle"> + <element name="journalsubtitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="label"> + <element name="label"> + <text/> + </element> + </define> + <define name="user.field"> + <element> + <nsName ns="http://localhost/biblatexml/user"/> + <text/> + </element> + </define> + <define name="library"> + <element name="library"> + <oneOrMore> + <ref name="libraryitem"/> + </oneOrMore> + </element> + </define> + <define name="libraryitem"> + <element name="item"> + <optional> + <attribute name="location"/> + </optional> + <optional> + <attribute name="ref"/> + </optional> + <optional> + <attribute name="url"> + <data type="anyURI"/> + </attribute> + </optional> + <optional> + <attribute name="note"/> + </optional> + </element> + </define> + <define name="mainsubtitle"> + <element name="mainsubtitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="maintitle"> + <element name="maintitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="maintitleaddon"> + <element name="maintitleaddon"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="nameaddon"> + <element name="nameaddon"> + <optional> + <ref name="att.mode"/> + </optional> + <text/> + </element> + </define> + <define name="note"> + <element name="note"> + <optional> + <ref name="att.lang"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="number"> + <element name="number"> + <text/> + </element> + </define> + <define name="options"> + <element name="options"> + <choice> + <element name="option"> + <element name="key"> + <text/> + </element> + <element name="value"> + <text/> + </element> + </element> + <text/> + </choice> + </element> + </define> + <define name="origtitle"> + <element name="origtitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="pagetotal"> + <element name="pagetotal"> + <text/> + </element> + </define> + <define name="part"> + <element name="part"> + <text/> + </element> + </define> + <define name="presort"> + <element name="presort"> + <text/> + </element> + </define> + <define name="series"> + <element name="series"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="shorthand"> + <element name="shorthand"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <text/> + </element> + </define> + <define name="shorthandintro"> + <element name="shorthandintro"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <text/> + </element> + </define> + <define name="shorttitle"> + <element name="shorttitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="shortjournal"> + <element name="shortjournal"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="shortseries"> + <element name="shortseries"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="sortkey"> + <element name="sortkey"> + <text/> + </element> + </define> + <define name="sortyear"> + <element name="sortyear"> + <text/> + </element> + </define> + <define name="sorttitle"> + <element name="sorttitle"> + <optional> + <ref name="att.mode"/> + </optional> + <text/> + </element> + </define> + <define name="subtitle"> + <element name="subtitle"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="title"> + <element name="title"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="titleaddon"> + <element name="titleaddon"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="url"> + <element name="url"> + <data type="anyURI"/> + </element> + </define> + <define name="useprefix"> + <element name="useprefix"> + <text/> + </element> + </define> + <define name="venue"> + <element name="venue"> + <optional> + <ref name="att.lang"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="version"> + <element name="version"> + <text/> + </element> + </define> + <define name="volume"> + <element name="volume"> + <choice> + <text/> + <ref name="volume.range"/> + </choice> + </element> + </define> + <define name="volume.range"> + <choice> + <ref name="volume.list"/> + <ref name="range"/> + </choice> + </define> + <define name="volume.list"> + <element name="list"> + <oneOrMore> + <element name="item"> + <choice> + <text/> + <ref name="volume.range"/> + </choice> + </element> + </oneOrMore> + </element> + </define> + <define name="volumes"> + <element name="volumes"> + <text/> + </element> + </define> + <define name="xref"> + <element name="xref"> + <text/> + </element> + </define> + <!-- dates --> + <define name="attlist.year"> + <optional> + <attribute name="appeared"> + <ref name="date.type"/> + </attribute> + </optional> + <optional> + <attribute name="type"> + <choice> + <value>approximate</value> + <value>assumed</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="note"/> + </optional> + </define> + <define name="attlist.dates"> + <attribute name="datetype"> + <choice> + <value>orig</value> + <value>event</value> + <value>url</value> + </choice> + </attribute> + </define> + <define name="date"> + <element name="date"> + <optional> + <ref name="attlist.dates"/> + </optional> + <optional> + <ref name="attlist.year"/> + </optional> + <choice> + <ref name="date.type"/> + <ref name="date.range"/> + </choice> + </element> + </define> + <define name="pubstate"> + <element name="pubstate"> + <text/> + </element> + </define> + <define name="date.type"> + <choice> + <data type="date"/> + <data type="gYearMonth"/> + <data type="gYear"/> + </choice> + </define> + <define name="date.range"> + <choice> + <ref name="date.range.list"/> + <group> + <ref name="date.range.start"/> + <optional> + <ref name="date.range.end"/> + </optional> + </group> + </choice> + </define> + <define name="date.range.start"> + <element name="start"> + <choice> + <data type="date"/> + <data type="gYear"/> + </choice> + </element> + </define> + <define name="date.range.end"> + <element name="end"> + <choice> + <data type="date"/> + <data type="gYear"/> + <value/> + </choice> + </element> + </define> + <define name="date.range.list"> + <element name="list"> + <oneOrMore> + <element name="item"> + <choice> + <ref name="date.type"/> + <ref name="date.range"/> + </choice> + </element> + </oneOrMore> + </element> + </define> + <!-- pages --> + <define name="pages"> + <element name="pages"> + <optional> + <ref name="attlist.pages"/> + </optional> + <choice> + <text/> + <ref name="range"/> + <ref name="pagelist"/> + </choice> + </element> + </define> + <define name="pagelist"> + <element name="list"> + <choice> + <text/> + <oneOrMore> + <element name="item"> + <choice> + <text/> + <ref name="range"/> + </choice> + </element> + </oneOrMore> + </choice> + </element> + </define> + <define name="attlist.pages"> + <optional> + <attribute name="pagination"> + <choice> + <value>page</value> + <value>column</value> + <value>line</value> + <value>verse</value> + <value>paragraph</value> + <value>none</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="bookpagination"> + <choice> + <value>page</value> + <value>column</value> + <value>line</value> + <value>verse</value> + <value>paragraph</value> + <value>none</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="part"/> + </optional> + </define> + <define name="range"> + <a:documentation>e.g. when a book has parts in different scripts, with respective paginations</a:documentation> + <ref name="range.start"/> + <ref name="range.end"/> + </define> + <define name="range.start"> + <element name="start"> + <text/> + </element> + </define> + <define name="range.end"> + <element name="end"> + <text/> + </element> + </define> + <!-- literal lists --> + <define name="att.lists"> + <attribute name="andothers"> + <value>true</value> + </attribute> + </define> + <define name="institution"> + <element name="institution"> + <optional> + <ref name="att.lists"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="item"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="organisation"> + <choice> + <element name="organisation"> + <optional> + <ref name="att.lists"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="item"/> + </oneOrMore> + </choice> + </element> + <element name="organization"> + <optional> + <ref name="att.lists"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="item"/> + </oneOrMore> + </choice> + </element> + </choice> + </define> + <define name="location"> + <element name="location"> + <optional> + <ref name="att.lists"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="item"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="origlocation"> + <element name="origlocation"> + <optional> + <ref name="att.lists"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="item"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="publisher"> + <element name="publisher"> + <optional> + <ref name="att.lists"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="pubitem"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="origpublisher"> + <element name="origpublisher"> + <optional> + <ref name="att.lists"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="pubitem"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="item"> + <element name="item"> + <ref name="formattext"/> + </element> + </define> + <define name="pubitem"> + <element name="item"> + <ref name="publishername"/> + <ref name="location"/> + </element> + </define> + <define name="publishername"> + <element name="name"> + <optional> + <attribute name="id"/> + </optional> + <ref name="formattext"/> + </element> + </define> + <define name="publocation"> + <element name="location"> + <optional> + <attribute name="id"/> + </optional> + <text/> + </element> + </define> + <!-- key lists --> + <define name="language"> + <element name="language"> + <choice> + <data type="language"/> + <oneOrMore> + <ref name="itemlang"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="origlanguage"> + <element name="origlanguage"> + <choice> + <data type="language"/> + <oneOrMore> + <ref name="itemlang"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="itemlang"> + <element name="item"> + <data type="language"/> + </element> + </define> + <define name="script.list"> + <choice> + <value>Arab</value> + <value>Armi</value> + <value>Armn</value> + <value>Avst</value> + <value>Bali</value> + <value>Batk</value> + <value>Beng</value> + <value>Blis</value> + <value>Bopo</value> + <value>Brah</value> + <value>Brai</value> + <value>Bugi</value> + <value>Buhd</value> + <value>Cakm</value> + <value>Cans</value> + <value>Cari</value> + <value>Cham</value> + <value>Cher</value> + <value>Cirt</value> + <value>Copt</value> + <value>Cprt</value> + <value>Cyrl</value> + <value>Cyrs</value> + <value>Deva</value> + <value>Dsrt</value> + <value>Egyd</value> + <value>Egyh</value> + <value>Egyp</value> + <value>Ethi</value> + <value>Geok</value> + <value>Geor</value> + <value>Glag</value> + <value>Goth</value> + <value>Grek</value> + <value>Gujr</value> + <value>Guru</value> + <value>Hang</value> + <value>Hani</value> + <value>Hano</value> + <value>Hans</value> + <value>Hant</value> + <value>Hebr</value> + <value>Hira</value> + <value>Hmng</value> + <value>Hrkt</value> + <value>Hung</value> + <value>Inds</value> + <value>Ital</value> + <value>Java</value> + <value>Jpan</value> + <value>Kali</value> + <value>Kana</value> + <value>Khar</value> + <value>Khmr</value> + <value>Knda</value> + <value>Kore</value> + <value>Kthi</value> + <value>Lana</value> + <value>Laoo</value> + <value>Latf</value> + <value>Latg</value> + <value>Latn</value> + <value>Lepc</value> + <value>Limb</value> + <value>Lina</value> + <value>Linb</value> + <value>Lisu</value> + <value>Lyci</value> + <value>Lydi</value> + <value>Mand</value> + <value>Mani</value> + <value>Maya</value> + <value>Mero</value> + <value>Mlym</value> + <value>Mong</value> + <value>Moon</value> + <value>Mtei</value> + <value>Mymr</value> + <value>Nkgb</value> + <value>Nkoo</value> + <value>Ogam</value> + <value>Olck</value> + <value>Orkh</value> + <value>Orya</value> + <value>Osma</value> + <value>Perm</value> + <value>Phag</value> + <value>Phli</value> + <value>Phlp</value> + <value>Phlv</value> + <value>Phnx</value> + <value>Plrd</value> + <value>Prti</value> + <value>Qaaa</value> + <value>Qabx</value> + <value>Rjng</value> + <value>Roro</value> + <value>Runr</value> + <value>Samr</value> + <value>Sara</value> + <value>Saur</value> + <value>Sgnw</value> + <value>Shaw</value> + <value>Sinh</value> + <value>Sund</value> + <value>Sylo</value> + <value>Syrc</value> + <value>Syre</value> + <value>Syrj</value> + <value>Syrn</value> + <value>Tagb</value> + <value>Tale</value> + <value>Talu</value> + <value>Taml</value> + <value>Tavt</value> + <value>Telu</value> + <value>Teng</value> + <value>Tfng</value> + <value>Tglg</value> + <value>Thaa</value> + <value>Thai</value> + <value>Tibt</value> + <value>Ugar</value> + <value>Vaii</value> + <value>Visp</value> + <value>Xpeo</value> + <value>Xsux</value> + <value>Yiii</value> + <value>Zinh</value> + <value>Zmth</value> + <value>Zsym</value> + <value>Zxxx</value> + <value>Zyyy</value> + <value>Zzzz</value> + </choice> + </define> + <define name="script"> + <element name="script"> + <choice> + <ref name="script.list"/> + <oneOrMore> + <ref name="itemscript"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="origscript"> + <element name="origscript"> + <choice> + <ref name="script.list"/> + <oneOrMore> + <ref name="itemscript"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="itemscript"> + <element name="item"> + <ref name="script.list"/> + </element> + </define> + <!-- NAME LISTS --> + <define name="attlist.name"> + <optional> + <attribute name="class"> + <choice> + <value>sub</value> + <value>vol</value> + <value>main</value> + </choice> + </attribute> + </optional> + <optional> + <ref name="att.gender"/> + </optional> + <optional> + <ref name="att.lists"/> + </optional> + </define> + <define name="att.gender"> + <attribute name="gender"> + <choice> + <value>sf</value> + <value>sm</value> + <value>sn</value> + <value>pf</value> + <value>pm</value> + <value>pn</value> + <value>pp</value> + </choice> + </attribute> + </define> + <define name="author"> + <element name="author"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="editor"> + <element name="editor"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="afterword"> + <element name="afterword"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="annotator"> + <element name="annotator"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="bookauthor"> + <element name="bookauthor"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="commentator"> + <element name="commentator"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="foreword"> + <element name="foreword"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="holder"> + <element name="holder"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="introduction"> + <element name="introduction"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="translator"> + <element name="translator"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="shortauthor"> + <element name="shortauthor"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="shorteditor"> + <element name="shorteditor"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="sortname"> + <element name="sortname"> + <optional> + <ref name="attlist.name"/> + </optional> + <optional> + <ref name="att.mode"/> + </optional> + <choice> + <text/> + <oneOrMore> + <ref name="person"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="person"> + <element name="person"> + <ref name="attlist.person"/> + <choice> + <text/> + <interleave> + <ref name="first"/> + <optional> + <ref name="firstinitial"/> + </optional> + <optional> + <ref name="prefix"/> + </optional> + <optional> + <ref name="prefixinitial"/> + </optional> + <optional> + <ref name="middle"/> + </optional> + <optional> + <ref name="middleinitial"/> + </optional> + <ref name="last"/> + <optional> + <ref name="lastinitial"/> + </optional> + <optional> + <ref name="suffix"/> + </optional> + <optional> + <ref name="suffixinitial"/> + </optional> + </interleave> + </choice> + </element> + </define> + <define name="attlist.person" combine="choice"> + <optional> + <attribute name="id"/> + </optional> + <optional> + <ref name="att.gender"/> + </optional> + <optional> + <attribute name="useprefix"> + <choice> + <value>yes</value> + <value>no</value> + </choice> + </attribute> + </optional> + </define> + <define name="first"> + <element name="first"> + <choice> + <text/> + <oneOrMore> + <ref name="namepart"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="firstinitial"> + <element name="firstinitial"> + <text/> + </element> + </define> + <define name="last"> + <element name="last"> + <choice> + <text/> + <oneOrMore> + <ref name="namepart"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="lastinitial"> + <element name="lastinitial"> + <text/> + </element> + </define> + <define name="middle"> + <element name="middle"> + <choice> + <text/> + <oneOrMore> + <ref name="namepart"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="middleinitial"> + <element name="middleinitial"> + <text/> + </element> + </define> + <define name="prefix"> + <element name="prefix"> + <choice> + <text/> + <oneOrMore> + <ref name="namepart"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="prefixinitial"> + <element name="prefixinitial"> + <text/> + </element> + </define> + <define name="suffix"> + <element name="suffix"> + <choice> + <text/> + <oneOrMore> + <ref name="namepart"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="suffixinitial"> + <element name="suffixinitial"> + <text/> + </element> + </define> + <define name="namepart"> + <element name="namepart"> + <text/> + </element> + </define> + <define name="keywords"> + <element name="keywords"> + <choice> + <list> + <oneOrMore> + <data type="string"/> + </oneOrMore> + </list> + <oneOrMore> + <ref name="item"/> + </oneOrMore> + </choice> + </element> + </define> + <define name="related"> + <element name="related"> + <oneOrMore> + <element name="item"> + <attribute name="type"/> + <optional> + <attribute name="string"/> + </optional> + <attribute name="ids"/> + </element> + </oneOrMore> + <!-- can be comma-sep IDs --> + </element> + </define> + <define name="article"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>article</value> + </attribute> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="journaltitle"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <zeroOrMore> + <ref name="annotator"/> + </zeroOrMore> + <zeroOrMore> + <ref name="commentator"/> + </zeroOrMore> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="editor"/> + </optional> + <optional> + <ref name="eid"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <optional> + <ref name="issn"/> + </optional> + <zeroOrMore> + <ref name="issue"/> + </zeroOrMore> + <zeroOrMore> + <ref name="issuetitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="issuesubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="journalsubtitle"/> + </zeroOrMore> + <optional> + <ref name="language"/> + </optional> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <optional> + <ref name="origlanguage"/> + </optional> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="series"/> + </zeroOrMore> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <zeroOrMore> + <ref name="translator"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="version"/> + </optional> + <optional> + <ref name="volume"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="bibnote"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>bibnote</value> + </attribute> + <element name="note"> + <text/> + </element> + </interleave> + </element> + </define> + <define name="book"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>book</value> + </attribute> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <zeroOrMore> + <ref name="afterword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="annotator"/> + </zeroOrMore> + <optional> + <ref name="chapter"/> + </optional> + <zeroOrMore> + <ref name="commentator"/> + </zeroOrMore> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="edition"/> + </optional> + <optional> + <ref name="editor"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <zeroOrMore> + <ref name="foreword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="introduction"/> + </zeroOrMore> + <optional> + <ref name="isbn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitleaddon"/> + </zeroOrMore> + <zeroOrMore> + <ref name="mainsubtitle"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <optional> + <ref name="origlanguage"/> + </optional> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="pagetotal"/> + </optional> + <optional> + <ref name="part"/> + </optional> + <zeroOrMore> + <ref name="publisher"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="series"/> + </zeroOrMore> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <zeroOrMore> + <ref name="translator"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="volume"/> + </optional> + <optional> + <ref name="volumes"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="booklet"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>booklet</value> + </attribute> + <optional> + <attribute name="howpublished"/> + </optional> + <optional> + <attribute name="type"/> + </optional> + <choice> + <ref name="author"/> + <ref name="editor"/> + </choice> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="chapter"/> + </optional> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="pagetotal"/> + </optional> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="books"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>books</value> + </attribute> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <zeroOrMore> + <ref name="afterword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="annotator"/> + </zeroOrMore> + <zeroOrMore> + <ref name="commentator"/> + </zeroOrMore> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="edition"/> + </optional> + <optional> + <ref name="editor"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <zeroOrMore> + <ref name="foreword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="introduction"/> + </zeroOrMore> + <optional> + <ref name="isbn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <optional> + <ref name="origlanguage"/> + </optional> + <zeroOrMore> + <ref name="publisher"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <zeroOrMore> + <ref name="translator"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="volume"/> + </optional> + <optional> + <ref name="volumes"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="bookmisc"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <choice> + <value>inbook</value> + <value>bookinbook</value> + <value>suppbook</value> + </choice> + </attribute> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="booktitle"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <zeroOrMore> + <ref name="afterword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="annotator"/> + </zeroOrMore> + <zeroOrMore> + <ref name="bookauthor"/> + </zeroOrMore> + <zeroOrMore> + <ref name="booksubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="booktitleaddon"/> + </zeroOrMore> + <optional> + <ref name="chapter"/> + </optional> + <zeroOrMore> + <ref name="commentator"/> + </zeroOrMore> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="edition"/> + </optional> + <optional> + <ref name="editor"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <zeroOrMore> + <ref name="foreword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="introduction"/> + </zeroOrMore> + <optional> + <ref name="isbn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <zeroOrMore> + <ref name="mainsubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitleaddon"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <optional> + <ref name="origlanguage"/> + </optional> + <optional> + <ref name="part"/> + </optional> + <zeroOrMore> + <ref name="publisher"/> + </zeroOrMore> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="series"/> + </zeroOrMore> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <zeroOrMore> + <ref name="translator"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="volume"/> + </optional> + <optional> + <ref name="volumes"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="collmisc"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <choice> + <value>collection</value> + <value>reference</value> + </choice> + </attribute> + <oneOrMore> + <ref name="editor"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <zeroOrMore> + <ref name="afterword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="annotator"/> + </zeroOrMore> + <optional> + <ref name="chapter"/> + </optional> + <zeroOrMore> + <ref name="commentator"/> + </zeroOrMore> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="edition"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <zeroOrMore> + <ref name="foreword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="introduction"/> + </zeroOrMore> + <optional> + <ref name="isbn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <zeroOrMore> + <ref name="mainsubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitleaddon"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <optional> + <ref name="origlanguage"/> + </optional> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="pagetotal"/> + </optional> + <optional> + <ref name="part"/> + </optional> + <zeroOrMore> + <ref name="publisher"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="series"/> + </zeroOrMore> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <zeroOrMore> + <ref name="translator"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="volume"/> + </optional> + <optional> + <ref name="volumes"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="collections"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>collections</value> + </attribute> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <zeroOrMore> + <ref name="afterword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="annotator"/> + </zeroOrMore> + <zeroOrMore> + <ref name="commentator"/> + </zeroOrMore> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="edition"/> + </optional> + <optional> + <ref name="editor"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <zeroOrMore> + <ref name="foreword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="introduction"/> + </zeroOrMore> + <optional> + <ref name="isbn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <optional> + <ref name="origlanguage"/> + </optional> + <zeroOrMore> + <ref name="publisher"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <zeroOrMore> + <ref name="translator"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="volume"/> + </optional> + <optional> + <ref name="volumes"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="inmisc"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <choice> + <value>incollection</value> + <value>suppcollection</value> + <value>inreference</value> + </choice> + </attribute> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="editor"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="booktitle"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <zeroOrMore> + <ref name="afterword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="annotator"/> + </zeroOrMore> + <zeroOrMore> + <ref name="booksubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="booktitleaddon"/> + </zeroOrMore> + <optional> + <ref name="chapter"/> + </optional> + <zeroOrMore> + <ref name="commentator"/> + </zeroOrMore> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="edition"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <zeroOrMore> + <ref name="foreword"/> + </zeroOrMore> + <zeroOrMore> + <ref name="introduction"/> + </zeroOrMore> + <optional> + <ref name="isbn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <zeroOrMore> + <ref name="mainsubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitleaddon"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <optional> + <ref name="origlanguage"/> + </optional> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="part"/> + </optional> + <zeroOrMore> + <ref name="publisher"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="series"/> + </zeroOrMore> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <zeroOrMore> + <ref name="translator"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="volume"/> + </optional> + <optional> + <ref name="volumes"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="inproceedings"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>inproceedings</value> + </attribute> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="editor"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="booktitle"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <zeroOrMore> + <ref name="booksubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="booktitleaddon"/> + </zeroOrMore> + <optional> + <ref name="chapter"/> + </optional> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <zeroOrMore> + <ref name="eventtitle"/> + </zeroOrMore> + <optional> + <ref name="isbn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <zeroOrMore> + <ref name="mainsubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitleaddon"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <zeroOrMore> + <ref name="organisation"/> + </zeroOrMore> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="part"/> + </optional> + <zeroOrMore> + <ref name="publisher"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="series"/> + </zeroOrMore> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <zeroOrMore> + <ref name="venue"/> + </zeroOrMore> + <optional> + <ref name="volume"/> + </optional> + <optional> + <ref name="volumes"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="manual"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>manual</value> + </attribute> + <attribute name="type"/> + <choice> + <ref name="author"/> + <ref name="editor"/> + </choice> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="chapter"/> + </optional> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="edition"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <optional> + <ref name="isbn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <zeroOrMore> + <ref name="organisation"/> + </zeroOrMore> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="pagetotal"/> + </optional> + <zeroOrMore> + <ref name="publisher"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="series"/> + </zeroOrMore> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="version"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="misc"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>misc</value> + </attribute> + <attribute name="howpublished"/> + <attribute name="type"/> + <choice> + <ref name="author"/> + <ref name="editor"/> + </choice> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <zeroOrMore> + <ref name="organisation"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="version"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="online"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>online</value> + </attribute> + <choice> + <ref name="author"/> + <ref name="editor"/> + </choice> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <ref name="url"/> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <optional> + <ref name="note"/> + </optional> + <zeroOrMore> + <ref name="organisation"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="version"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="patent"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>patent</value> + </attribute> + <attribute name="type"/> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <ref name="number"/> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <zeroOrMore> + <ref name="holder"/> + </zeroOrMore> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="version"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="periodical"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>periodical</value> + </attribute> + <oneOrMore> + <ref name="editor"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <optional> + <ref name="issn"/> + </optional> + <zeroOrMore> + <ref name="issue"/> + </zeroOrMore> + <zeroOrMore> + <ref name="issuesubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="issuetitle"/> + </zeroOrMore> + <optional> + <ref name="language"/> + </optional> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="series"/> + </zeroOrMore> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="volume"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="proceedings"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>proceedings</value> + </attribute> + <oneOrMore> + <ref name="editor"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="chapter"/> + </optional> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <zeroOrMore> + <ref name="eventtitle"/> + </zeroOrMore> + <optional> + <ref name="isbn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <zeroOrMore> + <ref name="mainsubtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="maintitleaddon"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <zeroOrMore> + <ref name="organisation"/> + </zeroOrMore> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="pagetotal"/> + </optional> + <optional> + <ref name="part"/> + </optional> + <zeroOrMore> + <ref name="publisher"/> + </zeroOrMore> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="series"/> + </zeroOrMore> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <zeroOrMore> + <ref name="venue"/> + </zeroOrMore> + <optional> + <ref name="volume"/> + </optional> + <optional> + <ref name="volumes"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="report"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>report</value> + </attribute> + <attribute name="type"/> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="institution"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="chapter"/> + </optional> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <optional> + <ref name="isrn"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="number"/> + </optional> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="pagetotal"/> + </optional> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <optional> + <ref name="version"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="thesis"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>thesis</value> + </attribute> + <attribute name="type"/> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="institution"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="chapter"/> + </optional> + <optional> + <ref name="doi"/> + </optional> + <optional> + <ref name="eprint"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="pages"/> + </optional> + <optional> + <ref name="pagetotal"/> + </optional> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="unpublished"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>unpublished</value> + </attribute> + <attribute name="howpublished"/> + <oneOrMore> + <ref name="author"/> + </oneOrMore> + <oneOrMore> + <ref name="title"/> + </oneOrMore> + <oneOrMore> + <ref name="date"/> + </oneOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> + <define name="set"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <value>set</value> + </attribute> + <attribute name="howpublished"/> + <ref name="entryset"/> + <optional> + <ref name="crossref"/> + </optional> + </interleave> + </element> + </define> + <define name="misctypes"> + <a:documentation/> + <element name="entry"> + <interleave> + <attribute name="id"/> + <attribute name="entrytype"> + <choice> + <value>artwork</value> + <value>audio</value> + <value>commentary</value> + <value>image</value> + <value>jurisdiction</value> + <value>legal</value> + <value>legislation</value> + <value>letter</value> + <value>movie</value> + <value>music</value> + <value>performance</value> + <value>review</value> + <value>software</value> + <value>standard</value> + <value>video</value> + </choice> + </attribute> + <attribute name="howpublished"/> + <zeroOrMore> + <ref name="author"/> + </zeroOrMore> + <zeroOrMore> + <ref name="title"/> + </zeroOrMore> + <zeroOrMore> + <ref name="date"/> + </zeroOrMore> + <optional> + <ref name="addendum"/> + </optional> + <optional> + <ref name="language"/> + </optional> + <zeroOrMore> + <ref name="location"/> + </zeroOrMore> + <optional> + <ref name="note"/> + </optional> + <optional> + <ref name="pubstate"/> + </optional> + <zeroOrMore> + <ref name="subtitle"/> + </zeroOrMore> + <zeroOrMore> + <ref name="titleaddon"/> + </zeroOrMore> + <optional> + <ref name="url"/> + </optional> + <ref name="BibLaTeXML.common.fields"/> + </interleave> + </element> + </define> +</grammar> diff --git a/Master/texmf-dist/source/bibtex/biber/data/schemata/dcf.rnc b/Master/texmf-dist/source/bibtex/biber/data/schemata/dcf.rnc new file mode 100644 index 00000000000..fb8effdb86c --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/data/schemata/dcf.rnc @@ -0,0 +1,25 @@ +namespace dcf = "https://sourceforge.net/projects/biber" + +start = + element dcf:driver-control { + attribute driver { "bibtex" | "biblatexml" | "ris" }, + element dcf:entry-types { + element dcf:entry-type { + attribute name { xsd:string }, + element dcf:aliasof { xsd:string }, + element dcf:alsoset { + attribute target { xsd:string }, + attribute value { xsd:string }, + empty + }* + }+ + }*, + element dcf:fields { + element dcf:field { + attribute name { xsd:string }, + (attribute handler { xsd:string } | + attribute aliasof { xsd:string }), + empty + }+ + } + } diff --git a/Master/texmf-dist/source/bibtex/biber/data/schemata/dcf.rng b/Master/texmf-dist/source/bibtex/biber/data/schemata/dcf.rng new file mode 100644 index 00000000000..14c4f3ba70e --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/data/schemata/dcf.rng @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grammar xmlns:dcf="https://sourceforge.net/projects/biber" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + <start> + <element name="dcf:driver-control"> + <attribute name="driver"> + <choice> + <value>bibtex</value> + <value>biblatexml</value> + <value>ris</value> + </choice> + </attribute> + <zeroOrMore> + <element name="dcf:entry-types"> + <oneOrMore> + <element name="dcf:entry-type"> + <attribute name="name"> + <data type="string"/> + </attribute> + <element name="dcf:aliasof"> + <data type="string"/> + </element> + <zeroOrMore> + <element name="dcf:alsoset"> + <attribute name="target"> + <data type="string"/> + </attribute> + <attribute name="value"> + <data type="string"/> + </attribute> + <empty/> + </element> + </zeroOrMore> + </element> + </oneOrMore> + </element> + </zeroOrMore> + <element name="dcf:fields"> + <oneOrMore> + <element name="dcf:field"> + <attribute name="name"> + <data type="string"/> + </attribute> + <choice> + <attribute name="handler"> + <data type="string"/> + </attribute> + <attribute name="aliasof"> + <data type="string"/> + </attribute> + </choice> + <empty/> + </element> + </oneOrMore> + </element> + </element> + </start> +</grammar> diff --git a/Master/texmf-dist/source/bibtex/biber/doc/biber-auctex.png b/Master/texmf-dist/source/bibtex/biber/doc/biber-auctex.png Binary files differnew file mode 100644 index 00000000000..c172c5cb2ec --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/doc/biber-auctex.png diff --git a/Master/texmf-dist/source/bibtex/biber/doc/biber-texworks.png b/Master/texmf-dist/source/bibtex/biber/doc/biber-texworks.png Binary files differnew file mode 100644 index 00000000000..35ad65391ff --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/doc/biber-texworks.png diff --git a/Master/texmf-dist/source/bibtex/biber/doc/biber.tex b/Master/texmf-dist/source/bibtex/biber/doc/biber.tex new file mode 100644 index 00000000000..1130e606879 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/doc/biber.tex @@ -0,0 +1,988 @@ +\documentclass{ltxdockit} +\usepackage[british]{babel} +\usepackage[strict=true,autostyle=true]{csquotes} +\usepackage{ifthen} +\usepackage{fontspec} +\usepackage{graphicx} +\usepackage{booktabs} +\setmainfont[Ligatures=TeX]{TeXGyrePagella} +\setsansfont[Ligatures=TeX]{Arial} +\setmonofont[Ligatures=TeX]{Courier New} + +\MakeAutoQuote{«}{»} + +\titlepage{% + title={biber}, + subtitle={A backend bibliography processor for biblatex}, + url={http://biblatex-biber.sourceforge.net}, + author={François Charette, Philip Kime}, + email={firmicus@ankabut.net, Philip@kime.org.uk}, + revision={biber 0.8 (biblatex 1.2)}, + date={\today}} + +\hypersetup{% + pdftitle={biber}, + pdfsubject={A backend bibliography processor for biblatex}, + pdfauthor={Philip Kime}, + pdfkeywords={biblatex, bibliography}} + + +% Control list spacing +\usepackage{enumitem} +\setdescription{noitemsep} +\setenumerate{noitemsep} +\setitemize{noitemsep} + +\def\biberex#1{\hbox{\hspace{-4em}\texttt{\small \detokenize{#1}}}} + +\begin{document} + +\printtitlepage +\tableofcontents + +\section{Introduction} +\label{int} + +\subsection{About} + +\verb+biber+ is conceptually a \verb+bibtex+ replacement for +\verb+biblatex+. It is written in Perl with the aim of providing a +customised and sophisticated data preparation backend for \verb+biblatex+. +Functionally, it offers a superset of \verb+bibtex+'s capabilities but is +tightly coupled with \verb+biblatex+ and cannot be used as a stand-alone tool +with standard \verb+.bst+ styles. + +\subsection{Requirements}\label{ref:req} + +\verb+biber+ is distributed in two ways. There is a Perl source +version which requires you to have a working Perl installation +(preferably version 5.12 but no less than 5.10) and the ability to +install the pre-requisite modules. Also provided are binaries for +major OSes built with the Perl \verb+PAR::Packer+ module and utilities. + +Currently there are binaries available for: + +\begin{itemize} +\item OSX Intel 64-bit +\item Windows +\item Linux 32-bit +\item Linux 64-bit +\end{itemize} + +These should work on any fairly recent OS version. Both binaries and +Perl source are available on SourceForge\footnote{\url{http://sourceforge.net/projects/biblatex-biber/}}. + +\subsection{License} + +\verb+biber+ is released under the free software Artistic License 2.0\footnote{\url{http://www.opensource.org/licenses/artistic-license-2.0.php}} + +\subsection{History} + +\verb+bibtex+ has been the default (only \ldots) integrated choice for +bibliography processing in TeX for a long time. It has well known +limitations which stem from its data format, data model and lack of Unicode +support\footnote{In fact, there is now a Unicode version}. The +\verb+.bst+ language for writing bibliography styles is painful to learn +and use. It is not a general programming language and this makes it really +very hard to do sophisticated automated processing of bibliographies. + +\verb+biblatex+ was a major advance for LaTeX users as it moved much +of the bibliography processing into LaTeX macros. However, +\verb+biblatex+ still used \verb+bibtex+ as a sorting engine for the +bibliography and also to generate various labels for +entries. \verb+bibtex+'s capabilities even for this reduced set of +tasks was still quite restricted due to the lack of Unicode support and +the more and more complex programming issues involved in label +preparation and file encoding. + +\verb+biber+ was designed specifically for \verb+biblatex+ in order to +provide a powerful backend engine which could deal with any required +tasks to do with \verb+.bbl+ preparation. Its main features are: + +\begin{itemize} +\item Deals with the full range of UTF-8 +\item Sorts in a completely customisable manner, using when available, + CLDR collation tailorings +\item Allows for per-entrytype options +\item Automatically encodes the \verb+.bbl+ into any supported encoding + format\footnote{«Supported» here means encodings supported by the + Perl \texttt{Encode} module} +\item Processes all bibliography sections in one pass of the tool +\item Handles UTF-8 citekeys and filenames (given a suitable fully + UTF-8 compliant TeX engine) +\item Creates entry sets dynamically and allow easily defined static entry sets, + all processed in one pass +\item Flexible user-customisable crossreference field inheritance + model +\item Support for related entries, to enable generic treatment of things + like «translated as», «reprinted as», «reprint of» etc.\footnote{In BibLaTeX 1.2} +\item Handles very complex auto-expansion and contraction of names and + namelists\footnote{In BibLaTeX 1.3} +\item Extensible modular data sources architecture for ease of adding + more data source types. +\item Support for remote data sources +\end{itemize} + +\subsection{Performance} + +\verb+biber+ can't really be compared with \verb+bibtex+ in any meaningful +way performance-wise. \verb+biber+ is written in perl and does a +great deal more than \verb+bibtex+ which is written in C. One of +\verb+biber+'s test cases is a 2150 entry, 15,000 line \verb+.bib+ file +which references a 630 entry macros file with a resulting 160 or so page (A4) +formatted bibliography. This takes \verb+biber+ about 100 seconds on +average to process on a reasonable computer. This is perfectly acceptable, +especially for a batch program \ldots + +\subsection{Acknowledgements} + +François Charette originally wrote \verb+biber+. Philip Kime joined in +the development in 2009. + +\section{Use} + +Firstly, running \verb+biber --help+ will display all options and a brief +description of each. This is the most useful brief source of usage +information. \verb+biber+ returns an exit code of 0 on success or 1 if +there was an error. + +Most \verb+biber+ options can be specified in long or short format. When +mentioning options below, they are referred to as +«\verb+long form|short form+» when an option has both a long and short +form. As usual with such options, when the option requires an argument, the +long form is followed by an equals sign «\verb+=+» and then the argument, +the short form is followed by a space and then the argument. For example, +the \verb+--configfile|-g+ option can be given in two ways: + +\begin{verbatim} +biber --configfile=somefile.conf +biber -g somefile.conf +\end{verbatim} + +With the \verb+backend=biber+ option, \verb+biblatex+ switches its backend +interface and passes all options and information relevant to \verb+biber+'s +operation in a control file with extension \verb+.bcf+\footnote{BibLaTeX Control + File}. This is conceptually equivalent to the \verb+.aux+ file which +LaTeX uses to pass information to \verb+bibtex+. The \verb+.bcf+ file is +XML and contains many options and settings which configure how \verb+biber+ +is to process the bibliography and generate the \verb+.bbl+ file. + +The usual way to call \verb+biber+ is simply with the \verb+.bcf+ file +as the only argument. The «\verb+.bcf+» extension of the control file +is not optional. \verb+biblatex+ always outputs a control file with +the \verb+.bcf+ extension. Specifying the «\verb+.bcf+» extension to +\verb+biber+ \emph{is} optional. Assuming a control file called +\verb+test.bcf+, the following two commands are equivalent: + +\begin{verbatim} +biber test.bcf +biber test +\end{verbatim} + +\subsection{Options and config file} +\verb+biber+ sets its options using the following resource +chain which is given in decreasing precedence order:\\[2ex] + +\noindent command line options $\rightarrow$\\ +\hspace*{1em}\verb+.bcf+ file$\rightarrow$\\ +\hspace*{2em}\verb+biber.conf+ file $\rightarrow$\\ +\hspace*{3em}\verb+biber+ hard-coded defaults\\[2ex] + +\noindent Users do not need to care directly about the contents or format of the +\verb+.bcf+ file as this is generated from the options which they specify +for \verb+biblatex+. To override the \verb+.bcf+ options, users +may use either a configuration file or the command line to set options. + +The configuration file is by default called \verb+biber.conf+ but this can +be changed using the \verb+--configfile|-g+ option. Unless +\verb+--configfile|-g+ is used, the config file is +looked for in the following places, in decreasing order of preference:\\[2ex] + +\noindent \verb+biber.conf+ in the current directory $\rightarrow$\\ +\hspace*{1em}\verb+$HOME/.biber.conf+ $\rightarrow$\\ +\hspace*{2em}\verb+$XDG_CONFIG_HOME/biber/biber.conf+ $\rightarrow$\\ +\hspace*{3em}\verb+$HOME/Library/biber/biber.conf+ (Mac OSX only)\\ +\hspace*{3em}\verb+$APPDATA/biber.conf+ (Windows only) $\rightarrow$\\ +\hspace*{4em}the output of \verb+kpsewhich biber.conf+ (if available on the +system)\\[2ex] + +\noindent The config file format is a very flexible one which allows users to specify +options in most common formats, even mixed in the same file. It's easier to +see an example. Here is a config file which displays the \verb+biber+ +hard-coded defaults: + +\begin{verbatim} +bblencoding UTF-8 +bibencoding UTF-8 +collate 1 +<collate_options> + level 3 +</collate_options> +debug 0 +fastsort 0 +mincrossrefs 2 +nolog 0 +nostdmacros 0 +<nosort> + # ignore prefices like 'al-' when sorting name fields + type_names \A\p{L}{2}\p{Pd} + # ignore diacritics when sorting author + type_names [\x{2bf}\x{2018}] +</nosort> +onlylog 0 +quiet 0 +sortcase true +sortlocale en_US.utf8 +sortupper true +trace 0 +validate_control 0 +validate_structure 0 +wraplines 0 +\end{verbatim} + +\noindent You can see here that options with multiple key/value pairs of +their own like\linebreak[4] \verb+--collate_options|-c+ can be specified in +Apache config format. Please see the documentation +for the \verb+Config::General+ Perl +module\footnote{\url{http://search.cpan.org/search?query=Config::General&mode=all}} +if you really need details. In practise, if you use a config file at all +for \verb+biber+, it will contain very little as you will usually set all +options by setting options in \verb+biblatex+ which will pass them to +\verb+biber+ via the \verb+.bcf+ file. + +The \verb+--collate_options|-c+ option takes a number of key/value pairs as +value. See section \ref{coll} for details. + +\subsubsection{The nosort option} + +The value of the \verb+nosort+ option can only be set in the config file +and not on the command line. This is because the values are Perl regular +expressions and would need special quoting to set on the command line. This +can get a bit tricky on some OSes (like Windows) so it's safer to set them +in the config file. In any case, it's unlikely you would want to set them +for particular \verb+biber+ runs; they would more likely be set as your +personal default and thus they would naturally be set in the config file +anyway. \verb+nosort+ allows you to ignore parts of a field for sorting. +This is done using \verb+perl+ regular expressions which specify what to +ignore in a field. You can specify as many patterns as you like for a +specific field. Also available are some field type aliases so you can, for +example, specify patterns for all name fields or all title fields. These +field types all begin with the string «\verb+type_+», see Table +\ref{tab:nst}. + +\begin{table} +\begin{center} +\small +\begin{tabular}{lllll} +\toprule +Alias & Fields\\ +\midrule +type\_name & author\\ + & afterword\\ + & annotator\\ + & bookauthor\\ + & commentator\\ + & editor\\ + & editora\\ + & editorb\\ + & editorc\\ + & foreword\\ + & holder\\ + & introduction\\ + & namea\\ + & nameb\\ + & namec\\ + & shortauthor\\ + & shorteditor\\ + & translator\\ +type\_title & booktitle\\ + & eventtitle\\ + & issuetitle\\ + & journaltitle\\ + & maintitle\\ + & origtitle\\ + & title\\ +\bottomrule +\end{tabular} +\end{center} +\caption{nosort option field type aliases} +\label{tab:nst} +\end{table} + +For example, this option can be used to ignore diacritic marks and prefices +in names which should not be considered when sorting. Given (the default): + +\begin{verbatim} +<nosort> + type_names \A\p{L}{2}\p{Pd} + type_names [\x{2bf}\x{2018}] +</nosort> +\end{verbatim} + +and the \verb+.bib+ entry: + +\begin{verbatim} +author = {{al-Hasan}, Ê¿AlÄ«}, +\end{verbatim} + +\noindent the prefix «al-» and the diacritic «ʿ» will not be considered +when sorting. See the \verb+perl+ regular expression manual page for +details of the regular expression syntax\footnote{\url{http://perldoc.perl.org/perlre.html}}. + +If a \verb+nosort+ option is found for a specific field, it will override +any option for a type which also covers that field. + +Here is another example. Suppose you wanted to ignore «The» at the +beginning of a \verb+TITLE+ field when sorting, you could add this to your +\verb+biber.conf+: + +\begin{verbatim} +<nosort> + title \AThe\s+ +</nosort> +\end{verbatim} + +\noindent If you wanted to do this for all title fields listed in Table +\ref{tab:nst}, then you would do this: + +\begin{verbatim} +<nosort> + type_title \AThe\s+ +</nosort> +\end{verbatim} + +\noindent \textbf{Note:} \verb+nosort+ can be specified for most fields but +not for things like dates and special fields as that wouldn't make much sense. + +\subsection{Input/Output File Locations} + +\subsubsection{Control file}\label{loc:cf} + +The control file is normally passed as the only argument to biber. It is +searched for in the following locations, in decreasing order of +priority:\\[2ex] + +\noindent Absolute filename $\rightarrow$\\ +\hspace*{1em}In the \verb+--output_directory+, if specified$\rightarrow$\\ +\hspace*{2em}Relative to current directory$\rightarrow$\\ +\hspace*{3em}Using \verb+kpsewhich+, if available + +\subsubsection{Data sources} + +Bibliography data sources of type «file» are searched for in the following +locations, in decreasing order of priority:\\[2ex] + +\noindent Absolute filename $\rightarrow$\\ +\hspace*{1em}In the \verb+--output_directory+, if specified$\rightarrow$\\ +\hspace*{2em}Relative to current directory$\rightarrow$\\ +\hspace*{3em}In the same directory as the control file$\rightarrow$\\ +\hspace*{4em}Using \verb+kpsewhich+ for supported formats, if available\\[2ex] + +\noindent Users do not specify explicitly the bibliography database +files; they are passed in the \verb+.bcf+ control file, which is +constructed from the \verb+biblatex+ \verb+\addbibresource{}+ macros. + +\subsection{Logfile} + +By default, the logfile for biber will be named \verb+\jobname.blg+, +so, if you run + +\begin{verbatim} + biber <options> test.bcf +\end{verbatim} + +\noindent then the logfile will be called «\verb+test.blg+». Like the +\verb+.bbl+ output file, it will be created in the +\verb+--output_directory|-c+, if this option is defined. You can +override the logfile name by using the \verb+--logfile+ option: + +\begin{verbatim} + biber --logfile=lfname test.bcf +\end{verbatim} + +\noindent results in a logfile called «\verb+lfname.blg+».\\ + +\noindent \textbf{Warning}: be careful if you are expecting \verb+biber+ to +write to directories which you don't have appropriate permissions to. This +is more commonly an issue on non-Windows OSes. For example, if you rely on +\verb+kpsewhich+ to find your database files which are in system TeX +directories, you may well not have write permission there so \verb+biber+ +will not be able to write the \verb+.bbl+. Use the \verb+--outfile|-O+ +option to specify the location to write the \verb+.bbl+ to in such cases. + +\subsection{Collation and Localisation}\label{coll} + +\verb+biber+ takes care of collating the bibliography for +\verb+biblatex+. It writes entries to the \verb+.bbl+ file sorted by a +completely customisable set of rules which are passed in the +\verb+.bcf+ file by \verb+biblatex+. \verb+biber+ has two ways of performing +collation:\\[2ex] + +\biberex{--collate|-C} + \noindent The default. This option makes \verb+biber+ use the + \verb+Unicode::Collate+ module for collation which implements the full UCA (Unicode + Collation Algorithm). It also has CLDR (Common Locale Data + Repository) tailoring to deal with cases which are not covered by the + UCA. It is a little slower than \verb+--fastsort|-f+ but the + advantages are such that it's rarely worth using \verb+--fastsort|-f+\\[1ex] + +\biberex{--fastsort|-f} + \noindent Biber will sort using + the OS locale collation tables. The drawback for this method is that special + collation tailoring for various languages are not implemented in the + collation tables for many OSes. For example, few OSes correctly sort 'Ã¥' + before 'ä' in the Swedish (\verb+sv_SE+) locale. If you are using a + common latin alphabet, then this is probably not a problem for you.\\[2ex] + +\noindent The locale used for collation is determined by the following resource +chain which is given in decreasing precedence order:\\[2ex] + +\noindent\verb+--collate_options|-c+ (e.g. \verb+-c 'locale => "de_DE"'+) $\rightarrow$\\ +\hspace*{1em}\verb+--sortlocale|-l+ $\rightarrow$\\ +\hspace*{2em}\verb+LC_COLLATE+ environment variable $\rightarrow$\\ +\hspace*{3em}\verb+LANG+ environment variable $\rightarrow$\\ +\hspace*{4em}\verb+LC_ALL+ environment variable\\[2ex] + +\noindent With the default \verb+--collate|-C+ option, the locale will +be used to look for a collation tailoring for that locale. It will generate an +informational warning if it finds none. This is not a problem as the vast +majority of collation cases are covered by the standard UCA and many +locales neither have nor need any special collation tailoring. + +With the \verb+--fastsort|-f+ option, the locale will be +used to locate an OS locale definition to use for the collation. This +may or may not be correctly tailored, depending on the locale and the OS.\\[1ex] + +\noindent Collation is by default case sensitive. You can turn this +off using the \verb+biber+ option \verb+--sortcase=false+ or from +\verb+biblatex+ using its option \verb+sortcase=false+.\\[1ex] + +\noindent\verb+--collate|-C+ by default collates uppercase before +lower. You can reverse this using the \verb+biber+ option \verb+--sortupper=false+ +or from \verb+biblatex+ by using its option \verb+sortupper=false+. Be +aware though that some locales rightly enforce a particular setting for +this (for example, Danish). You will be able to override it but +\verb+biber+ will warn you if you do. \verb+sortupper+ has no effect when +using \verb+--fastsort|-f+--you are at the mercy of what your OS +locale does.\\[1ex] + +There are in fact many options to \verb+Unicode::Collate+ +which can tailor the collation in various ways in +addition to the locale tailoring which is automatically performed. +Users should see the the documentation to the module for the various +options, most of which the vast majority of users will never +need\footnote{For details on the various options, see + \url{http://search.cpan.org/search?query=Unicode\%3A\%3ACollate&mode=all}}. +Options are passed using the \verb+--collate_options|-c+ option as a +single quoted string, each option separated by comma, each key and +value separated by «\verb+=>+». See examples. + +\subsubsection{Examples} + +\biberex{biber} + +\noindent Call biber using all settings from the \verb+.bcf+ generated from the +LaTeX run. Case sensitive UCA sorting is performed taking the locale +for tailoring from the environment if no \verb+sortlocale+ is defined in +the \verb+.bcf+ + +\biberex{biber --sortlocale=de_DE} + +\noindent Override any locale setting in the \verb+.bcf+ or +the environment. + +\biberex{biber --fastsort} + +\noindent Use slightly quicker internal sorting routine. This uses the OS locale +files which may or may not be accurate. + +\biberex{biber --sortcase=false} + +\noindent Case insensitive sorting. + +\biberex{biber --sortupper=false --collate_options="backwards => 2"} + +\noindent Collate lowercase before upper and collate French accents in +reverse order at UCA level 2. + +\subsection{Encoding of files} + +\verb+biber+ takes care of reencoding the \verb+.bib+ data as +necessary. In normal use, \verb+biblatex+ passes its +\verb+bibencoding+ option value to \verb+biber+ via the \verb+.bcf+ +file. It also passes the value of its \verb+texencoding+ option (which +maps to \verb+biber+'s \verb+bblencoding|-E+ option) the default value +of which depends on which TeX engine and encoding packages you are +using (see \verb+biblatex+ manual for details). + +\noindent \verb+biber+ performs the following tasks: + +\begin{enumerate} +\item Decodes the \verb+.bib+ into UTF-8 if it is not UTF-8 already +\item Decodes LaTeX character macros into UTF-8 if \verb+--bblencoding|-E+ + is UTF-8 +\item Encodes the output so that the \verb+.bbl+ is in + the encoding that \verb+--bblencoding|-E+ specifies +\item Warns if it is asked to output to the \verb+.bbl+ any UTF-8 + decoded LaTeX character macros which are not in the + \verb+--bblencoding|-E+ encoding. Replaces with a suitable LaTeX macro +\end{enumerate} + +\noindent Normally, you do not need to set the encoding options on the +\verb+biber+ command line as they are passed in the \verb+.bcf+ via +the information in your \verb+biblatex+ environment. However, you can +override the \verb+.bcf+ settings with the command line or config +file. The resource chain for encoding settings is, in decreasing order +of preference:\\[2ex] + +\noindent\verb+--bibencoding|-e+ and \verb+--bblencoding|-E+ $\rightarrow$\\ +\hspace*{1em}\verb+biber+ config file $\rightarrow$\\ +\hspace*{2em}\verb+.bcf+ control file + +\subsubsection{LaTeX macro decoding} + +\noindent As mentioned above, \verb+biber+ sometimes converts LaTeX +character macros into UTF-8. In fact there are two situations in which +this occurs. + +\begin{enumerate} +\item When \verb+--bblencoding|-E+ is UTF-8 +\item Always for internal sorting purposes +\end{enumerate} + +\noindent This decoding is very useful but take note of the following +two scenarios, which relate to each of the two situations in which +LaTeX macro decoding occurs: + +\minisec{Decoding when output is UTF-8} +If you are using PDFLaTeX and \verb+\usepackage[utf8]{inputenc}+, it +is possible that the UTF-8 characters resulting from \verb+biber+'s +internal LaTeX character macro decoding break \verb+inputenc+. This is +because \verb+inputenc+ does not implement all of UTF-8, only a +commonly used subset. + +An example--if you had \verb+\DJ+ in your \verb+.bib+, \verb+biber+ +decodes this correctly to «Ä» and this breaks \verb+inputenc+ because +it doesn't understand that UTF-8 character. The real solution here is +to switch to a TeX engine with full UTF-8 support like XeTeX or LuaTeX +as these don't use or need \verb+inputenc+. However, you can also try +the \verb+--bblsafechars+ option which will try to convert any UTF-8 +chars into LaTeX macros on output. The \verb+biblatex+ option +«\verb+texencoding=ascii+» (which corresponds to the \verb+biber+ +option «\verb+--bblencoding|-E+») will automatically set +\verb+--bblsafechars+. + +See also the \verb+biber --help+ output for the +\verb+--bblsafecharsset+ option which can customise the set of +conversion characters to use. + +\minisec{Decoding for internal sorting} + +If your \verb+bblencoding+ is not UTF-8, and you are using some UTF-8 +equivalent LaTeX character macros in your \verb+.bib+, then some +\verb+.bbl+ fields (currently only \verb+\sortinit{}+) might end up +with invalid characters in them, according to the \verb+.bbl+ +encoding. This is because some fields must be generated from the final +sorting data which is only available after the LaTeX character macro +decoding step. + +For example, suppose you are using PDFLaTeX with\\ +\verb+\usepackage[latin1]{inputenc}+ and the following \verb+bibtex+ +data source entry: + +\begin{verbatim} +@BOOK{citekey1, + AUTHOR = {{\v S}imple, Simon}, +} +\end{verbatim} + +\noindent With normal LaTeX character macro decoding, the +\verb+{\v S}+ is decoded into «Š» and so with name-first sorting, +\verb+\sortinit{}+ would be «Š». This is an invalid character in +latin1 encoding and so the \verb+.bbl+ would be broken. In such cases +when \verb+\sortinit{}+ is a char not valid in the \verb+bblencoding+, +\verb+biber+ tries to replace the character with a suitable LaTeX +macro. The solution is really to use UTF-8 \verb+.bbl+ encoding whenever +possible. In extreme cases where even with UTF-8 encoding, +the char is not recognised by LaTeX due to an incomplete UTF-8 +implementation (as with \verb+inputenc+), this might also mean +switching TeX engines to one that supports full UTF-8. + +\subsubsection{Examples} + +\biberex{biber} + +\noindent Set \verb+bibencoding+ and \verb+bblencoding+ from the +config file or \verb+.bcf+. + +\biberex{biber --bblencoding=latin2} + +\noindent Encode the \verb+.bbl+ as latin2, overriding the +\verb+.bcf+. + +\biberex{biber --bblsafechars} + +\noindent Set \verb+bibencoding+ and \verb+bblencoding+ from the +config file or \verb+.bcf+. Force encoding of UTF-8 chars to LaTeX +macros using default conversion set. + +\biberex{biber --bblencoding=ascii} + +\noindent Encode the \verb+.bbl+ as ascii, overriding the +\verb+.bcf+. Automatically sets \verb+--bblsafechars+ to force UTF-8 +to LaTeX macro conversion. + +\biberex{biber --bblencoding=ascii --bblsafecharsset=full} + +\noindent Encode the \verb+.bbl+ as ascii, overriding the +\verb+.bcf+. Automatically sets \verb+--bblsafechars+ to force UTF-8 +to LaTeX macro conversion using the full set of conversions + +\biberex{biber --decodecharsset=full} + +\noindent Set \verb+bibencoding+ and \verb+bblencoding+ from the +config file or \verb+.bcf+. Use the full LaTeX macro to UTF-8 +conversion set because you have some more obscure character macros in +your \verb+.bib+ which you want to sort correctly + +\biberex{biber -u} + +\noindent Shortcut alias for \verb+biber --bibencoding=UTF-8+ + +\biberex{biber -U} + +\noindent Shortcut alias for \verb+biber --bblencoding=UTF-8+ + +\subsection{Limitations} + +Currently, users are restricted to a one-one mapping from datasource +entry types/fields to the \verb+biblatex+ supported entry type/fields. +This is mitigated a little by the type/field aliases which +\verb+biblatex+ supports. In the future, users will be able to +customise the data source driver config in order to define their own +entry type/field aliases so that there is more flexibility in mapping +data source entry type/fields to internal \verb+biblatex+ types/fields. + +Currently it is not possible to automatically expand name lists to their +minimally unique truncation which is required by some styles (APA for +example). This is quite a hard problem, a solution to which is implemented +in an experimental \verb+biber+ branch but which also needs \verb+biblatex+ +support, envisaged for version 2.x. It requires an enhanced \verb+.bbl+ +format, amongst other things. + +\subsection{Editor Integration} + +Here is some information on how to integrate \verb+biber+ into some of the +more common editors + +\subsubsection{Emacs} + +Emacs has the very powerful AUcTeX mode for editing TeX and running +compilations. BibTeX is already integrated into AUCTeX and it is quite +simple to add support for \verb+biber+. Use the Emacs Customise interface to +modify the \verb+TeX-command-list+ variable and add a \verb+Biber+ command. + +\begin{verbatim} +M-x customise-variable +TeX-command-list +\end{verbatim} + +\noindent and then \verb+Ins+ somewhere a new command that looks like +Figure \ref{fig:biber-auctex}. + +\begin{figure}[!htbp] + \centering + \includegraphics[width=4in,keepaspectratio=true]{biber-auctex.png} + \caption{Screenshot of AUCTeX command setup for Biber} + \label{fig:biber-auctex} +\end{figure} + +\noindent Alternatively, you can add it directly in lisp to your \verb+.emacs+ like +this: + +\begin{verbatim} +(add-to-list 'TeX-command-list + (quote + ("Biber" "biber %s" TeX-run-Biber nil t :help "Run Biber"))) +\end{verbatim} + +\noindent However you add the command to \verb+TeX-command-list+, customise the +actual \verb+Biber+ command parameters as you want them, using «\verb+%s+» as +the LaTeX file name place holder. Then define the following two functions +in your \verb+.emacs+. + +\small +\begin{verbatim} +(eval-after-load "tex" + (quote (defun TeX-run-Biber (name command file) + "Create a process for NAME using COMMAND to format FILE with Biber." + (let ((process (TeX-run-command name command file))) + (setq TeX-sentinel-function 'TeX-Biber-sentinel) + (if TeX-process-asynchronous + process + (TeX-synchronous-sentinel name file process)))) + ) + ) + +(eval-after-load "tex" + (quote (defun TeX-Biber-sentinel (process name) + "Cleanup TeX output buffer after running Biber." + (goto-char (point-max)) + (cond + ;; Check whether Biber reports any warnings or errors. + ((re-search-backward (concat + "^(There \\(?:was\\|were\\) \\([0-9]+\\) " + "\\(warnings?\\|error messages?\\))") nil t) + ;; Tell the user their number so that she sees whether the + ;; situation is getting better or worse. + (message (concat "Biber finished with %s %s. " + "Type `%s' to display output.") + (match-string 1) (match-string 2) + (substitute-command-keys + "\\<TeX-mode-map>\\[TeX-recenter-output-buffer]"))) + (t + (message (concat "Biber finished successfully. " + "Run LaTeX again to get citations right.")))) + (setq TeX-command-next TeX-command-default)) + ) + ) +\end{verbatim} +\normalsize + +\noindent You'll then see a \verb+Biber+ option in your AUCTeX command menu or +you can just \verb+C-c C-c+ and type \verb+Biber+. + +\subsubsection{TeXworks} + +It's very easy to add \verb+biber+ support to TeXworks. In the Preferences, +select the Typesetting tab and then add a new Processing Tool as in Figure +\ref{fig:biber-texworks}. + +\begin{figure}[!htbp] + \centering + \includegraphics[width=4in,keepaspectratio=true]{biber-texworks.png} + \caption{Screenshot of TeXworks processing tool setup for Biber} + \label{fig:biber-texworks} +\end{figure} + +\subsection{BibTeX macros} + +\verb+BibTeX+ defines automatically macros for month abbreviations +like «\verb+jan+», «\verb+feb+» etc. \verb+biber+ also does this, +defining them as numbers since that is what \verb+biblatex+ wants. In +case you are also defining these yourself (although if you are only +using \verb+biblatex+, there isn't much point), you will get macro +redefinition warnings from the \verb+btparse+ library. You can turn +off \verb+biber+'s macro definitions to avoid this by using the option +\verb+--nostdmacros+. + +\section{Binaries} + +The binary distributions of biber are made using the Perl \verb+PAR::Packer+ +module. They can be used as a normal binary but have some behaviour which +is worth noting: + +\begin{itemize} +\item Don't be worried by the size of the binaries. \verb+PAR::Packer+ essentially + constructs a self-extracting archive which unpacks the needed files first + and so the binaries look larger than what actually runs in memory. +\item On the first run of a new version (that is, with a specific hash), + they actually unpack themselves to a temporary location which varies by + operating system. This unpacking can take a little while and only happens + on the first run of a new version. \textbf{Please don't kill the process + if it seems to take some time to do anything on the first run of a new + binary}. If you do, it will not unpack everything and it will almost + certainly break \verb+biber+. You will then have to delete your binary + cache (see section \ref{bc} below) and re-run the \verb+biber+ executable + again for the first time to allow it to unpack properly. +\end{itemize} + +\subsection{Binary Caches}\label{bc} + +\verb+PAR::Packer+ works by unpacking the required files to a cache +location. It only does this on the first run of a binary +by computing a hash of the binary and comparing it with +the cache directory name which contains the hash. So, if you run +several versions of a binary, you will end up with several cached +trees which are never used. This is particularly true if you are regularly +testing new versions of the \verb+biber+ binary. It is a good idea to +delete the caches for older binaries as they are not needed and can take up +a fair bit of space. The caches are located in a temporary location which +varies from OS to OS. The cache name is:\\[1ex] + +\noindent\verb+par-<username>/cache-<hash>+ (Linux/Unix/OSX)\\ +\verb+par-<username>\cache-<hash>+ (Windows)\\[1ex] + +\noindent The temp location is not always obvious but these are sensible +places to look (where \verb+*+ can vary depending on username: + +\begin{itemize} +\item \verb+/var/folders/*/*/-Tmp-/+ (OSX, local GUI login shell) +\item \verb+/var/tmp/+ (OSX, remote ssh login shell) +\item \verb+/tmp/+ (Linux) +\item \verb+C:\Documents and Settings\<username>\Local Settings\Temp+ (Windows) +\item \verb+C:\Windows\Temp+ (Windows) +\end{itemize} + +\noindent To clean up, you can just remove the whole \verb+par-<username>+ +directory/folder and then run the current binary again. + +\subsection{Binary Architectures} + +Binaries are available for the following architectures: + +\begin{itemize} +\item \verb+linux_x86_32+ --- Linux x86 32-bit (built on Ubuntu 9.04) +\item \verb+linux_x86_64+ --- Linux x86 64-bit (built on Ubuntu 9.04) +\item \verb+MSWin+ --- Windows. Should work on 32 or 64 bit (built on XP) +\item \verb+darwin_x86_64+ --- OSX Intel 64-bit (built on OSX 10.6) +\end{itemize} + +\subsection{Installing} + +These instructions only apply to manually downloaded binaries. If +\verb+biber+ came with your TeX distribution just use it as normal. + +Download the binary appropriate to you +OS/arch\footnote{\url{https://sourceforge.net/projects/biblatex-biber}}. Below +I assume it's on your desktop. + +You have to move the binary to somewhere in you command-line or TeX utility +path so that it can be found. If you know how to do this, just ignore the +rest of this section which contains some instructions for users who are +not sure about this. + +\subsubsection{OSX} + +If you are using the TexLive MacTeX distribution: + +\begin{verbatim} +sudo mv ~/Desktop/biber /usr/texbin/ +sudo chmod +x /usr/texbin/biber +\end{verbatim} + +\noindent If you are using the macports TexLive distribution: + +\begin{verbatim} +sudo mv ~/Desktop/biber /opt/local/bin/ +sudo chmod +x /opt/local/bin/biber +\end{verbatim} + +\noindent The «\verb+sudo+» commands will prompt you for your password. + +\subsubsection{Windows} + +The easiest way is to just move the executable into your \verb+C:\Windows+ directory since +that is always in your path. A more elegant is to put it somewhere in +your TeX distribution that is already in your path. For example if you +are using MiKTeX: + +\begin{verbatim} +C:\Program Files\MiKTeX 2.8\miktex\bin\ +\end{verbatim} + +\subsubsection{Unix/Linux} + +\begin{verbatim} +sudo mv ~/Desktop/biber /usr/local/bin/biber +sudo chmod +x /usr/local/bin/biber +\end{verbatim} + +\noindent Make sure \verb+/usr/local/bin+ is in your PATH. Search Google for «set PATH +linux» if unsure about this. There are many pages about this, for example: +\url{http://www.cyberciti.biz/faq/unix-linux-adding-path/} + + +\subsection{Building} + +Instructions for those who want/need to build an executable from the +Perl version. For this, you will need to have a recent Perl, +preferably 5.12 at least with the following modules: + +\begin{itemize} +\item \verb+PAR+ +\item \verb+PAR::Packer+ +\item All \verb+biber+ pre-requisites +\end{itemize} + +\noindent You should have the latest CPAN versions of all required modules +as \verb+biber+ is very specific in some cases about module versions and +depends on recent fixes in many cases. You can see if you have the +\verb+biber+ Perl dependencies by the usual + +\begin{verbatim} +perl ./Build.PL +\end{verbatim} + +\noindent invocation in the biber Perl distribution tree +directory. Normally, the build procedure for the binaries is as +follows\footnote{On UNIXequse systems, you may need to specify a full + path to the scripts e.g. \texttt{./Build}}: + +\begin{itemize} +\item Get the biber source tree from SF and put it on the architecture + you are building for +\item cd to the root of the source tree +\item \verb+perl Build.PL+ (this will check your module + dependencies) +\item \verb+Build test+ +\item \verb+Build install+ (may need to run this as sudo on + UNIXesque systems) +\item \verb+cd dist/<arch>+ +\item \verb+build.sh+ (\verb+build.bat+ on Windows) +\end{itemize} + +\noindent This leaves a binary called «\verb+biber-<arch>+» (also with +a «\verb+.exe+» extension on Windows) in your current directory. +The tricky part is constructing the information for the build +script. There are two things that need to be configured, both of +which are required by the \verb+PAR::Packer+ module: + +\begin{enumerate} +\item A list of modules/libraries to include in the binary which are not + automatically detected by the \verb+PAR::Packer+ dependency + scanner +\item A list of extra files to include in the binary which are not + automatically detected by the \verb+PAR::Packer+ dependency + scanner +\end{enumerate} + +\noindent To build \verb+biber+ for a new architecture you need to +define these two things as part of constructing new build scripts: + +\begin{itemize} +\item Make a new subfolder in the \verb+dist+ directory named after the + architecture you are building for. This name is arbitrary but should + be fairly obvious like «\verb+solaris-sparc-64+», for example. +\item Copy the \verb+biber.files+ file from an existing build + architecture into this directory. +\item For all of the files with absolute pathnames in there (that is, + ones we are not pulling from the \verb+biber+ tree itself), locate these + files in your Perl installation tree and put the correct path in the + file. +\item Copy the build script from a vaguely similar architecture + (i.e. Windows/non-Windows \ldots) to your new architecture + directory. +\item Change the \verb+--link+ options to point to where the required + libraries reside on your system. +\item Change the \verb+--output+ option to name the resulting binary + for your architecture. +\item Run the build script +\end{itemize} + +\noindent The \verb+--link+ options can be a little tricky +sometimes. It is usually best to build without them once and then run +\verb+ldd+ (or Windows equivalent) on the binary to see which +version/location of a library you should link to. You can also try +just running the binary and it should complain about missing libraries +and where it expected to find them. Put this path into the +\verb+--link+ option. The \verb+--module+ options are the same for all +architectures and do not need to be modified. +On architectures which have or can have case-insensitive file systems, +you should use the build script from either Windows or OSX as a reference +as these include a step to copy the main \verb+biber+ script to a new name +before packing the binary. This is required as otherwise a spurious +error is reported to the user on first run of the binary due to a name +collision when it unpacks itself. + +\end{document} diff --git a/Master/texmf-dist/source/bibtex/biber/etc/biber.conf b/Master/texmf-dist/source/bibtex/biber/etc/biber.conf new file mode 100644 index 00000000000..5b29e16f303 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/etc/biber.conf @@ -0,0 +1,31 @@ +# This is a sample file only, don't actually use this - it's intended just as an example +# of the format of the file +allentries 0 +bibdata undef +bblencoding UTF-8 +bibencoding UTF-8 +collate 1 +<collate_options> + level 3 +</collate_options> +debug 0 +fastsort 0 +mincrossrefs 2 +nolog 0 +<nosort> + # ignore prefices like 'al-' when sorting name fields + type_name \A\p{L}{2}\p{Pd} + # ignore diacritics when sorting author + type_name [\x{2bf}\x{2018}] + # Ignore "The " when sorting titles + type_title \AThe\s+ +</nosort> +onlylog 0 +quiet 0 +sortcase true +sortlocale en_US.utf8 +sortupper true +trace 0 +validate_control 0 +validate_structure 0 +wraplines 0 diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber.pm new file mode 100644 index 00000000000..d15b8034c57 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber.pm @@ -0,0 +1,2178 @@ +package Biber; +use strict; +use warnings; +#use feature 'unicode_strings'; +use Carp; +use Encode; +use File::Copy; +use File::Spec; +use IO::File; +use IPC::Cmd qw( can_run run ); +use POSIX qw( locale_h ); # for sorting with built-in "sort" +use Cwd qw( abs_path ); +use Biber::Config; +use Biber::Constants; +use List::Util qw( first ); +use Digest::MD5 qw( md5_hex ); +use Biber::Internals; +use Biber::Entries; +use Biber::Entry; +use Biber::Entry::Name; +use Biber::Sections; +use Biber::Section; +use Biber::Section::List; +use Biber::Structure; +use Biber::Utils; +use Storable qw( dclone ); +use Log::Log4perl qw( :no_extra_logdie_message ); +use base 'Biber::Internals'; +use Config::General qw( ParseConfig ); +use Data::Dump; +use Data::Compare; +use Text::BibTeX qw(:macrosubs); + +=encoding utf-8 + +=head1 NAME + +Biber - main module for biber, a bibtex replacement for users of biblatex + +=cut + +our $VERSION = '0.8'; +our $BETA_VERSION = 0; # Is this a beta version? + +my $logger = Log::Log4perl::get_logger('main'); + + +=head1 SYNOPSIS + + use Biber; + + my $biber = Biber->new(); + $biber->parse_ctrlfile("example.bcf"); + $biber->prepare; + +=cut + +=head1 METHODS + +=head2 new + + Initialize the Biber object, optionally passing named options as arguments. + +=cut + +sub new { + my ($class, %opts) = @_; + my $self = bless {}, $class; + + # Set up config object from config file and defaults + if (defined $opts{configfile}) { + Biber::Config->_initopts( $opts{configfile} ); + } else { + Biber::Config->_initopts(undef, $opts{noconf}); + } + # Command-line overrides everything else + if (%opts) { + foreach (keys %opts) { + Biber::Config->setcmdlineoption($_, $opts{$_}); + } + } + + return $self; +} + +=head2 biber_warn + + Wrapper around various warnings bits and pieces + Logs a warning, increments warning count in Biber object and add warning to + the list of .bbl warnings to add + +=cut + +sub biber_warn { + my $self = shift; + my $entry = shift; + my $warning = shift; + $logger->warn($warning); + $entry->add_warning($warning); + $self->{warnings}++; + return; +} + + +=head2 sections + + my $sections= $biber->sections + + Returns a Biber::Sections object describing the bibliography sections + +=cut + +sub sections { + my $self = shift; + return $self->{sections}; +} + + +=head2 set_output_obj + + Sets the object used to output final results + Must be a subclass of Biber::Output::Base + +=cut + +sub set_output_obj { + my $self = shift; + my $obj = shift; + croak('Output object must be subclass of Biber::Output::Base!') unless $obj->isa('Biber::Output::Base'); + $self->{output_obj} = $obj; + return; +} + + +=head2 get_preamble + + Returns the current preamble as an array ref + +=cut + +sub get_preamble { + my $self = shift; + return $self->{preamble}; +} + + +=head2 get_output_obj + + Returns the object used to output final results + +=cut + +sub get_output_obj { + my $self = shift; + return $self->{output_obj}; +} + +=head2 set_current_section + + Sets the current section number that we are working on to a section number + +=cut + +sub set_current_section { + my $self = shift; + my $secnum = shift; + $self->{current_section} = $secnum; + return; +} + +=head2 get_current_section + + Gets the current section number that we are working on + +=cut + +sub get_current_section { + my $self = shift; + return $self->{current_section}; +} + +=head2 parse_ctrlfile + + This method reads the control file + generated by biblatex to work out the various biblatex options. + See Constants.pm for defaults and example of the data structure being built here. + +=cut + +sub parse_ctrlfile { + my ($self, $ctrl_file) = @_; + + my $ctrl_file_path = locate_biber_file($ctrl_file); + Biber::Config->set_ctrlfile_path($ctrl_file_path); + + $logger->logdie("Cannot find control file '$ctrl_file'! - did you pass the \"backend=biber\" option to BibLaTeX?") unless ($ctrl_file_path and -e $ctrl_file_path); + + # Validate if asked to + if (Biber::Config->getoption('validate_control')) { + require XML::LibXML; + + # Set up XML parser + my $CFxmlparser = XML::LibXML->new(); + $CFxmlparser->line_numbers(1); # line numbers for more informative errors + + # Set up schema + my $CFxmlschema; + + # we assume that the schema files are in the same dir as Biber.pm: + (my $vol, my $biber_path, undef) = File::Spec->splitpath( $INC{"Biber.pm"} ); + + # Deal with the strange world of Par::Packer paths + # We might be running inside a PAR executable and @INC is a bit odd in this case + # Specifically, "Biber.pm" in @INC might resolve to an internal jumbled name + # nowhere near to these files. You know what I mean if you've dealt with pp + my $bcf_rng; + if ($biber_path =~ m|/par\-| and $biber_path !~ m|/inc|) { # a mangled PAR @INC path + $bcf_rng = File::Spec->catpath($vol, "$biber_path/inc/lib/Biber", 'bcf.rng'); + } + else { + $bcf_rng = File::Spec->catpath($vol, "$biber_path/Biber", 'bcf.rng'); + } + + if (-e $bcf_rng) { + $CFxmlschema = XML::LibXML::RelaxNG->new( location => $bcf_rng ) + } + else { + $logger->warn("Cannot find XML::LibXML::RelaxNG schema. Skipping validation : $!"); + $self->{warnings}++; + goto CONVERT; + } + + # Parse file + my $CFxp = $CFxmlparser->parse_file($ctrl_file_path); + + # XPath context + my $CFxpc = XML::LibXML::XPathContext->new($CFxp); + $CFxpc->registerNs('bcf', 'https://sourceforge.net/projects/biblatex'); + + # Validate against schema. Dies if it fails. + if ($CFxmlschema) { + eval { $CFxmlschema->validate($CFxp) }; + if (ref($@)) { + $logger->debug( $@->dump() ); + $logger->logdie("BibLaTeX control file \"$ctrl_file_path\" failed to validate\n$@"); + } + elsif ($@) { + $logger->logdie("BibLaTeX control file \"$ctrl_file_path\" failed to validate\n$@"); + } + else { + $logger->info("BibLaTeX control file \"$ctrl_file_path\" validates"); + } + } + undef $CFxmlparser; + } + + # Convert .bcf to .html using XSLT transform if asked to + CONVERT: + if (Biber::Config->getoption('convert_control')) { + + require XML::LibXSLT; + require XML::LibXML; + + my $xslt = XML::LibXSLT->new(); + my $CFstyle; + + # we assume that the schema files are in the same dir as Biber.pm: + (my $vol, my $biber_path, undef) = File::Spec->splitpath( $INC{"Biber.pm"} ); + + # Deal with the strange world of Par::Packer paths + # We might be running inside a PAR executable and @INC is a bit odd in this case + # Specifically, "Biber.pm" in @INC might resolve to an internal jumbled name + # nowhere near to these files. You know what I mean if you've dealt with pp + my $bcf_xsl; + if ($biber_path =~ m|/par\-| and $biber_path !~ m|/inc|) { # a mangled PAR @INC path + $bcf_xsl = File::Spec->catpath($vol, "$biber_path/inc/lib/Biber", 'bcf.xsl'); + } + else { + $bcf_xsl = File::Spec->catpath($vol, "$biber_path/Biber", 'bcf.xsl'); + } + + if (-e $bcf_xsl) { + $CFstyle = XML::LibXML->load_xml( location => $bcf_xsl, no_cdata=>1 ) + } + else { + $logger->warn("Cannot find XML::LibXSLT stylesheet. Skipping conversion : $!"); + $self->{warnings}++; + goto LOADCF; + } + + my $CF = XML::LibXML->load_xml(location => $ctrl_file_path); + my $stylesheet = $xslt->parse_stylesheet($CFstyle); + my $CFhtml = $stylesheet->transform($CF); + $stylesheet->output_file($CFhtml, $ctrl_file_path . '.html'); + $logger->info("Converted BibLaTeX control file '$ctrl_file_path' to '$ctrl_file_path.html'"); + } + + # Open control file + LOADCF: + my $ctrl = new IO::File "<$ctrl_file_path" + or $logger->logdie("Cannot open $ctrl_file_path: $!"); + + $logger->info("Reading $ctrl_file_path"); + + # Read control file + require XML::LibXML::Simple; + + my $bcfxml = XML::LibXML::Simple::XMLin($ctrl, + 'ForceContent' => 1, + 'ForceArray' => [ + qr/\Acitekey\z/, + qr/\Aoption\z/, + qr/\Aoptions\z/, + qr/\Avalue\z/, + qr/\Asortitem\z/, + qr/\Abibdata\z/, + qr/\Adatasource\z/, + qr/\Asection\z/, + qr/\Asortexclusion\z/, + qr/\Aexclusion\z/, + qr/\Asort\z/, + qr/\Adisplaymode\z/, + qr/\Amode\z/, + qr/\Apresort\z/, + qr/\Atype_pair\z/, + qr/\Ainherit\z/, + qr/\Afieldor\z/, + qr/\Afieldxor\z/, + qr/\Afield\z/, + qr/\Aalias\z/, + qr/\Aconstraints\z/, + qr/\Aconstraint\z/, + qr/\Aentrytype\z/, + qr/\Adatetype\z/, + qr/\Asectionlist\z/, + qr/\A(?:or)?filter\z/, + ], + 'NsStrip' => 1, + 'KeyAttr' => []); + + my $controlversion = $bcfxml->{version}; + Biber::Config->setblxoption('controlversion', $controlversion); + $logger->warn("Warning: Found biblatex control file version $controlversion, expected version $BIBLATEX_VERSION") + unless $controlversion eq $BIBLATEX_VERSION; + + # Look at control file and populate our main data structure with its information + + # OPTIONS + foreach my $bcfopts (@{$bcfxml->{options}}) { + + # Biber options + if (lc($bcfopts->{component}) eq 'biber') { + + # Global options + if (lc($bcfopts->{type}) eq 'global') { + foreach my $bcfopt (@{$bcfopts->{option}}) { + unless (defined(Biber::Config->getcmdlineoption($bcfopt->{key}{content}))) { # already set on cmd line + if (lc($bcfopt->{type}) eq 'singlevalued') { + Biber::Config->setoption($bcfopt->{key}{content}, $bcfopt->{value}[0]{content}); + } + elsif (lc($bcfopt->{type}) eq 'multivalued') { + Biber::Config->setoption($bcfopt->{key}{content}, + [ map {$_->{content}} sort {$a->{order} <=> $b->{order}} @{$bcfopt->{value}} ]); + } + } + } + } + } + + # BibLaTeX options + if (lc($bcfopts->{component}) eq 'biblatex') { + + # Global options + if (lc($bcfopts->{type}) eq 'global') { + foreach my $bcfopt (@{$bcfopts->{option}}) { + if (lc($bcfopt->{type}) eq 'singlevalued') { + Biber::Config->setblxoption($bcfopt->{key}{content}, $bcfopt->{value}[0]{content}); + } elsif (lc($bcfopt->{type}) eq 'multivalued') { + Biber::Config->setblxoption($bcfopt->{key}{content}, + [ map {$_->{content}} sort {$a->{order} <=> $b->{order}} @{$bcfopt->{value}} ]); + } + } + } + + # Entrytype options + else { + my $entrytype = $bcfopts->{type}; + foreach my $bcfopt (@{$bcfopts->{option}}) { + if (lc($bcfopt->{type}) eq 'singlevalued') { + Biber::Config->setblxoption($bcfopt->{key}{content}, $bcfopt->{value}[0]{content}, 'PER_TYPE', $entrytype); + } elsif (lc($bcfopt->{type}) eq 'multivalued') { + Biber::Config->setblxoption($bcfopt->{key}{content}, + [ map {$_->{content}} sort {$a->{order} <=> $b->{order}} @{$bcfopt->{value}} ], + 'PER_TYPE', + $entrytype); + } + } + } + } + } + + # DISPLAYMODES + # This should not be optional any more when biblatex implements this so take + # out this conditional + if (exists($bcfxml->{displaymodes})) { + my $dms; + foreach my $dm (@{$bcfxml->{displaymodes}{displaymode}}) { + $dms->{$dm->{target}{content}} = [ map {$_->{content}} @{$dm->{mode}} ]; + } + Biber::Config->setblxoption('displaymode', $dms); + } + + # INHERITANCE schemes for crossreferences (always global) + Biber::Config->setblxoption('inheritance', $bcfxml->{inheritance}); + + # SORTING + + # sorting excludes + foreach my $sex (@{$bcfxml->{sorting}{sortexclusion}}) { + my $excludes; + foreach my $ex (@{$sex->{exclusion}}) { + $excludes->{$ex->{content}} = 1; + } + Biber::Config->setblxoption('sortexclusion', + $excludes, + 'PER_TYPE', + $sex->{type}); + } + + # presort defaults + foreach my $presort (@{$bcfxml->{sorting}{presort}}) { + # Global presort default + unless (exists($presort->{type})) { + Biber::Config->setblxoption('presort', $presort->{content}); + } + # Per-type default + else { + Biber::Config->setblxoption('presort', + $presort->{content}, + 'PER_TYPE', + $presort->{type}); + } + } + + my $sorting = _parse_sort($bcfxml->{sorting}); + + Biber::Config->setblxoption('sorting', $sorting); + + # STRUCTURE schema (always global) + # This should not be optional any more when biblatex implements this so take + # out this conditional + if (exists($bcfxml->{structure})) { + Biber::Config->setblxoption('structure', $bcfxml->{structure}); + } + + # SECTIONS + # This is also where we set data files as these are associated with a bib section + + # Data sources + my %bibdatasources = (); + foreach my $data (@{$bcfxml->{bibdata}}) { + foreach my $datasource (@{$data->{datasource}}) { + push @{$bibdatasources{$data->{section}[0]}}, { type => $datasource->{type}, + name => $datasource->{content}, + datatype => $datasource->{datatype} }; + } + } + + unless (%bibdatasources or Biber::Config->getoption('bibdata')) { + $logger->logdie("No data files on command line or provided in the file '$ctrl_file_path'! Exiting") + } + + my $key_flag = 0; + my $bib_sections = new Biber::Sections; + +SECTION: foreach my $section (@{$bcfxml->{section}}) { + my $bib_section; + my $secnum = $section->{number}; + # Can be multiple section 0 entries and so re-use that section object if it exists + if (my $existing_section = $bib_sections->get_section($secnum)) { + $bib_section = $existing_section; + } + else { + $bib_section = new Biber::Section('number' => $secnum); + } + + # Set the data files for the section unless we've already done so + # (for example, for multiple section 0 entries) + $bib_section->set_datasources($bibdatasources{$secnum}) unless + $bib_section->get_datasources; + + # Add any list specs to the Biber::Section object + foreach my $list (@{$section->{sectionlist}}) { + my $llabel = $list->{label}; + if ($bib_section->get_list($llabel)) { + $logger->warn("Section list '$llabel' is repeated for section $secnum - ignoring subsequent mentions"); + $self->{warnings}++; + next; + } + + my $seclist = Biber::Section::List->new(label => $llabel); + foreach my $filter (@{$list->{filter}}) { + $seclist->add_filter($filter->{type}, $filter->{content}); + } + # disjunctive filters + foreach my $orfilter (@{$list->{orfilter}}) { + $seclist->add_filter('orfilter', { map {$_->{type} => [$_->{content}]} @{$orfilter->{filter}} }); + } + + if (my $sorting = $list->{sorting}) { # can be undef for fallback to global sorting + $seclist->set_sortscheme(_parse_sort($sorting)); + } + else { + $seclist->set_sortscheme(Biber::Config->getblxoption('sorting')); + } + $seclist->set_type($list->{type} || 'entry'); # lists are entry lists by default + $logger->debug("Adding list '$llabel' to section $secnum"); + $bib_section->add_list($seclist); + } + + # Intermediate code until biblatex moves main \printbibliography to a list + # MAIN list has no filter and no sorting spec so it uses all citekeys and the + # global sort default. + unless ($bib_section->get_list('MAIN')) { + my $mainlist = Biber::Section::List->new(label => 'MAIN'); + $mainlist->set_sortscheme(Biber::Config->getblxoption('sorting')); + $mainlist->set_type('entry'); + $bib_section->add_list($mainlist); + } + + # Intermediate code until biblatex moves SHORTHANDS to a .bcf supported list + unless ($bib_section->get_list('SHORTHANDS')) { + my $los = Biber::Section::List->new(label => 'SHORTHANDS'); + if (Biber::Config->getblxoption('sortlos')) { + $los->set_sortscheme([ [ {}, {'shorthand' => {}} ] ]); + $los->add_filter('field', 'shorthand'); + } + else { + $los->set_sortscheme(Biber::Config->getblxoption('sorting')); + $los->add_filter('field', 'shorthand'); + } + $los->set_type('shorthand'); + $bib_section->add_list($los); + } + + # Stop reading citekeys if we encounter "*" as a citation as this means + # "all keys" + my @keys = (); + foreach my $keyc (@{$section->{citekey}}) { + my $key = $keyc->{content}; + if ($key eq '*') { + $bib_section->allkeys; + # Normalise - when allkeys is true don't need citekeys - just in case someone + # lists "*" and also some other citekeys + $bib_section->del_citekeys; + $key_flag = 1; # There is at least one key, used for error reporting below + $logger->info("Using all citekeys in bib section " . $secnum); + $bib_sections->add_section($bib_section); + next SECTION; + } + elsif (not Biber::Config->get_seenkey($key, $secnum)) { + # Dynamic set definition + # Save dynamic key -> member keys mapping for set entry auto creation later + if (exists($keyc->{type}) and $keyc->{type} eq 'set') { + $bib_section->set_dynamic_set($key, split /\s*,\s*/, $keyc->{members}); + } + push @keys, $key; + $key_flag = 1; # There is at least one key, used for error reporting below + Biber::Config->incr_seenkey($key, $secnum); + } + elsif (Biber::Config->get_keycase($key) ne $key) { + $logger->warn("Case mismatch error between cite keys '$key' and '" . Biber::Config->get_keycase($key) . "'"); + $self->{warnings}++; + next; + } + } + + unless ($bib_section->is_allkeys) { + $logger->info("Found ", $#keys+1 , " citekeys in bib section $secnum") + } + + if (Biber::Config->getoption('debug')) { + my @debug_keys = sort @keys; + unless ($bib_section->is_allkeys) { + $logger->debug("The citekeys for section $secnum are: ", join(', ', @debug_keys), "\n"); + } + } + + $bib_section->add_citekeys(@keys); + $bib_sections->add_section($bib_section); + } + + # Die if there are no citations in any section + unless ($key_flag) { + $logger->warn("The file '$ctrl_file_path' does not contain any citations!"); + $self->{warnings}++; + } + + # Add the Biber::Sections object to the Biber object + $self->{sections} = $bib_sections; + + # Normalise any UTF-8 encoding string immediately to exactly what we want + # We want the strict perl utf8 "UTF-8" + normalise_utf8(); + + return; +} + + +=head2 process_setup + + Place to put misc pre-processing things needed later + +=cut + +sub process_setup { + # Break structure information up into more processing-friendly formats + # for use in verification checks later + # This has to be here as opposed to in parse_control() so that it can pick + # up structure defaults in Constants.pm in case there is no .bcf + Biber::Config->set_structure(Biber::Structure->new(Biber::Config->getblxoption('structure'))); + + # Force bblsafechars flag if output to ASCII + if (Biber::Config->getoption('bblencoding') =~ /(?:x-)ascii/xmsi) { + Biber::Config->setoption('bblsafechars', 1); + } +} + + +=head2 instantiate_dynamic + + This instantiates any dynamic entries so that they are available + for processing later on. This has to be done before most all other + processing so that when we call $section->bibentry($key), as we + do many times in the code, we don't die because there is a key but + no Entry object. + +=cut + +sub instantiate_dynamic { + my $self = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + + $logger->debug("Creating dynamic entries (sets/related) for section $secnum"); + + # Instantiate any dynamic set entries before we do anything else + foreach my $dset (@{$section->dynamic_set_keys}) { + my @members = $section->get_dynamic_set($dset); + my $be = new Biber::Entry; + $be->set_field('entrytype', 'set'); + $be->set_field('entryset', join(',', @members)); + $be->set_field('dskey', $dset); + $be->set_field('citekey', $dset); + $be->set_field('datatype', 'dynamic'); + $section->bibentries->add_entry($dset, $be); + # Setting dataonly for members is handled by process_sets() + } + + # Instantiate any related entry clones we need + foreach my $citekey ($section->get_citekeys) { + my $be = $section->bibentry($citekey); + if (my $relkeys = $be->get_field('related')) { + $be->del_field('related'); # clear the related field + my @clonekeys; + foreach my $relkey (split /\s*,\s*/, $relkeys) { + my $relentry = $section->bibentry($relkey); + my $clonekey = md5_hex($relkey); + push @clonekeys, $clonekey; + my $relclone = $relentry->clone($clonekey); + # clone doesn't need the related fields + $relclone->del_field('related'); + $relclone->del_field('relatedtype'); + $relclone->del_field('relatedstring'); + $relclone->set_datafield('options', 'dataonly'); + $section->bibentries->add_entry($clonekey, $relclone); + Biber::Config->setblxoption('skiplab', 1, 'PER_ENTRY', $clonekey); + Biber::Config->setblxoption('skiplos', 1, 'PER_ENTRY', $clonekey); + } + # point to clone keys and add to citekeys + $section->add_citekeys(@clonekeys); + $be->set_datafield('related', join(',', @clonekeys)); + } + } + return; +} + + +=head2 process_crossrefs + + $biber->process_crossrefs + + This does several things: + 1. Ensures that all entryset key members will be output in the bbl. + 2. Ensures proper inheritance of data from cross-references. + 3. Ensures that crossrefs/xrefs that are directly cited or cross-referenced + at least mincrossrefs times are included in the bibliography. + +=cut + +sub process_crossrefs { + my $self = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + + $logger->debug("Processing explicit and implicit crossrefs for section $secnum"); + + # Loop over cited keys and count the cross/xrefs + # Can't do this when parsing entries as this would count them + # for potentially uncited children + foreach my $citekey ($section->get_citekeys) { + my $be = $section->bibentry($citekey); + my $refkey; + if ($refkey = $be->get_field('xref') or $refkey = $be->get_field('crossref')) { + $logger->debug("Incrementing cross/xrefkey count for entry '$refkey' via entry '$citekey'"); + Biber::Config->incr_crossrefkey($refkey); + } + } + + # promote indirectly cited inset set members to fully cited entries + foreach my $citekey ($section->get_citekeys) { + my $be = $section->bibentry($citekey); + if ($be->get_field('entrytype') eq 'set') { + my @inset_keys = split /\s*,\s*/, $be->get_field('entryset'); + foreach my $inset_key (@inset_keys) { + $logger->debug(" Adding set member '$inset_key' to the citekeys (section $secnum)"); + $section->add_citekeys($inset_key); + } + # automatically crossref for the first set member using plain set inheritance + $be->set_inherit_from($section->bibentry($inset_keys[0])); + if ($be->get_field('crossref')) { + $self->biber_warn($be, "Field 'crossref' is no longer needed in set entries in Biber - ignoring in entry '$citekey'"); + $be->del_field('crossref'); + } + } + # Do crossrefs inheritance + if (my $crossrefkey = $be->get_field('crossref')) { + my $parent = $section->bibentry($crossrefkey); + $logger->debug(" Entry $citekey inheriting fields from parent $crossrefkey"); + unless ($parent) { + $self->biber_warn($be, "Cannot inherit from crossref key '$crossrefkey' - does it exist?"); + } + else { + $be->inherit_from($parent); + } + } + } + + # We make sure that crossrefs that are directly cited or cross-referenced + # at least $mincrossrefs times are included in the bibliography. + foreach my $k ( @{Biber::Config->get_crossrefkeys} ) { + # If parent has been crossref'ed more than mincrossref times, upgrade it + # to cited crossref status and add it to the citekeys list + if (Biber::Config->get_crossrefkey($k) >= Biber::Config->getoption('mincrossrefs')) { + $logger->debug("cross/xref key '$k' is cross/xref'ed >= mincrossrefs, adding to citekeys"); + $section->add_citekeys($k); + } + } +} + +=head2 validate_structure + + Validate bib structure according to a bib schema + Note that we are validating the internal Biber::Entries + after they have been created from the datasources so this is + datasource neutral, as it should be. It is here to enforce + adherence to what biblatex expects. + +=cut + +sub validate_structure { + my $self = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $struc = Biber::Config->get_structure; + if (Biber::Config->getoption('validate_structure')) { + foreach my $citekey ($section->get_citekeys) { + my $be = $section->bibentry($citekey); + my $et = $be->get_field('entrytype'); + + # default entrytype to MISC type if not a known type + unless ($struc->is_entrytype($et)) { + $self->biber_warn($be, "Entry '$citekey' - invalid entry type '" . $be->get_field('entrytype') . "' - defaulting to 'misc'"); + $be->set_field('entrytype', 'misc'); + $et = 'misc'; # reset this too + } + + # Are all fields valid fields? + # Each field must be: + # * Valid because it's allowed for "ALL" entrytypes OR + # * Valid field for the specific entrytype OR + # * Valid because entrytype allows "ALL" fields + foreach my $ef ($be->datafields) { + unless ($struc->is_field_for_entrytype($et, $ef)) { + $self->biber_warn($be, "Entry '$citekey' - invalid field '$ef' for entrytype '$et'"); + } + } + + # Mandatory constraints + foreach my $warning ($struc->check_mandatory_constraints($be)) { + $self->biber_warn($be, $warning); + } + + # Conditional constraints + foreach my $warning ($struc->check_conditional_constraints($be)) { + $self->biber_warn($be, $warning); + } + + # Data constraints + foreach my $warning ($struc->check_data_constraints($be)) { + $self->biber_warn($be, $warning); + } + + # Date constraints + foreach my $warning ($struc->check_date_components($be)) { + $self->biber_warn($be, $warning); + } + } + } +} + +=head2 process_entries + + Main processing operations, to generate metadata and entry information + This method is automatically called by C<prepare>. + Here we parse names, generate the "namehash" and the strings for + "labelname", "labelyear", "labelalpha", "sortstrings", etc. + +=cut + +sub process_entries { + my $self = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + foreach my $citekey ( $section->get_citekeys ) { + $logger->debug("Postprocessing entry '$citekey' from section $secnum"); + + # process "set" entries: + $self->process_sets($citekey); + + # generate labelname name + $self->process_labelname($citekey); + + # generate labelyear name + $self->process_labelyear($citekey); + + # generate namehash,fullhash + $self->process_hashes($citekey); + + # generate uniqueness information + $self->process_unique($citekey); + + # track labelname/year combinations + $self->process_labelnameyear($citekey); + + # generate labelalpha information + $self->process_labelalpha($citekey); + + # push entry-specific presort fields into the presort state + $self->process_presort($citekey); + + } + + $logger->debug("Finished processing entries in section $secnum"); + + return; +} + +=head2 process_sets + + Postprocess set entries + + Checks for common set errors and enforces 'dataonly' for set members + +=cut + +sub process_sets { + my $self = shift; + my $citekey = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if ($be->get_field('entrytype') eq 'set') { + my @entrysetkeys = split /\s*,\s*/, $be->get_field('entryset'); + + # Enforce Biber parts of virtual "dataonly" for set members + # Also automatically create an "entryset" field for the members + foreach my $member (@entrysetkeys) { + Biber::Config->setblxoption('skiplab', 1, 'PER_ENTRY', $member); + Biber::Config->setblxoption('skiplos', 1, 'PER_ENTRY', $member); + my $me = $section->bibentry($member); + if ($me->get_field('entryset')) { + $self->biber_warn($me, "Field 'entryset' is no longer needed in set member entries in Biber - ignoring in entry '$member'"); + $me->del_field('entryset'); + } + # This ends up setting \inset{} in the bib + $me->set_field('entryset', $citekey); + } + + unless (@entrysetkeys) { + $self->biber_warn($be, "No entryset found for entry $citekey of type 'set'"); + } + } + # check if this non-set entry is in a cited set and if so, we + # have enforced Biber parts of virtual "dataonly" otherwise + # this entry will spuriously generate disambiguation data for itself + # This would only happen if the non-set entry was cited before any set + # in which it occurred of course since otherwise it would have already had + # "dataonly" enforced by the code above + else { + foreach my $pset_key ($section->get_citekeys) { + my $pset_be = $section->bibentry($pset_key); + if ($pset_be->get_field('entrytype') eq 'set') { + my @entrysetkeys = split /\s*,\s*/, $pset_be->get_field('entryset'); + foreach my $member (@entrysetkeys) { + next unless $member eq $citekey; + # Posssible that this has already been set if this set entry member + # was dealt with above but in case we haven't seen the set it's in yet ... + Biber::Config->setblxoption('skiplab', 1, 'PER_ENTRY', $member); + Biber::Config->setblxoption('skiplos', 1, 'PER_ENTRY', $member); + } + } + } + } +} + +=head2 process_labelname + + Generate labelname information. Fields set are: + + * labelnamename - the name of the labelname field to use + * labelnamenamefullhash - the name of the labelname field to use for + fulhash generation. + + We can retreive the actual labelname value later with: + + $entry->get_field($entry->get_field('labelnamename)) + + It's neat this way as we often need to know what the labelname field is + as well as it's actual string value + +=cut + +sub process_labelname { + my $self = shift; + my $citekey = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $lnamespec = Biber::Config->getblxoption('labelnamespec', $be->get_field('entrytype')); + + # First we set the normal labelname name + foreach my $ln ( @{$lnamespec} ) { + my $lnameopt; + if ( $ln =~ /\Ashort(.+)\z/ ) { + $lnameopt = $1; + } else { + $lnameopt = $ln; + } + if ($be->get_field($ln) and + Biber::Config->getblxoption("use$lnameopt", $be->get_field('entrytype'), $citekey ) ) { + $be->set_field('labelnamename', $ln); + last; + } + } + + # Then we loop again to set the labelname name for the fullhash generation code + # This is because fullhash generation ignores SHORT* fields (section 4.2.4.1, BibLaTeX + # manual) + foreach my $ln ( @{$lnamespec} ) { + if ( $ln =~ /\Ashort(.+)\z/ ) { + next; + } + if ($be->get_field($ln) and + Biber::Config->getblxoption("use$ln", $be->get_field('entrytype'), $citekey ) ) { + $be->set_field('labelnamenamefullhash', $ln); + last; + } + } + + # Generate the actual labelname + if ($be->get_field('labelnamename')) { + $be->set_field('labelname', $be->get_field($be->get_field('labelnamename'))); + } + else { + $logger->debug("Could not determine the labelname of entry $citekey"); + } +} + +=head2 process_labelyear + + Generate labelyear + Here, "labelyearname" is the name of the labelyear field + and "labelyear" is the actual copy of the relevant field + +=cut + +sub process_labelyear { + my $self = shift; + my $citekey = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + + if (Biber::Config->getblxoption('labelyear', $be->get_field('entrytype'))) { + my $lyearspec = Biber::Config->getblxoption('labelyearspec', $be->get_field('entrytype')); + + if (Biber::Config->getblxoption('skiplab', $be->get_field('entrytype'), $citekey)) { + return; + } + # make sure we gave the correct data type: + $logger->logdie("Invalid value for option labelyear: $lyearspec\n") + unless ref $lyearspec eq 'ARRAY'; + foreach my $ly ( @{$lyearspec} ) { + if ($be->get_field($ly)) { + $be->set_field('labelyearname', $ly); + last; + } + } + + # Construct labelyear + # Might not have been set due to skiplab/dataonly + if (my $yf = $be->get_field('labelyearname')) { + $be->set_field('labelyear', $be->get_field($yf)); + + # ignore endyear if it's the same as year + my ($ytype) = $yf =~ /\A(.*)year\z/xms; + # endyear can be null + if (is_def_and_notnull($be->get_field($ytype . 'endyear')) + and ($be->get_field($yf) ne $be->get_field($ytype . 'endyear'))) { + $be->set_field('labelyear', + $be->get_field('labelyear') . '\bibdatedash ' . $be->get_field($ytype . 'endyear')); + } + } + else { + $logger->debug("Could not determine the labelyearname of entry $citekey"); + } + } +} + +=head2 process_hashes + + Generate namehash and fullhash + +=cut + +sub process_hashes { + my $self = shift; + my $citekey = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $bee = $be->get_field('entrytype'); + my $namehash = ''; # biblatex namehash field (manual, section 4.2.4.1) + my $fullhash = ''; # biblatex fullhash field (manual, section 4.2.4.1) + my $nameid = ''; + + # namehash is generated from the labelname + if (my $lname = $be->get_field('labelnamename')) { + if (my $ln = $be->get_field($lname)) { + $namehash .= $self->_getnamehash($citekey, $ln); + $nameid .= makenameid($ln); + } + } + # fullhash is generated from the labelname but ignores SHORT* fields and + # maxnames/minnames settings + if (my $lnamefh = $be->get_field('labelnamenamefullhash')) { + if ($be->get_field($lnamefh)) { + $fullhash .= $self->_getfullhash($citekey, $be->get_field($lnamefh)); + } + } + + # After the initial generation of namehash and fullhash, we have to append + # a suffix as they must be unique. It is possible that different entries have + # the same hashes at this stage. For example: + + # AUTHOR = {Fred Grimble and Bill Bullter} = "FGBB" + # AUTHOR = {Frank Garby and Brian Blunkley} = "FGBB" + + my $hashsuffix = 1; + + # First, check to see if we've already seen this exact name before + if (Biber::Config->get_namehashcount($namehash, $nameid)) { + # If we have, our suffix is already known + $hashsuffix = Biber::Config->get_namehashcount($namehash, $nameid); + } + # Otherwise, if the namehash already exists, we'll make a new entry with a new suffix + elsif (Biber::Config->namehashexists($namehash)) { + # Count the suffixes already defined ... + my $count = Biber::Config->get_numofnamehashes($namehash); + # ... add one to the number ... + $hashsuffix = $count + 1; + # ... and define a new suffix for that name + Biber::Config->set_namehashcount($namehash, $nameid, $hashsuffix); + } + # No entry for the namehash at all so make a new one, a new name and suffix + else { + Biber::Config->del_namehash($namehash); + Biber::Config->set_namehashcount($namehash, $nameid, 1); + } + + # Now append the suffices, making the hashes unique + $namehash .= $hashsuffix; + $fullhash .= $hashsuffix; + + # Set the hashes + $be->set_field('namehash', $namehash); + $be->set_field('fullhash', $fullhash); + + # Don't add to disambiguation data if skiplab is set + unless (Biber::Config->getblxoption('skiplab', $bee, $citekey)) { + Biber::Config->incr_seennamehash($fullhash); + } +} + +=head2 process_unique + + Generate uniqueness information. This is used later to generate unique* fields + +=cut + +sub process_unique { + my $self = shift; + my $citekey = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $bee = $be->get_field('entrytype'); + my $namehash = $be->get_field('namehash'); + + # Set uniquename, if required + # Note that we don't determine if a name is unique here - + # we can't, were still processing entries at this point. + # Here we are just recording seen combinations of: + # + # lastnames and what hashes were generated from them (uniquename = 0) + # lastnames+initials and what hashes were generated from them (uniquename = 1) + # + # Naturally, anything which has more than one combination for both of these would + # be uniquename = 2 + # + # See the logic in Internals.pm for generating the actual uniquename count + # from the information collected here + if (Biber::Config->getblxoption('uniquename', $bee)) { + my $lname = $be->get_field('labelnamename'); + my $lastname; + my $namestring; + my $singlename; + + # uniquename only works (currently) with single names + if ($lname) { + $lastname = $be->get_field($lname)->nth_element(1)->get_lastname; + $namestring = $be->get_field($lname)->nth_element(1)->get_nameinitstring; + $singlename = $be->get_field($lname)->count_elements; + } + + # If we need to provide uniquename, labelnamename exists and we are only + # dealing with a single name + if ($lname and $singlename == 1 ) { + # Record a uniqueness information entry for the lastname showing that + # this lastname has been seen in the name with the namehash + Biber::Config->add_uniquenamecount($lastname, $namehash); + + # Record a uniqueness information entry for the lastname+initials showing that + # this lastname_initials has been seen in the name with the namehash + Biber::Config->add_uniquenamecount($namestring, $namehash); + } + else { + $be->set_field('ignoreuniquename', 1); + } + } +} + +=head2 process_labelnameyear + + Track author/year combination + +=cut + +sub process_labelnameyear { + my $self = shift; + my $citekey = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + # This is all used to generate extrayear and the rules for this are: + # * Generate labelname/year combination for tracking extrayear + # * If there is no labelname to use, use empty string + # * If there is no labelyear to use, use empty string + # * Don't increment the seen_extra* count if either name or year string is empty + # (see code in incr_seen_extra* methods). + # * Don't increment if skiplab is set + + my $name_string; + # For tracking name/year combinations, use shorthand only if it exists and we + # are using labelyear + if ( Biber::Config->getblxoption('labelalpha', $be->get_field('entrytype')) and + $be->get_field('shorthand')) { + $name_string = $be->get_field('shorthand'); + } + elsif (my $lnn = $be->get_field('labelnamename')) { + $name_string = $self->_namestring($citekey, $lnn); + } + else { + $name_string = ''; + } + + # extrayear takes into account the labelyear which can be a range + my $year_string_extrayear; + if (my $ly = $be->get_field('labelyear')) { + $year_string_extrayear = $ly; + } + elsif (my $y = $be->get_field('year')) { + $year_string_extrayear = $y; + } + else { + $year_string_extrayear = ''; + } + + # extraalpha takes into account the "year of publication" and not ranges as it + # only has the last two digits of the year and so can't disambiguate using ranges + # so, we have to track it separately to extrayear + my $year_string_extraalpha; + if (my $y = $be->get_field('year')) { + $year_string_extraalpha = $y; + } + else { + $year_string_extraalpha = ''; + } + + # Don't create disambiguation data for skiplab entries + unless (Biber::Config->getblxoption('skiplab', + $be->get_field('entrytype'), + $be->get_field('dskey'))) { + my $nameyear_string_extrayear = "$name_string,$year_string_extrayear"; + $logger->debug("Setting 'nameyear_extrayear' to '$nameyear_string_extrayear' for entry '$citekey'"); + $be->set_field('nameyear_extrayear', $nameyear_string_extrayear); + Biber::Config->incr_seen_nameyear_extrayear($name_string, $year_string_extrayear); + my $nameyear_string_extraalpha = "$name_string,$year_string_extraalpha"; + $logger->debug("Setting 'nameyear_extraalpha' to '$nameyear_string_extraalpha' for entry '$citekey'"); + $be->set_field('nameyear_extraalpha', $nameyear_string_extraalpha); + Biber::Config->incr_seen_nameyear_extraalpha($name_string, $year_string_extraalpha); + } +} + +=head2 process_labelalpha + + Generate the labelalpha and also the variant for sorting + +=cut + +sub process_labelalpha { + my $self = shift; + my $citekey = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $bee = $be->get_field('entrytype'); + # Don't add a label if skiplab is set for entry + if (Biber::Config->getblxoption('skiplab', $bee, $citekey)) { + return; + } + if ( Biber::Config->getblxoption('labelalpha', $be->get_field('entrytype')) ) { + my $label; + my $sortlabel; + + if ( $be->get_field('shorthand') ) { + $sortlabel = $label = $be->get_field('shorthand'); + } + else { + if ( $be->get_field('label') ) { + $sortlabel = $label = $be->get_field('label'); + } + elsif ( $be->get_field('labelnamename') and $be->get_field($be->get_field('labelnamename'))) { + ( $label, $sortlabel ) = + @{ $self->_getlabel( $citekey, $be->get_field('labelnamename') ) }; + } + else { + $sortlabel = $label = ''; + } + + # biblatex manual says "publication year" + if ( my $year = $be->get_field('year') ) { + my $yr; + # Make "in press" years look nice in alpha styles + if ($year =~ m/\A\s*in\s*press\s*\z/ixms) { + $yr = 'ip'; + } + # Normal year + else { + $yr = substr $year, 2, 2; + } + $label .= $yr; + $sortlabel .= $yr; + } + } + $be->set_field('labelalpha', $label); + $be->set_field('sortlabelalpha', $sortlabel); + } +} + + +=head2 process_presort + + Put presort fields for an entry into the main Biber bltx state + so that it's all available in the same place since this can be + set per-type and globally too. + +=cut + +sub process_presort { + my $self = shift; + my $citekey = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + # We are treating presort as an option as it can be set per-type and globally too + if (my $ps = $be->get_field('presort')) { + Biber::Config->setblxoption('presort', $ps, 'PER_ENTRY', $citekey); + } +} + +=head2 process_lists + + Sort and filter lists for a section + +=cut + +sub process_lists { + my $self = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + foreach my $list (@{$section->get_lists}) { + my $llabel = $list->get_label; + + # Last-ditch fallback in case we still don't have a sorting spec + # probably due to being called via biber with -a and -d flags + $list->set_sortscheme(Biber::Config->getblxoption('sorting')) unless $list->get_sortscheme; + + $list->set_keys([ $section->get_citekeys ]); + $logger->debug("Populated list '$llabel' in section $secnum with keys: " . join(', ', $list->get_keys)); + + # Now we check the sorting cache to see if we already have results + # for this scheme since sorting is computationally expensive. + # We know the keys are the same as we just set them + # to a copy of the section citekeys above. If the scheme is the same + # as a previous sort then the results have to also be the same so inherit + # the results which are normally set by sorting: + # + # * sorted keys + # * sortinit data + # * extraalpha data + # * extrayear data + + my $cache_flag = 0; + $logger->debug("Checking sorting cache for list '$llabel'"); + foreach my $cacheitem (@{$section->get_sort_cache}) { + if (Compare($list->get_sortscheme, $cacheitem->[0])) { + $logger->debug("Found sorting cache entry for '$llabel'"); + $list->set_keys($cacheitem->[1]); + $list->set_sortinitdata($cacheitem->[2]); + $list->set_extraalphadata($cacheitem->[3]); + $list->set_extrayeardata($cacheitem->[4]); + $cache_flag = 1; + last; + } + } + + unless ($cache_flag) { + $logger->debug("No sorting cache entry for '$llabel'"); + # Sorting + $self->generate_sortinfo($list); # generate the sort information + $self->sort_list($list); # sort the list + $self->generate_extra($list); # generate the extra* fields + + # Cache the results + $logger->debug("Adding sorting cache entry for '$llabel'"); + $section->add_sort_cache($list->get_listdata); + } + + # Filtering + # This is not really used - filtering is more efficient to do on the biblatex + # side since we are filtering afer sorting anyway. It is used to provide + # a field=shorthand filter for type=shorthand lists though. + if (my $filters = $list->get_filters) { + my $flist = []; +KEYLOOP: foreach my $k ($list->get_keys) { + # Filter out skiplos entries as a special case in 'shorthand' type lists + if ($list->get_type eq 'shorthand') { + next if Biber::Config->getblxoption('skiplos', $section->bibentry($k), $k); + } + + $logger->debug("Checking key '$k' in list '$llabel' against list filters"); + my $be = $section->bibentry($k); + foreach my $t (keys %$filters) { + my $fs = $filters->{$t}; + # Filter disjunction is ok if any of the checks are ok, hence the grep() + if ($t eq 'orfilter') { + next KEYLOOP unless grep {check_list_filter($k, $_, $fs->{$_}, $be)} keys %$fs; + } + else { + next KEYLOOP unless check_list_filter($k, $t, $fs, $be); + } + } + push @$flist, $k; + } + $logger->debug("Keys after filtering list '$llabel' in section $secnum: " . join(', ', @$flist)); + $list->set_keys($flist); # Now save the sorted list in the list object + } + } + return; +} + + +=head2 check_list_filter + + Run an entry through a list filter. Returns a boolean. + +=cut + +sub check_list_filter { + my ($k, $t, $fs, $be) = @_; + $logger->debug(" Checking key '$k' against filter '$t=" . join(',', @$fs) . "'"); + if ($t eq 'type') { + return 0 unless grep {$be->get_field('entrytype') eq $_} @$fs; + } + elsif ($t eq 'nottype') { + return 0 if grep {$be->get_field('entrytype') eq $_} @$fs; + } + elsif ($t eq 'subtype') { + return 0 unless grep {$be->field_exists('entrysubtype') and + $be->get_field('entrysubtype') eq $_} @$fs; + } + elsif ($t eq 'notsubtype') { + return 0 if grep {$be->field_exists('entrysubtype') and + $be->get_field('entrysubtype') eq $_} @$fs; + } + elsif ($t eq 'keyword') { + return 0 unless grep {$be->has_keyword($_)} @$fs; + } + elsif ($t eq 'notkeyword') { + return 0 if grep {$be->has_keyword($_)} @$fs; + } + elsif ($t eq 'field') { + return 0 unless grep {$be->field_exists($_)} @$fs; + } + elsif ($t eq 'notfield') { + return 0 if grep {$be->field_exists($_)} @$fs; + } + return 1; +} + + +=head2 generate_sortinfo + + Generate information for sorting + +=cut + +sub generate_sortinfo { + my $self = shift; + my $list = shift; + + my $sortscheme = $list->get_sortscheme; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + foreach my $key ($list->get_keys) { + $self->_generatesortinfo($key, $list, $sortscheme); + } + return; +} + +=head2 generate_extra + + Generate: + + * extraalpha + * extrayear + +=cut + +sub generate_extra { + my $self = shift; + my $list = shift; + my $sortscheme = $list->get_sortscheme; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + Biber::Config->reset_seen_extra(); # Since this sub is per-list, have to reset the + # extra* counters per list + # This loop critically depends on the order of the citekeys which + # is why we have to do a first sorting pass before this + foreach my $key ($list->get_keys) { + my $be = $section->bibentry($key); + my $bee = $be->get_field('entrytype'); + # Only generate extrayear and extraalpha if skiplab is not set. + # Don't forget that skiplab is implied for set members + unless (Biber::Config->getblxoption('skiplab', $bee, $key)) { + if (Biber::Config->getblxoption('labelyear', $be->get_field('entrytype'))) { + my $nameyear_extrayear = $be->get_field('nameyear_extrayear'); + if (Biber::Config->get_seen_nameyear_extrayear($nameyear_extrayear) > 1) { + $list->set_extrayeardata($key, Biber::Config->incr_seen_extrayear($nameyear_extrayear)); + } + } + if (Biber::Config->getblxoption('labelalpha', $be->get_field('entrytype'))) { + my $nameyear_extraalpha = $be->get_field('nameyear_extraalpha'); + if (Biber::Config->get_seen_nameyear_extraalpha($nameyear_extraalpha) > 1) { + $list->set_extraalphadata($key, Biber::Config->incr_seen_extraalpha($nameyear_extraalpha)); + } + } + } + } + return; +} + +=head2 sort_list + + Sort a list using information in entries according to a certain sorting scheme. + Use a flag to skip info messages on first pass + +=cut + +sub sort_list { + my $self = shift; + my $list = shift; + my $sortscheme = $list->get_sortscheme; + my @keys = $list->get_keys; + my $llabel = $list->get_label; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + + if (Biber::Config->getoption('sortcase')) { + $logger->debug("Sorting is by default case-SENSITIVE"); + } + else { + $logger->debug("Sorting is by default case-INSENSITIVE"); + } + $logger->debug("Keys before sort:\n"); + foreach my $k (@keys) { + $logger->debug("$k => " . $list->get_sortdata($k)->[0] . "\n"); + } + + $logger->trace("Sorting with scheme\n-------------------\n" . Data::Dump::pp($sortscheme) . "\n-------------------\n"); + + # Set up locale. Order of priority is: + # 1. locale value passed to Unicode::Collate::Locale->new() (Unicode::Collate sorts only) + # 2. Biber sortlocale option + # 3. LC_COLLATE env variable + # 4. LANG env variable + # 5. LC_ALL env variable + # 6. Built-in defaults + + my $thislocale = Biber::Config->getoption('sortlocale'); + + if ( Biber::Config->getoption('fastsort') ) { + use locale; + $logger->info("Sorting list '$llabel' keys"); + $logger->debug("Sorting with fastsort (locale $thislocale)"); + unless (setlocale(LC_ALL, $thislocale)) { + $logger->warn("Unavailable locale $thislocale"); + $self->{warnings}++; + } + + # Construct a multi-field Schwartzian Transform with the right number of + # extractions into a string representing an array ref as we musn't eval this yet + my $num_sorts = 0; + my $data_extractor = '['; + my $sorter; + my $sort_extractor; + # Global lowercase setting + my $glc = Biber::Config->getoption('sortcase') ? '' : 'lc '; + + foreach my $sortset (@{$sortscheme}) { + $data_extractor .= '$list->get_sortdata($_)->[1][' . $num_sorts . '],'; + $sorter .= ' || ' if $num_sorts; # don't add separator before first field + my $lc = $glc; # Casing defaults to global default ... + my $sc = $sortset->[0]{sortcase}; + # but is overriden by field setting if it exists + if (defined($sc) and $sc != Biber::Config->getoption('sortcase')) { + unless ($sc) { + $lc = 'lc '; + } + else { + $lc = ''; + } + } + + my $sd = $sortset->[0]{sort_direction}; + if (defined($sd) and $sd eq 'descending') { + # descending field + $sorter .= $lc + . '$b->[' + . $num_sorts + . '] cmp ' + . $lc + . '$a->[' + . $num_sorts + . ']'; + } + else { + # ascending field + $sorter .= $lc + . '$a->[' + . $num_sorts + . '] cmp ' + . $lc + . '$b->[' + . $num_sorts + . ']'; + } + $num_sorts++; + } + $data_extractor .= '$_]'; + # Handily, $num_sorts is now one larger than the number of fields which is the + # correct index for the actual data in the sort array + $sort_extractor = '$_->[' . $num_sorts . ']'; + $logger->trace("Sorting structure is: $sorter"); + + # Schwartzian transform multi-field sort + @keys = map { eval $sort_extractor } + sort { eval $sorter } + map { eval $data_extractor } @keys; + } + else { + require Unicode::Collate::Locale; + my $opts = Biber::Config->getoption('collate_options'); + my $collopts; + unless (ref($opts) eq "HASH") { # opts for this can come in a string from cmd line + $collopts = eval "{ $opts }" or $logger->logcarp("Incorrect collate_options: $@"); + } + else { # options from config file as hash ref + $collopts = $opts; + } + + # UCA level 2 if case insensitive sorting is requested + unless (Biber::Config->getoption('sortcase')) { + $collopts->{level} = 2; + } + + # Add upper_before_lower option + $collopts->{upper_before_lower} = Biber::Config->getoption('sortupper'); + + # Add tailoring locale for Unicode::Collate + if ($thislocale and not $collopts->{locale}) { + $collopts->{locale} = $thislocale; + if ($collopts->{table}) { + my $t = delete $collopts->{table}; + $logger->info("Ignoring collation table '$t' as locale is set ($thislocale)"); + } + } + + # Remove locale from options as we need this to make the object + my $coll_locale = delete $collopts->{locale}; + # Now create the collator object + my $Collator = Unicode::Collate::Locale->new( locale => $coll_locale ) + or $logger->logcarp("Problem with Unicode::Collate options: $@"); + + # Tailor the collation object and report differences from defaults for locale + # Have to do this in ->change method a ->new can croak with conflicting tailoring + # for locales which enforce certain tailorings + my %coll_changed = $Collator->change( %{$collopts} ); + while (my ($k, $v) = each %coll_changed) { + # If we changing something that has no override tailoring in the locale, it + # is undef in this hash and we don't care about such things + next unless defined($coll_changed{$k}); + if ($coll_changed{$k} ne $collopts->{$k}) { + $logger->warn("Overriding locale '$coll_locale' default tailoring '$k = $v' with '$k = " . $collopts->{$k} . "'"); + } + } + + my $UCAversion = $Collator->version(); + $logger->info("Sorting list '$llabel' keys"); + $logger->debug("Sorting with Unicode::Collate (" . stringify_hash($collopts) . ", UCA version: $UCAversion)"); + + # Log if U::C::L currently has no tailoring for used locale + if ($Collator->getlocale eq 'default') { + $logger->info("No sort tailoring available for locale '$thislocale'"); + } + + # Construct a multi-field Schwartzian Transform with the right number of + # extractions into a string representing an array ref as we musn't eval this yet + my $num_sorts = 0; + my $data_extractor = '['; + my $sorter; + my $sort_extractor; + foreach my $sortset (@{$sortscheme}) { + my $fc = ''; + my @fc; + # If the case or upper option on a field is not the global default + # set it locally on the $Collator by constructing a change() method call + my $sc = $sortset->[0]{sortcase}; + if (defined($sc) and $sc != Biber::Config->getoption('sortcase')) { + push @fc, $sc ? 'level => 4' : 'level => 2'; + } + my $su = $sortset->[0]{sortupper}; + if (defined($su) and $su != Biber::Config->getoption('sortupper')) { + push @fc, $su ? 'upper_before_lower => 1' : 'upper_before_lower => 0'; + } + if (@fc) { + # This field has custom collation options + $fc = '->change(' . join(',', @fc) . ')'; + } + else { + # Reset collation options to global defaults if there are no field options + # We have to do this as ->change modifies the Collation object + $fc = '->change(level => ' + . $collopts->{level} + . ' ,upper_before_lower => ' + . $collopts->{upper_before_lower} + . ')'; + } + + $data_extractor .= '$list->get_sortdata($_)->[1][' . $num_sorts . '],'; + $sorter .= ' || ' if $num_sorts; # don't add separator before first field + + my $sd = $sortset->[0]{sort_direction}; + if (defined($sd) and $sd eq 'descending') { + # descending field + $sorter .= '$Collator' + . $fc + . '->cmp($b->[' + . $num_sorts + . '],$a->[' + . $num_sorts + . '])'; + } + else { + # ascending field + $sorter .= '$Collator' + . $fc + . '->cmp($a->[' + . $num_sorts + . '],$b->[' + . $num_sorts + . '])'; + } + $num_sorts++; + } + $data_extractor .= '$_]'; + # Handily, $num_sorts is now one larger than the number of fields which is the + # correct index for the actual data in the sort array + $sort_extractor = '$_->[' . $num_sorts . ']'; + $logger->trace("Sorting structure is: $sorter"); + + # Schwartzian transform multi-field sort + @keys = map { eval $sort_extractor } + sort { eval $sorter } + map { eval $data_extractor } @keys; + } + + $logger->debug("Keys after sort:\n"); + foreach my $k (@keys) { + $logger->debug("$k => " . $list->get_sortdata($k)->[0] . "\n"); + } + + $list->set_keys([ @keys ]); + + return; +} + +=head2 prepare + + Do the main work. + Process and sort all entries before writing the bbl output. + +=cut + +sub prepare { + my $self = shift; + $self->process_setup; # Place to put global pre-processing things + foreach my $section (@{$self->sections->get_sections}) { + # shortcut - skip sections that don't have any keys + next unless $section->get_citekeys or $section->is_allkeys; + my $secnum = $section->number; + + $logger->info("Processing bib section $secnum"); + + $section->reset_sort_cache; # Reset the the sorting cache + Biber::Config->_init; # (re)initialise Config object + $self->set_current_section($secnum); # Set the section number we are working on + $self->fetch_data; # Fetch cited key and dependent data from sources + $self->instantiate_dynamic; # Instantiate any dynamic entries (sets, related) + $self->process_crossrefs; # Process crossrefs/sets + $self->validate_structure; # Check bib structure + $self->process_entries; # Main entry processing loop + $self->process_lists; # process the output lists (sorting and filtering) + $self->create_output_section; # Generate and push the section output into the + # output object ready for writing + } + $self->create_output_misc; # Generate and push the final misc bits of output + # into the output object ready for writing + return; +} + +=head2 fetch_data + + Fetch citekey and dependents data from section datasources + Expects to find datasource packages named: + + Biber::Input::<type>::<datatype> + + and one defined subroutine called: + + Biber::Input::<type>::<datatype>::extract_entries + + which takes args: + + 1: Biber object + 2: Datasource name + 3: Reference to an array of cite keys to look for + + and returns an array of the cite keys it didn't find in the datasource + +=cut + +sub fetch_data { + my $self = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + # Only looking for static keys, dynamic key entries are not in any datasource ... + my @citekeys = $section->get_static_citekeys; + no strict 'refs'; # symbolic references below ... + + # Clear all T::B macro definitions between sections + # T::B never clears these + $logger->debug('Clearing Text::BibTeX macros definitions'); + Text::BibTeX::delete_all_macros(); + + # (Re-)define the old BibTeX month macros to what biblatex wants unless user stops this + unless (Biber::Config->getoption('nostdmacros')) { + my $mi = 1; + foreach my $mon ('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec') { + Text::BibTeX::add_macro_text($mon, $mi++); + } + } + + # First we look for the directly cited keys in each datasource + my @remaining_keys = @citekeys; + $logger->debug('Looking for directly cited keys: ' . join(', ', @remaining_keys)); + foreach my $datasource (@{$section->get_datasources}) { + # shortcut if we have found all the keys now + last unless (@remaining_keys or $section->is_allkeys); + my $type = $datasource->{type}; + my $name = $datasource->{name}; + my $datatype = $datasource->{datatype}; + my $package = 'Biber::Input::' . $type . '::' . $datatype; + eval "require $package" or + $logger->logdie("Error loading data source package '$package': $@"); + $logger->info("Processing $datatype format $type '$name' for section $secnum"); + @remaining_keys = &{"${package}::extract_entries"}($self, $name, \@remaining_keys); + } + + # error reporting + $logger->debug("Directly cited keys not found for section '$secnum': " . join(',', @remaining_keys)); + foreach my $citekey (@remaining_keys) { + $logger->warn("I didn't find a database entry for '$citekey' (section $secnum)"); + $self->{warnings}++; + $section->del_citekey($citekey); + $section->add_undef_citekey($citekey); + } + + $logger->debug('Building dependents for keys: ' . join(',', $section->get_citekeys)); + # dependent key list generation + my @dependent_keys = (); + my $dep_map = {}; # a map of dependent keys to entry keys in case we need to delete + foreach my $citekey ($section->get_citekeys) { + # Dynamic sets don't exist yet but their members do + if (my @dmems = $section->get_dynamic_set($citekey)) { + # skip looking for dependent if it's already been directly cited + foreach my $dm (@dmems) { + unless ($section->bibentry($dm)) { + push @dependent_keys, $dm; + $dep_map->{$dm} = $citekey; + } + } + $logger->debug("Dynamic set entry '$citekey' has members: " . join(', ', @dmems)); + } + else { + # This must exist for all but dynamic sets + my $be = $section->bibentry($citekey); + # crossrefs/xrefs + my $refkey; + if ($refkey = $be->get_field('xref') or + $refkey = $be->get_field('crossref')) { + # skip looking for dependent if it's already been directly cited + push @dependent_keys, $refkey unless $section->bibentry($refkey); + $logger->debug("Entry '$citekey' has cross/xref '$refkey'"); + $dep_map->{$refkey} = $citekey; + } + # static sets + if ($be->get_field('entrytype') eq 'set') { + my @smems = split /\s*,\s*/, $be->get_field('entryset'); + # skip looking for dependent if it's already been directly cited + foreach my $sm (@smems) { + unless ($section->bibentry($sm)) { + push @dependent_keys, $sm; + $dep_map->{$sm} = $citekey; + } + } + $logger->debug("Static set entry '$citekey' has members: " . join(', ', @smems)); + } + # Related entries + if (my $relkeys = $be->get_field('related')) { + my @rmems = split /\s*,\s*/, $relkeys; + # skip looking for dependent if it's already been directly cited + foreach my $rm (@rmems) { + unless ($section->bibentry($rm)) { + push @dependent_keys, $rm; + $dep_map->{$rm} = $citekey; + } + } + $logger->debug("Entry '$citekey' has related entries: " . join(', ', @rmems)); + } + } + } + if (@dependent_keys) { + # Now look for the dependents of the directly cited keys + @remaining_keys = @dependent_keys; + $logger->debug('Looking for dependent keys: ' . join(', ', @remaining_keys)); + + # No need to go back to the datasource if allkeys, just see if the keys + # are in section + if ($section->is_allkeys) { + my @missing; + foreach my $dk (@dependent_keys) { + push @missing, $dk unless first {$_ eq $dk} $section->get_citekeys; + } + @remaining_keys = @missing; + } + else { + foreach my $datasource (@{$section->get_datasources}) { + # shortcut if we have found all the keys now + last unless (@remaining_keys or $section->is_allkeys); + my $type = $datasource->{type}; + my $name = $datasource->{name}; + my $datatype = $datasource->{datatype}; + my $package = 'Biber::Input::' . $type . '::' . $datatype; + eval "require $package" or + $logger->logdie("Error loading data source package '$package': $@"); + @remaining_keys = &{"${package}::extract_entries"}($self, $name, \@remaining_keys); + } + } + + # error reporting + $logger->debug("Dependent keys not found for section '$secnum': " . join(',', @remaining_keys)); + foreach my $citekey (@remaining_keys) { + $logger->debug("Removing missing dependent key '$citekey' from entries"); + $self->remove_undef_dependent($dep_map, $citekey); + } + } + + $logger->debug("Citekeys for section '$secnum' after fetching data: " . join(', ', $section->get_citekeys)); + + # Reset any cache of bibtex data + $Biber::Input::file::bibtex::cache->{data} = undef; + return; +} + +=head2 remove_undef_dependent + + Remove undefined dependent keys from an entries using a map of + depedent keys to entries + +=cut + +sub remove_undef_dependent { + my $self = shift; + my $dep_map = shift; + my $missing_key = shift; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $entry_key = $dep_map->{$missing_key}; + + # remove from any dynamic keys + if (my @dmems = $section->get_dynamic_set($entry_key)) { + $section->set_dynamic_set($entry_key, grep {$_ ne $missing_key} @dmems); + $logger->warn("I didn't find a database entry for dynamic set member '$missing_key' - ignoring (section $secnum)"); + $self->{warnings}++; + } + else { + my $be = $section->bibentry($entry_key); + # remove any xrefs + if ($be->get_field('xref') and ($be->get_field('xref') eq $missing_key)) { + $be->del_field('xref'); + $logger->warn("I didn't find a database entry for xref '$missing_key' in entry '$entry_key' - ignoring (section $secnum)"); + $self->{warnings}++; + } + + # remove any crossrefs + if ($be->get_field('crossref') and ($be->get_field('crossref') eq $missing_key)) { + $be->del_field('crossref'); + $logger->warn("I didn't find a database entry for crossref '$missing_key' in entry '$entry_key' - ignoring (section $secnum)"); + $self->{warnings}++; + } + + # remove static sets + if ($be->get_field('entrytype') eq 'set') { + my @smems = split /\s*,\s*/, $be->get_field('entryset'); + $be->set_datafield('entryset', join(',', grep {$_ ne $missing_key} @smems)); + $logger->warn("I didn't find a database entry for static set member '$missing_key' in entry '$entry_key' - ignoring (section $secnum)"); + $self->{warnings}++; + } + + # remove related entries + if (my $relkeys = $be->get_field('related')) { + my @rmems = split /\s*,\s*/, $relkeys; + $be->set_datafield('related', join(',', grep {$_ ne $missing_key} @rmems)); + # If no more related entries, remove the other related fields + unless ($be->get_field('related')) { + $be->del_field('relatedtype'); + $be->del_field('relatedstring'); + } + $logger->warn("I didn't find a database entry for related entry '$missing_key' in entry '$entry_key' - ignoring (section $secnum)"); + $self->{warnings}++; + } + } + return; +} + +=head2 create_output_section + + Create the output from the sections data and push it into the + output object. You can subclass Biber and + override this method to output things other than .bbl + +=cut + +sub create_output_section { + my $self = shift; + my $output_obj = $self->get_output_obj; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + + # We rely on the order of this array for the order of the .bbl + my @citekeys = $section->get_citekeys; + foreach my $k (@citekeys) { + # Regular entry + my $be = $section->bibentry($k) or $logger->logdie("Cannot find entry with key '$k' to output"); + $output_obj->set_output_entry($be, $section, Biber::Config->get_structure); + } + + # Make sure the output object knows about the output section + $output_obj->set_output_section($secnum, $section); + + # undef citekeys are global + my @undef_citekeys = $section->get_undef_citekeys; + # Missing citekeys + foreach my $k (@undef_citekeys) { + $output_obj->set_output_undefkey($k, $section); + } + + return; +} + +=head2 create_output_misc + + Create the output for misc bits and pieces like preamble and closing + macro call and add to output object. You can subclass Biber and + override this method to output things other than .bbl + +=cut + +sub create_output_misc { + my $self = shift; + my $output_obj = $self->get_output_obj; + + if (my $pa = $self->{preamble}) { + $pa = join("%\n", @$pa); + # Decode UTF-8 -> LaTeX macros if asked to + if (Biber::Config->getoption('bblsafechars')) { + require Biber::LaTeX::Recode; + $pa = Biber::LaTeX::Recode::latex_encode($pa, + scheme => Biber::Config->getoption('bblsafecharsset')); + } + $output_obj->add_output_head("\\preamble{%\n$pa%\n}\n\n"); + } + + $output_obj->add_output_tail("\\endinput\n\n"); + return; +} + +=head2 _parse_sort + + Convenience sub to parse a .bcf sorting section and return nice + sorting object + +=cut + +sub _parse_sort { + my $root_obj = shift; + my $sorting; + + foreach my $sort (sort {$a->{order} <=> $b->{order}} @{$root_obj->{sort}}) { + my $sortingitems; + + # Generate sorting pass structures + foreach my $sortitem (sort {$a->{order} <=> $b->{order}} @{$sort->{sortitem}}) { + my $sortitemattributes = {}; + if (defined($sortitem->{substring_side})) { # Found sorting substring side attribute + $sortitemattributes->{substring_side} = $sortitem->{substring_side}; + } + if (defined($sortitem->{substring_width})) { # Found sorting substring length attribute + $sortitemattributes->{substring_width} = $sortitem->{substring_width}; + } + if (defined($sortitem->{pad_width})) { # Found sorting pad length attribute + $sortitemattributes->{pad_width} = $sortitem->{pad_width}; + } + if (defined($sortitem->{pad_char})) { # Found sorting pad char attribute + $sortitemattributes->{pad_char} = $sortitem->{pad_char}; + } + if (defined($sortitem->{pad_side})) { # Found sorting pad side attribute + $sortitemattributes->{pad_side} = $sortitem->{pad_side}; + } + push @{$sortingitems}, {$sortitem->{content} => $sortitemattributes}; + } + + # Only push a sortitem if defined. If the item has a conditional "pass" + # attribute, it may be ommitted in which case we don't want an empty array ref + # pushing + # Also, we only push the sort attributes if there are any sortitems otherwise + # we end up with a blank sort + my $sopts; + $sopts->{final} = $sort->{final} if defined($sort->{final}); + $sopts->{sort_direction} = $sort->{sort_direction} if defined($sort->{sort_direction}); + $sopts->{sortcase} = $sort->{sortcase} if defined($sort->{sortcase}); + $sopts->{sortupper} = $sort->{sortupper} if defined($sort->{sortupper}); + if (defined($sortingitems)) { + unshift @{$sortingitems}, $sopts; + push @{$sorting}, $sortingitems; + } + } + return $sorting; +} + +=head2 _filedump and _stringdump + + Dump the biber object with Data::Dump for debugging + +=cut + +sub _filedump { + my ($self, $file) = @_; + my $fh = IO::File->new($file, '>') or croak "Can't open file $file for writing"; + print $fh Data::Dump::pp($self); + close $fh; + return +} + +sub _stringdump { + my $self = shift ; + return Data::Dump::pp($self); +} + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Config.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Config.pm new file mode 100644 index 00000000000..297e1f68787 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Config.pm @@ -0,0 +1,981 @@ +package Biber::Config; +#use feature 'unicode_strings'; +use Biber::Constants; +use IPC::Cmd qw( can_run run ); +use Cwd qw( abs_path ); +use Config::General qw( ParseConfig ); +use Data::Dump; +use Carp; +use List::AllUtils qw(first); +use Log::Log4perl qw( :no_extra_logdie_message ); +my $logger = Log::Log4perl::get_logger('main'); + +=encoding utf-8 + + +=head1 NAME + +Biber::Config - Configuration items which need to be saved across the + lifetime of a Biber object + + This class contains a static object and static methods to access + configuration and state data. There are several classes of data in here + which have separate accessors: + + * Biber options + * Biblatex options + * State information used by Biber as it processes entries + * displaymode date + +=cut + + +# Static (class) data +our $CONFIG; +$CONFIG->{state}{crossrefkeys} = {}; +$CONFIG->{state}{seennamehash} = {}; +$CONFIG->{state}{keycase} = {}; + +# namehashcount holds a hash of namehashes and +# occurences of unique names that generate the hash. For example: +# {AA => { Adams_A => 1, Allport_A => 2 }} +$CONFIG->{state}{namehashcount} = {}; + +# uniquenamecount holds a hash of lastnames and lastname/initials which point to a list +# of name(hashes) which contain them +$CONFIG->{state}{uniquenamecount} = {}; +# Counter for tracking name/year combinations for extrayear +$CONFIG->{state}{seen_nameyear_extrayear} = {}; +# Counter for the actual extrayear value +$CONFIG->{state}{seen_extrayear} = {}; +# Counter for tracking name/year combinations for extraalpha +$CONFIG->{state}{seen_nameyear_extraalpha} = {}; +# Counter for the actual extraalpha value +$CONFIG->{state}{seen_extraalpha} = {}; +$CONFIG->{state}{seenkeys} = {}; + +# Location of the control file +$CONFIG->{state}{control_file_location} = ''; + +# Data files per section being used by biber +$CONFIG->{state}{datafiles} = []; + +=head2 _init + + Reset internal hashes to defaults. This is needed for tests when + prepare() is used more than once + +=cut + +sub _init { + $CONFIG->{options}{biblatex}{PER_ENTRY} = {}; + $CONFIG->{state}{control_file_location} = ''; + $CONFIG->{state}{seennamehash} = {}; + $CONFIG->{state}{crossrefkeys} = {}; + $CONFIG->{state}{namehashcount} = {}; + $CONFIG->{state}{uniquenamecount} = {}; + $CONFIG->{state}{seen_nameyear_extrayear} = {}; + $CONFIG->{state}{seen_extrayear} = {}; + $CONFIG->{state}{seen_nameyear_extraalpha} = {}; + $CONFIG->{state}{seen_extraalpha} = {}; + $CONFIG->{state}{seenkeys} = {}; + $CONFIG->{state}{keycase} = {}; + $CONFIG->{state}{datafiles} = []; + + return; +} + +=head2 _initopts + + Initialise default options, optionally with config file as argument + +=cut + +sub _initopts { + shift; # class method so don't care about class name + my $conffile = shift; + my $noconf = shift; + my %LOCALCONF = (); + + # For testing, need to be able to force ignore of conf file in case user + # already has one which interferes with test settings. + unless ($noconf) { + # if a config file was given as cmd-line arg, it overrides all other + # config file locations + unless ( defined $conffile and -f $conffile ) { + $conffile = config_file(); + } + + if (defined $conffile) { + %LOCALCONF = ParseConfig(-LowerCaseNames => 1, + -MergeDuplicateBlocks => 1, + -AllowMultiOptions => 1, + -ConfigFile => $conffile, + -UTF8 => 1) or + $logger->logcarp("Failure to read config file " . $conffile . "\n $@"); + } + } + + # Config file overrides defaults for biber + my %BIBER_CONFIG = (%CONFIG_DEFAULT_BIBER, %LOCALCONF); + + # Set options internally from config for biber options + foreach (keys %BIBER_CONFIG) { + Biber::Config->setoption($_, $BIBER_CONFIG{$_}); + } + + # Set options internally from config for biblatex options + foreach (keys %CONFIG_DEFAULT_BIBLATEX) { + Biber::Config->setblxoption($_, $CONFIG_DEFAULT_BIBLATEX{$_}); + } + + return; +} + +=head2 config_file + +Returns the full path of the B<Biber> configuration file. +If returns the first file found among: + +=over 4 + +=item * C<biber.conf> in the current directory + +=item * C<$HOME/.biber.conf> + +=item * C<$ENV{XDG_CONFIG_HOME}/biber/biber.conf> + +=item * C<$HOME/Library/biber/biber.conf> (Mac OSX only) + +=item * C<$ENV{APPDATA}/biber.conf> (Windows only) + +=item * the output of C<kpsewhich biber.conf> (if available on the system). + +=back + +If no file is found, it returns C<undef>. + +=cut + +sub config_file { + my $biberconf; + if ( -f $BIBER_CONF_NAME ) { + $biberconf = abs_path($BIBER_CONF_NAME); + } elsif ( -f File::Spec->catfile($ENV{HOME}, ".$BIBER_CONF_NAME" ) ) { + $biberconf = File::Spec->catfile($ENV{HOME}, ".$BIBER_CONF_NAME" ); + } elsif ( defined $ENV{XDG_CONFIG_HOME} and + -f File::Spec->catfile($ENV{XDG_CONFIG_HOME}, "biber", $BIBER_CONF_NAME) ) { + $biberconf = File::Spec->catfile($ENV{XDG_CONFIG_HOME}, "biber", $BIBER_CONF_NAME); + } elsif ( $^O =~ /(?:Mac|darwin)/ and + -f File::Spec->catfile($ENV{HOME}, "Library", "biber", $BIBER_CONF_NAME) ) { + $biberconf = File::Spec->catfile($ENV{HOME}, "Library", "biber", $BIBER_CONF_NAME); + } elsif ( $^O =~ /Win/ and + defined $ENV{APPDATA} and + -f File::Spec->catfile($ENV{APPDATA}, "biber", $BIBER_CONF_NAME) ) { + $biberconf = File::Spec->catfile($ENV{APPDATA}, "biber", $BIBER_CONF_NAME); + } elsif ( can_run('kpsewhich') ) { + scalar run( command => [ 'kpsewhich', $BIBER_CONF_NAME ], + verbose => 0, + buffer => \$biberconf ); + } else { + $biberconf = undef; + } + return $biberconf; +} + +############################## +# Biber options static methods +############################## + +=head2 postprocess_biber_opts + + Place to postprocess biber options when they have been + gathered from all the possible places that set them + +=cut + +sub postprocess_biber_opts { + shift; # class method so don't care about class name + + # Turn sortcase and sortupper into booleans if they are not already + # They are not booleans on the command-line/config file so that they + # mirror biblatex option syntax for users + if (exists($CONFIG->{options}{biber}{sortcase})) { + if ($CONFIG->{options}{biber}{sortcase} eq 'true') { + $CONFIG->{options}{biber}{sortcase} = 1; + } elsif ($CONFIG->{options}{biber}{sortcase} eq 'false') { + $CONFIG->{options}{biber}{sortcase} = 0; + } + unless ($CONFIG->{options}{biber}{sortcase} eq '1' or + $CONFIG->{options}{biber}{sortcase} eq '0') { + $logger->logdie("Invalid value for option 'sortcase'"); + } + } + + if (exists($CONFIG->{options}{biber}{sortupper})) { + if ($CONFIG->{options}{biber}{sortupper} eq 'true') { + $CONFIG->{options}{biber}{sortupper} = 1; + } elsif ($CONFIG->{options}{biber}{sortupper} eq 'false') { + $CONFIG->{options}{biber}{sortupper} = 0; + } + unless ($CONFIG->{options}{biber}{sortupper} eq '1' or + $CONFIG->{options}{biber}{sortupper} eq '0') { + $logger->logdie("Invalid value for option 'sortupper'"); + } + } +} + +=head2 set_structure + + Sets the structure information object + +=cut + +sub set_structure { + shift; + my $obj = shift; + $CONFIG->{structure} = $obj; + return; +} + +=head2 get_structure + + Gets the structure information object + +=cut + +sub get_structure { + shift; + return $CONFIG->{structure}; +} + +=head2 set_ctrlfile_path + + Stores the path to the control file + +=cut + +sub set_ctrlfile_path { + shift; + $CONFIG->{control_file_location} = shift; + return; +} + +=head2 get_ctrlfile_path + + Retrieved the path to the control file + +=cut + +sub get_ctrlfile_path { + shift; + return $CONFIG->{control_file_location}; +} + +=head2 setoption + + Store a Biber config option + +=cut + +sub setoption { + shift; # class method so don't care about class name + my ($opt, $val) = @_; + $CONFIG->{options}{biber}{$opt} = $val; + return; +} + +=head2 getoption + + Get a Biber option + +=cut + +sub getoption { + shift; # class method so don't care about class name + my $opt = shift; + return $CONFIG->{options}{biber}{$opt}; +} + +=head2 setcmdlineoption + + Store a Biber command-line option + +=cut + +sub setcmdlineoption { + shift; # class method so don't care about class name + my ($opt, $val) = @_; + # Command line options are also options ... + $CONFIG->{options}{biber}{$opt} = $CONFIG->{cmdlineoptions}{$opt} = $val; + return; +} + +=head2 getcmdlineoption + + Get a Biber command lineoption + +=cut + +sub getcmdlineoption { + shift; # class method so don't care about class name + my $opt = shift; + return $CONFIG->{cmdlineoptions}{$opt}; +} + +################################# +# BibLaTeX options static methods +################################# + + +=head2 setblxoption + + Set a biblatex option on the global or per entry-type scope + +=cut + +sub setblxoption { + shift; # class method so don't care about class name + my ($opt, $val, $scope, $scopeval) = @_; + if (not defined($scope)) { # global is the default + if ($CONFIG_SCOPE_BIBLATEX{$opt}->{GLOBAL}) { + $CONFIG->{options}{biblatex}{GLOBAL}{$opt} = $val; + } + } + else { # Per-type/entry options need to specify type/entry too + $scopeval = lc($scopeval) if $scope eq 'PER_ENTRY'; + if ($CONFIG_SCOPE_BIBLATEX{$opt}->{$scope}) { + $CONFIG->{options}{biblatex}{$scope}{$scopeval}{$opt} = $val; + } + } + return; +} + +=head2 getblxoption + + Get a biblatex option from the global or per entry-type scope + + getblxoption('option', ['entrytype'], ['citekey']) + + Returns the value of option. In order of decreasing preference, returns: + 1. Biblatex option defined for entry + 2. Biblatex option defined for entry type + 3. Biblatex option defined globally + +=cut + +sub getblxoption { + shift; # class method so don't care about class name + my ($opt, $entrytype, $citekey) = @_; + if ( defined($citekey) and + $CONFIG_SCOPE_BIBLATEX{$opt}->{PER_ENTRY} and + defined $CONFIG->{options}{biblatex}{PER_ENTRY}{lc($citekey)} and + defined $CONFIG->{options}{biblatex}{PER_ENTRY}{lc($citekey)}{$opt}) { + return $CONFIG->{options}{biblatex}{PER_ENTRY}{lc($citekey)}{$opt}; + } + elsif (defined($entrytype) and + $CONFIG_SCOPE_BIBLATEX{$opt}->{PER_TYPE} and + defined $CONFIG->{options}{biblatex}{PER_TYPE}{$entrytype} and + defined $CONFIG->{options}{biblatex}{PER_TYPE}{$entrytype}{$opt}) { + return $CONFIG->{options}{biblatex}{PER_TYPE}{$entrytype}{$opt}; + } + elsif ($CONFIG_SCOPE_BIBLATEX{$opt}->{GLOBAL}) { + return $CONFIG->{options}{biblatex}{GLOBAL}{$opt}; + } +} + + +############################## +# Biber state static methods +############################## + +#============================ +# seenkey +#============================ + +=head2 get_seenkey + + Get the count of a key + + Biber::Config->get_seenkey($hash); + +=cut + +sub get_seenkey { + shift; # class method so don't care about class name + my $key = shift; + my $section = shift; # If passed, return count for just this section + if (defined($section)) { + return $CONFIG->{state}{seenkeys}{$section}{lc($key)}; + } + else { + my $count; + foreach my $section (keys %{$CONFIG->{state}{seenkeys}}) { + $count += $CONFIG->{state}{seenkeys}{$section}{lc($key)}; + } + return $count; + } +} + +=head2 get_keycase + + Return a key in the original case it was cited with so we + can return mismatched cite key errors + + Biber::Config->get_keycase($key); + +=cut + +sub get_keycase { + shift; # class method so don't care about class name + my $key = shift; + return $CONFIG->{state}{keycase}{lc($key)}; +} + +=head2 incr_seenkey + + Increment the seen count of a key + + Biber::Config->incr_seenkey($ay); + +=cut + +sub incr_seenkey { + shift; # class method so don't care about class name + my $key = shift; + my $section = shift; + $CONFIG->{state}{keycase}{lc($key)} = $key; + $CONFIG->{state}{seenkeys}{$section}{lc($key)}++; + return; +} + + +=head2 reset_seen_extra + + Reset the counters for extrayear and extraalpha + + Biber::Config->reset_extra; + +=cut + +sub reset_seen_extra { + shift; # class method so don't care about class name + my $ay = shift; + $CONFIG->{state}{seen_extrayear}= {}; + $CONFIG->{state}{seen_extraalpha}= {}; + return; +} + +#============================ +# seen_extrayear +#============================ + +=head2 incr_seen_extrayear + + Increment and return the counter for extrayear + + Biber::Config->incr_seen_extrayear($ay); + +=cut + +sub incr_seen_extrayear { + shift; # class method so don't care about class name + my $ay = shift; + return ++$CONFIG->{state}{seen_extrayear}{$ay}; +} + + +#============================ +# seen_nameyear_extrayear +#============================ + +=head2 get_seen_nameyear_extrayear + + Get the count of an labelname/labelyear combination for tracking + extrayear. It uses labelyear plus name as we need to disambiguate + entries with different labelyear (like differentiating 1984--1986 from + just 1984) + + Biber::Config->get_seen_nameyear_extrayear($ny); + +=cut + +sub get_seen_nameyear_extrayear { + shift; # class method so don't care about class name + my $ny = shift; + return $CONFIG->{state}{seen_nameyear_extrayear}{$ny}; +} + +=head2 incr_seen_nameyear_extrayear + + Increment the count of an labelname/labelyear combination for extrayear + + Biber::Config->incr_seen_nameyear_extrayear($ns, $ys); + + We pass in the name and year strings seperately as we have to + be careful and only increment this counter beyond 1 if there is + both a name and year component. Otherwise, extrayear gets defined for all + entries with no name but the same year etc. + +=cut + +sub incr_seen_nameyear_extrayear { + shift; # class method so don't care about class name + my ($ns, $ys) = @_; + $tmp = "$ns,$ys"; + # We can always increment this to 1 + unless ($CONFIG->{state}{seen_nameyear_extrayear}{$tmp}) { + $CONFIG->{state}{seen_nameyear_extrayear}{$tmp}++; + } + # But beyond that only if we have a labelname and labelyear in the entry since + # this counter is used to create extrayear which doesn't mean anything for + # entries with only one of these. + else { + if ($ns and $ys) { + $CONFIG->{state}{seen_nameyear_extrayear}{$tmp}++; + } + } + return; +} + +#============================ +# seen_extraalpha +#============================ + +=head2 incr_seen_extraalpha + + Increment and return the counter for extraalpha + + Biber::Config->incr_seen_extraalpha($ay); + +=cut + +sub incr_seen_extraalpha { + shift; # class method so don't care about class name + my $ay = shift; + return ++$CONFIG->{state}{seen_extraalpha}{$ay}; +} + + +#============================ +# seen_nameyear_extraalpha +#============================ + +=head2 get_seen_nameyear_extraalpha + + Get the count of an labelname/labelyear combination for tracking + extraalpha. It uses labelyear plus name as we need to disambiguate + entries with different labelyear (like differentiating 1984--1986 from + just 1984) + + Biber::Config->get_seen_nameyear_extraalpha($ny); + +=cut + +sub get_seen_nameyear_extraalpha { + shift; # class method so don't care about class name + my $ny = shift; + return $CONFIG->{state}{seen_nameyear_extraalpha}{$ny}; +} + +=head2 incr_seen_nameyear_extraalpha + + Increment the count of an labelname/labelyear combination for extraalpha + + Biber::Config->incr_seen_nameyear_extraalpha($ns, $ys); + + We pass in the name and year strings seperately as we have to + be careful and only increment this counter beyond 1 if there is + both a name and year component. Otherwise, extraalpha gets defined for all + entries with no name but the same year etc. + +=cut + +sub incr_seen_nameyear_extraalpha { + shift; # class method so don't care about class name + my ($ns, $ys) = @_; + $tmp = "$ns,$ys"; + # We can always increment this to 1 + unless ($CONFIG->{state}{seen_nameyear_extraalpha}{$tmp}) { + $CONFIG->{state}{seen_nameyear_extraalpha}{$tmp}++; + } + # But beyond that only if we have a labelname and labelyear in the entry since + # this counter is used to create extraalpha which doesn't mean anything for + # entries with only one of these. + else { + if ($ns and $ys) { + $CONFIG->{state}{seen_nameyear_extraalpha}{$tmp}++; + } + } + return; +} + +#============================ +# uniquenamecount +#============================ + +=head2 get_numofuniquenames + + Get the number of uniquenames entries for a name + + Biber::Config->get_numofuniquenames($name); + +=cut + +sub get_numofuniquenames { + shift; # class method so don't care about class name + my $name = shift; + return $#{$CONFIG->{state}{uniquenamecount}{$name}} + 1; +} + +=head2 add_uniquenamecount + + Add a hash to the list of name(hashes) which have the name part in it + + Biber::Config->add_uniquenamecount($name, $hash); + +=cut + +sub add_uniquenamecount { + shift; # class method so don't care about class name + my $namestring = shift; + my $hash = shift; + # name(hash) already recorded as containing namestring + if (first {$hash eq $_} @{$CONFIG->{state}{uniquenamecount}{$namestring}}) { + return; + } + # Record name(hash) as containing namestring + else { + push @{$CONFIG->{state}{uniquenamecount}{$namestring}}, $hash; + } + return; +} + + +=head2 _get_uniquename + + Get the uniquename hash of a lastname/hash combination + Mainly for use in tests + + Biber::Config->get_uniquename($name); + +=cut + +sub _get_uniquename { + shift; # class method so don't care about class name + my $name = shift; + my @list = sort @{$CONFIG->{state}{uniquenamecount}{$name}}; + return \@list; +} + + +#============================ +# namehashcount +#============================ + + +=head2 get_numofnamehashes + + Get the number of name hashes + + Biber::Config->get_numofnamehashes($hash); + +=cut + +sub get_numofnamehashes { + shift; # class method so don't care about class name + my $hash = shift; + return scalar keys %{$CONFIG->{state}{namehashcount}{$hash}}; +} + +=head2 namehashexists + + Check if there is an entry for a namehash + + Biber::Config->namehashexists($hash); + +=cut + +sub namehashexists { + shift; # class method so don't care about class name + my $hash = shift; + return exists($CONFIG->{state}{namehashcount}{$hash}) ? 1 : 0; +} + + +=head2 get_namehashcount + + Get the count of a name hash and name id + + Biber::Config->get_namehashcount($hash, $id); + +=cut + +sub get_namehashcount { + shift; # class method so don't care about class name + my ($hash, $id) = @_; + return $CONFIG->{state}{namehashcount}{$hash}{$id}; +} + +=head2 set_namehashcount + + Set the count of a name hash and name id + + Biber::Config->set_namehashcount($hash, $id, $num); + +=cut + +sub set_namehashcount { + shift; # class method so don't care about class name + my ($hash, $id, $num) = @_; + $CONFIG->{state}{namehashcount}{$hash}{$id} = $num; + return; +} + + +=head2 del_namehash + + Delete the count information for a name hash + + Biber::Config->del_namehashcount($hash); + +=cut + +sub del_namehash { + shift; # class method so don't care about class name + my $hash = shift; + if (exists($CONFIG->{state}{namehashcount}{$hash})) { + delete $CONFIG->{state}{namehashcount}{$hash}; + } + return; +} + +#============================ +# seennamehash +#============================ + + +=head2 get_seennamehash + + Get the count of a seen name hash + + Biber::Config->get_seennamehash($hash); + +=cut + +sub get_seennamehash { + shift; # class method so don't care about class name + my $hash = shift; + return $CONFIG->{state}{seennamehash}{$hash}; +} + + +=head2 incr_seennamehash + + Increment the count of a seen name hash + + Biber::Config->incr_seennamehash($hash); + +=cut + +sub incr_seennamehash { + shift; # class method so don't care about class name + my $hash = shift; + $CONFIG->{state}{seennamehash}{$hash}++; + return; +} + + +#============================ +# crossrefkeys +#============================ + + +=head2 get_crossrefkeys + + Return ref to array of keys which are crossref targets + + Biber::Config->get_crossrefkeys(); + +=cut + +sub get_crossrefkeys { + shift; # class method so don't care about class name + return [ keys %{$CONFIG->{state}{crossrefkeys}} ]; +} + +=head2 get_crossrefkey + + Return an integer representing the number of times a + crossref target key has been ref'ed + + Biber::Config->get_crossrefkey($key); + +=cut + +sub get_crossrefkey { + shift; # class method so don't care about class name + my $k = shift; + return $CONFIG->{state}{crossrefkeys}{lc($k)}; +} + +=head2 del_crossrefkey + + Remove a crossref target key from the crossrefkeys state + + Biber::Config->del_crossrefkey($key); + +=cut + +sub del_crossrefkey { + shift; # class method so don't care about class name + my $k = shift; + if (exists($CONFIG->{state}{crossrefkeys}{lc($k)})) { + delete $CONFIG->{state}{crossrefkeys}{lc($k)}; + } + return; +} + +=head2 incr_crossrefkey + + Increment the crossreferences count for a target crossref key + + Biber::Config->incr_crossrefkey($key); + +=cut + +sub incr_crossrefkey { + shift; # class method so don't care about class name + my $k = shift; + $CONFIG->{state}{crossrefkeys}{lc($k)}++; + return; +} + + +############################ +# Displaymode static methods +############################ + +=head2 set_displaymode + + Set the display mode for a field. + setdisplaymode(['entrytype'], ['field'], ['citekey'], $value) + + This sets the desired displaymode to use for some data in the bib. + Of course, this is entirey seperate semantically from the + displaymodes *defined* in the bib which just tell you what to return + for a particular displaymode request for some data. + +=cut + +sub set_displaymode { + shift; # class method so don't care about class name + my ($val, $entrytype, $fieldtype, $citekey) = @_; + if ($citekey) { + my $key = lc($citekey); + if ($fieldtype) { + $CONFIG->{displaymodes}{PER_FIELD}{$key}{$fieldtype} = $val; + } + else { + $CONFIG->{displaymodes}{PER_ENTRY}{$key} = $val; + } + } + elsif ($fieldtype) { + $CONFIG->{displaymodes}{PER_FIELDTYPE}{$fieldtype} = $val; + } + elsif ($entrytype) { + $CONFIG->{displaymodes}{PER_ENTRYTYPE}{$entrytype} = $val; + } + else { + $CONFIG->{displaymodes}{GLOBAL} = $val ; + } +} + +=head2 get_displaymode + + Get the display mode for a field. + getdisplaymode(['entrytype'], ['field'], ['citekey']) + + Returns the displaymode. In order of decreasing preference, returns: + 1. Mode defined for a specific field in a specific citekey + 2. Mode defined for a citekey + 3. Mode defined for a fieldtype (any citekey) + 4. Mode defined for an entrytype (any citekey) + 5. Mode defined globally (any citekey) + +=cut + +sub get_displaymode { + shift; # class method so don't care about class name + my ($entrytype, $fieldtype, $citekey) = @_; + my $dm; + if ($citekey) { + my $key = lc($citekey); + if ($fieldtype and + defined($CONFIG->{displaymodes}{PER_FIELD}) and + defined($CONFIG->{displaymodes}{PER_FIELD}{$key}) and + defined($CONFIG->{displaymodes}{PER_FIELD}{$key}{$fieldtype})) { + $dm = $CONFIG->{displaymodes}{PER_FIELD}{$key}{$fieldtype}; + } + elsif (defined($CONFIG->{displaymodes}{PER_ENTRY}) and + defined($CONFIG->{displaymodes}{PER_ENTRY}{$key})) { + $dm = $CONFIG->{displaymodes}{PER_ENTRY}{$key}; + } + } + elsif ($fieldtype and + defined($CONFIG->{displaymodes}{PER_FIELDTYPE}) and + defined($CONFIG->{displaymodes}{PER_FIELDTYPE}{$fieldtype})) { + $dm = $CONFIG->{displaymodes}{PER_FIELDTYPE}{$fieldtype}; + } + elsif ($entrytype and + defined($CONFIG->{displaymodes}{PER_ENTRYTYPE}) and + defined($CONFIG->{displaymodes}{PER_ENTRYTYPE}{$entrytype})) { + $dm = $CONFIG->{displaymodes}{PER_ENTRYTYPE}{$entrytype}; + } + $dm = $CONFIG->{displaymodes}{GLOBAL} unless $dm; # Global if nothing else; + $dm = $DISPLAYMODE_DEFAULT unless $dm; # fall back to this constant + if ( ref $dm eq 'ARRAY') { + return $dm; + } + else { + return $DISPLAYMODES{$dm}; + } +} + +=head2 dump + + Dump config information (for debugging) + +=cut + +sub dump { + shift; # class method so don't care about class name + dd($CONFIG); +} + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Constants.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Constants.pm new file mode 100644 index 00000000000..aa4d4e26d8b --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Constants.pm @@ -0,0 +1,1697 @@ +package Biber::Constants; +#use feature 'unicode_strings'; +use strict; +use warnings; +use Encode::Alias; +use Readonly; + +use base 'Exporter'; + +our @EXPORT = qw{ + %CONFIG_DEFAULT_BIBER + %CONFIG_DEFAULT_BIBLATEX + %CONFIG_SCOPE_BIBLATEX + %NOSORT_TYPES + %STRUCTURE_DATATYPES + $BIBER_CONF_NAME + $BIBLATEX_VERSION + $BIBER_SORT_FINAL + $BIBER_SORT_NULL + }; + +# Version of biblatex which this release works with. Matched against version +# passed in control file +Readonly::Scalar our $BIBLATEX_VERSION => '1.2'; + +# Global flags needed for sorting +our $BIBER_SORT_FINAL = 0; +our $BIBER_SORT_NULL = 0; + +# the name of the Biber configuration file, which should be +# either returned by kpsewhich or located at "$HOME/.$BIBER_CONF_NAME" +our $BIBER_CONF_NAME = 'biber.conf'; + +## Biber CONFIGURATION DEFAULTS + +# Locale - first try environment ... +my $locale; +if ($ENV{LC_COLLATE}) { + $locale = $ENV{LC_COLLATE}; +} +elsif ($ENV{LANG}) { + $locale = $ENV{LANG}; +} +elsif ($ENV{LC_ALL}) { + $locale = $ENV{LC_ALL}; +} + +# ... if nothing, set a default +unless ($locale) { + if ( $^O =~ /Win/) { + $locale = 'English_United States.1252'; + } + else { + $locale = 'en_US.UTF-8'; + } +} + +# nosort type category shortcuts +our %NOSORT_TYPES = ( + type_name => { + author => 1, + afterword => 1, + annotator => 1, + bookauthor => 1, + commentator => 1, + editor => 1, + editora => 1, + editorb => 1, + editorc => 1, + foreword => 1, + holder => 1, + introduction => 1, + namea => 1, + nameb => 1, + namec => 1, + shortauthor => 1, + shorteditor => 1, + translator => 1 + }, + type_title => { + booktitle => 1, + eventtitle => 1, + issuetitle => 1, + journaltitle => 1, + maintitle => 1, + origtitle => 1, + title => 1 + } +); + +# datatypes for structure validation +our %STRUCTURE_DATATYPES = ( + integer => qr/\A\d+\z/xms +); + +# In general, these defaults are for two reasons: +# * If there is no .bcf to set these options (-a and -d flags for example) +# * New features which are not implemented in .bcf by biblatex yet and so we have +# provide defaults in case they are missing. + +our %CONFIG_DEFAULT_BIBER = ( + bblencoding => 'UTF-8', + bibencoding => 'UTF-8', + bblsafechars => 0, + bblsafecharsset => 'extra', + collate => 1, + collate_options => { level => 4 }, + debug => 0, + decodecharsset => 'extra', + mincrossrefs => 2, + nolog => 0, + nostdmacros => 0, + nosort => { type_name => [ q/\A\p{L}{2}\p{Pd}/, q/[\x{2bf}\x{2018}]/ ] }, + quiet => 0, + sortcase => 1, + sortlocale => $locale, + sortupper => 1, + trace => 0, + wraplines => 0, + validate_control => 0, + validate_structure => 0 + ); + +# default global options for biblatex +# in practice these will be obtained from the control file, +# but we need this for things not yet implemented by biblatex but expected by biber +our %CONFIG_DEFAULT_BIBLATEX = + ( + displaymode => { ALL => ["original", "romanised", "uniform", "translated"] }, + structure => + { constraints => [ + { + constraint => [ + { + fieldxor => [ + { + field => [ + { coerce => "true", content => "date" }, + { content => "year" }, + ], + }, + ], + type => "mandatory", + }, + ], + entrytype => [ + { content => "article" }, + { content => "book" }, + { content => "inbook" }, + { content => "bookinbook" }, + { content => "suppbook" }, + { content => "booklet" }, + { content => "collection" }, + { content => "incollection" }, + { content => "suppcollection" }, + { content => "manual" }, + { content => "misc" }, + { content => "mvbook" }, + { content => "mvcollection" }, + { content => "online" }, + { content => "patent" }, + { content => "periodical" }, + { content => "suppperiodical" }, + { content => "proceedings" }, + { content => "inproceedings" }, + { content => "reference" }, + { content => "inreference" }, + { content => "report" }, + { content => "set" }, + { content => "thesis" }, + { content => "unpublished" }, + ], + }, + { + constraint => [ + { + field => [{ content => "entryset" }, { content => "crossref" }], + type => "mandatory", + }, + ], + entrytype => [{ content => "set" }], + }, + { + constraint => [ + { + field => [ + { content => "author" }, + { content => "journaltitle" }, + { content => "title" }, + ], + type => "mandatory", + }, + ], + entrytype => [{ content => "article" }], + }, + { + constraint => [ + { + field => [{ content => "author" }, { content => "title" }], + type => "mandatory", + }, + ], + entrytype => [ + { content => "book" }, + { content => "mvbook" }, + { content => "mvcollection" }, + { content => "mvreference" }, + ], + }, + { + constraint => [ + { + field => [ + { content => "author" }, + { content => "title" }, + { content => "booktitle" }, + ], + type => "mandatory", + }, + ], + entrytype => [ + { content => "inbook" }, + { content => "bookinbook" }, + { content => "suppbook" }, + ], + }, + { + constraint => [ + { + field => [{ content => "title" }], + fieldor => [ + { field => [{ content => "author" }, { content => "editor" }] }, + ], + type => "mandatory", + }, + ], + entrytype => [{ content => "booklet" }], + }, + { + constraint => [ + { + field => [{ content => "editor" }, { content => "title" }], + type => "mandatory", + }, + ], + entrytype => [{ content => "collection" }, { content => "reference" }], + }, + { + constraint => [ + { + field => [ + { content => "author" }, + { content => "editor" }, + { content => "title" }, + { content => "booktitle" }, + ], + type => "mandatory", + }, + ], + entrytype => [ + { content => "incollection" }, + { content => "suppcollection" }, + { content => "inreference" }, + ], + }, + { + constraint => [{ field => [{ content => "title" }], type => "mandatory" }], + entrytype => [{ content => "manual" }], + }, + { + constraint => [{ field => [{ content => "title" }], type => "mandatory" }], + entrytype => [{ content => "misc" }], + }, + { + constraint => [ + { + field => [{ content => "title" }, { content => "url" }], + type => "mandatory", + }, + ], + entrytype => [{ content => "online" }], + }, + { + constraint => [ + { + field => [ + { content => "author" }, + { content => "title" }, + { content => "number" }, + ], + type => "mandatory", + }, + ], + entrytype => [{ content => "patent" }], + }, + { + constraint => [ + { + field => [{ content => "editor" }, { content => "title" }], + type => "mandatory", + }, + ], + entrytype => [{ content => "periodical" }], + }, + { + constraint => [ + { + field => [{ content => "editor" }, { content => "title" }], + type => "mandatory", + }, + ], + entrytype => [{ content => "proceedings" }, { content => "mvproceedings" }], + }, + { + constraint => [ + { + field => [ + { content => "author" }, + { content => "editor" }, + { content => "title" }, + { content => "booktitle" }, + ], + type => "mandatory", + }, + ], + entrytype => [{ content => "inproceedings" }], + }, + { + constraint => [ + { + field => [ + { content => "author" }, + { content => "title" }, + { content => "type" }, + { content => "institution" }, + ], + type => "mandatory", + }, + ], + entrytype => [{ content => "report" }], + }, + { + constraint => [ + { + field => [ + { content => "author" }, + { content => "title" }, + { content => "type" }, + { content => "institution" }, + ], + type => "mandatory", + }, + ], + entrytype => [{ content => "thesis" }], + }, + { + constraint => [ + { + field => [{ content => "author" }, { content => "title" }], + type => "mandatory", + }, + ], + entrytype => [{ content => "unpublished" }], + }, + ], + datetypes => { + datetype => [ + { content => "date" }, + { content => "origdate" }, + { content => "eventdate" }, + { content => "urldate" }, + ], + }, + entryfields => [ + { + entrytype => [{ content => "ALL" }], + field => [ + { content => "abstract" }, + { content => "annotation" }, + { content => "authortype" }, + { content => "bookpagination" }, + { content => "crossref" }, + { content => "entryset" }, + { content => "entrysubtype" }, + { content => "execute" }, + { content => "file" }, + { content => "gender" }, + { content => "hyphenation" }, + { content => "indextitle" }, + { content => "indexsorttitle" }, + { content => "isan" }, + { content => "ismn" }, + { content => "iswc" }, + { content => "keywords" }, + { content => "label" }, + { content => "library" }, + { content => "lista" }, + { content => "listb" }, + { content => "listc" }, + { content => "listd" }, + { content => "liste" }, + { content => "listf" }, + { content => "nameaddon" }, + { content => "options" }, + { content => "origday" }, + { content => "origendday" }, + { content => "origendmonth" }, + { content => "origendyear" }, + { content => "origmonth" }, + { content => "origyear" }, + { content => "origlocation" }, + { content => "origpublisher" }, + { content => "origtitle" }, + { content => "pagination" }, + { content => "presort" }, + { content => "related" }, + { content => "relatedtype" }, + { content => "relatedstring" }, + { content => "shortauthor" }, + { content => "shorteditor" }, + { content => "shorthand" }, + { content => "shorthandintro" }, + { content => "shortjournal" }, + { content => "shortseries" }, + { content => "shorttitle" }, + { content => "sortkey" }, + { content => "sortname" }, + { content => "sorttitle" }, + { content => "sortyear" }, + { content => "usera" }, + { content => "userb" }, + { content => "userc" }, + { content => "userd" }, + { content => "usere" }, + { content => "userf" }, + { content => "verba" }, + { content => "verbb" }, + { content => "verbc" }, + { content => "xref" }, + ], + }, + { + entrytype => [{ content => "set" }], + field => [{ content => "entryset" }, { content => "crossref" }], + }, + { + entrytype => [{ content => "article" }], + field => [ + { content => "author" }, + { content => "journaltitle" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "annotator" }, + { content => "commentator" }, + { content => "doi" }, + { content => "editor" }, + { content => "editora" }, + { content => "editorb" }, + { content => "editorc" }, + { content => "editoratype" }, + { content => "editorbtype" }, + { content => "editorctype" }, + { content => "eid" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "issn" }, + { content => "issue" }, + { content => "issuetitle" }, + { content => "issuesubtitle" }, + { content => "journalsubtitle" }, + { content => "language" }, + { content => "note" }, + { content => "number" }, + { content => "origlanguage" }, + { content => "pages" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "translator" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "version" }, + { content => "volume" }, + ], + }, + { + entrytype => [{ content => "bibnote" }], + field => [{ content => "note" }], + }, + { + entrytype => [{ content => "book" }], + field => [ + { content => "author" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "afterword" }, + { content => "annotator" }, + { content => "chapter" }, + { content => "commentator" }, + { content => "doi" }, + { content => "edition" }, + { content => "editor" }, + { content => "editora" }, + { content => "editorb" }, + { content => "editorc" }, + { content => "editoratype" }, + { content => "editorbtype" }, + { content => "editorctype" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "foreword" }, + { content => "introduction" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "maintitle" }, + { content => "maintitleaddon" }, + { content => "mainsubtitle" }, + { content => "note" }, + { content => "number" }, + { content => "origlanguage" }, + { content => "pages" }, + { content => "pagetotal" }, + { content => "part" }, + { content => "publisher" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "translator" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "volume" }, + { content => "volumes" }, + ], + }, + { + entrytype => [{ content => "mvbook" }], + field => [ + { content => "author" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "afterword" }, + { content => "annotator" }, + { content => "commentator" }, + { content => "doi" }, + { content => "edition" }, + { content => "editor" }, + { content => "editora" }, + { content => "editorb" }, + { content => "editorc" }, + { content => "editoratype" }, + { content => "editorbtype" }, + { content => "editorctype" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "foreword" }, + { content => "introduction" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "note" }, + { content => "number" }, + { content => "origlanguage" }, + { content => "publisher" }, + { content => "pubstate" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "translator" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "volume" }, + { content => "volumes" }, + ], + }, + { + entrytype => [ + { content => "inbook" }, + { content => "bookinbook" }, + { content => "suppbook" }, + ], + field => [ + { content => "author" }, + { content => "title" }, + { content => "booktitle" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "afterword" }, + { content => "annotator" }, + { content => "bookauthor" }, + { content => "booksubtitle" }, + { content => "booktitleaddon" }, + { content => "chapter" }, + { content => "commentator" }, + { content => "doi" }, + { content => "edition" }, + { content => "editor" }, + { content => "editora" }, + { content => "editorb" }, + { content => "editorc" }, + { content => "editoratype" }, + { content => "editorbtype" }, + { content => "editorctype" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "foreword" }, + { content => "introduction" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "mainsubtitle" }, + { content => "maintitle" }, + { content => "maintitleaddon" }, + { content => "note" }, + { content => "number" }, + { content => "origlanguage" }, + { content => "part" }, + { content => "publisher" }, + { content => "pages" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "translator" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "volume" }, + { content => "volumes" }, + ], + }, + { + entrytype => [{ content => "booklet" }], + field => [ + { content => "author" }, + { content => "editor" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "chapter" }, + { content => "doi" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "howpublished" }, + { content => "language" }, + { content => "location" }, + { content => "note" }, + { content => "pages" }, + { content => "pagetotal" }, + { content => "pubstate" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "type" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + ], + }, + { + entrytype => [{ content => "collection" }, { content => "reference" }], + field => [ + { content => "editor" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "afterword" }, + { content => "annotator" }, + { content => "chapter" }, + { content => "commentator" }, + { content => "doi" }, + { content => "edition" }, + { content => "editora" }, + { content => "editorb" }, + { content => "editorc" }, + { content => "editoratype" }, + { content => "editorbtype" }, + { content => "editorctype" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "foreword" }, + { content => "introduction" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "mainsubtitle" }, + { content => "maintitle" }, + { content => "maintitleaddon" }, + { content => "note" }, + { content => "number" }, + { content => "origlanguage" }, + { content => "pages" }, + { content => "pagetotal" }, + { content => "part" }, + { content => "publisher" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "translator" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "volume" }, + { content => "volumes" }, + ], + }, + { + entrytype => [{ content => "mvcollection" }, { content => "mvreference" }], + field => [ + { content => "author" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "afterword" }, + { content => "annotator" }, + { content => "commentator" }, + { content => "doi" }, + { content => "edition" }, + { content => "editor" }, + { content => "editora" }, + { content => "editorb" }, + { content => "editorc" }, + { content => "editoratype" }, + { content => "editorbtype" }, + { content => "editorctype" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "foreword" }, + { content => "introduction" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "note" }, + { content => "number" }, + { content => "origlanguage" }, + { content => "publisher" }, + { content => "pubstate" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "translator" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "volume" }, + { content => "volumes" }, + ], + }, + { + entrytype => [ + { content => "incollection" }, + { content => "suppcollection" }, + { content => "inreference" }, + ], + field => [ + { content => "author" }, + { content => "editor" }, + { content => "title" }, + { content => "booktitle" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "afterword" }, + { content => "annotator" }, + { content => "booksubtitle" }, + { content => "booktitleaddon" }, + { content => "chapter" }, + { content => "commentator" }, + { content => "doi" }, + { content => "edition" }, + { content => "editora" }, + { content => "editorb" }, + { content => "editorc" }, + { content => "editoratype" }, + { content => "editorbtype" }, + { content => "editorctype" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "foreword" }, + { content => "introduction" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "mainsubtitle" }, + { content => "maintitle" }, + { content => "maintitleaddon" }, + { content => "note" }, + { content => "number" }, + { content => "origlanguage" }, + { content => "pages" }, + { content => "part" }, + { content => "publisher" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "translator" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "volume" }, + { content => "volumes" }, + ], + }, + { + entrytype => [{ content => "manual" }], + field => [ + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "author" }, + { content => "chapter" }, + { content => "doi" }, + { content => "edition" }, + { content => "editor" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "note" }, + { content => "number" }, + { content => "organization" }, + { content => "pages" }, + { content => "pagetotal" }, + { content => "publisher" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "type" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "version" }, + ], + }, + { + entrytype => [{ content => "misc" }], + field => [ + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "author" }, + { content => "doi" }, + { content => "editor" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "howpublished" }, + { content => "language" }, + { content => "location" }, + { content => "note" }, + { content => "organization" }, + { content => "pubstate" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "type" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "version" }, + ], + }, + { + entrytype => [{ content => "online" }], + field => [ + { content => "title" }, + { content => "url" }, + { content => "addendum" }, + { content => "author" }, + { content => "editor" }, + { content => "language" }, + { content => "month" }, + { content => "note" }, + { content => "organization" }, + { content => "pubstate" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "version" }, + { content => "year" }, + ], + }, + { + entrytype => [{ content => "patent" }], + field => [ + { content => "author" }, + { content => "title" }, + { content => "number" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "doi" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "holder" }, + { content => "location" }, + { content => "note" }, + { content => "pubstate" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "type" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "version" }, + ], + }, + { + entrytype => [{ content => "periodical" }], + field => [ + { content => "editor" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "doi" }, + { content => "editora" }, + { content => "editorb" }, + { content => "editorc" }, + { content => "editoratype" }, + { content => "editorbtype" }, + { content => "editorctype" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "issn" }, + { content => "issue" }, + { content => "issuesubtitle" }, + { content => "issuetitle" }, + { content => "language" }, + { content => "note" }, + { content => "number" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "volume" }, + ], + }, + { + entrytype => [{ content => "mvproceedings" }], + field => [ + { content => "editor" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "doi" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "eventday" }, + { content => "eventendday" }, + { content => "eventendmonth" }, + { content => "eventendyear" }, + { content => "eventmonth" }, + { content => "eventyear" }, + { content => "eventtitle" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "note" }, + { content => "number" }, + { content => "organization" }, + { content => "pagetotal" }, + { content => "publisher" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "venue" }, + { content => "volumes" }, + ], + }, + { + entrytype => [{ content => "proceedings" }], + field => [ + { content => "editor" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "chapter" }, + { content => "doi" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "eventday" }, + { content => "eventendday" }, + { content => "eventendmonth" }, + { content => "eventendyear" }, + { content => "eventmonth" }, + { content => "eventyear" }, + { content => "eventtitle" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "mainsubtitle" }, + { content => "maintitle" }, + { content => "maintitleaddon" }, + { content => "note" }, + { content => "number" }, + { content => "organization" }, + { content => "pages" }, + { content => "pagetotal" }, + { content => "part" }, + { content => "publisher" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "venue" }, + { content => "volume" }, + { content => "volumes" }, + ], + }, + { + entrytype => [{ content => "inproceedings" }], + field => [ + { content => "author" }, + { content => "editor" }, + { content => "title" }, + { content => "booktitle" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "booksubtitle" }, + { content => "booktitleaddon" }, + { content => "chapter" }, + { content => "doi" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "eventday" }, + { content => "eventendday" }, + { content => "eventendmonth" }, + { content => "eventendyear" }, + { content => "eventmonth" }, + { content => "eventyear" }, + { content => "eventtitle" }, + { content => "isbn" }, + { content => "language" }, + { content => "location" }, + { content => "mainsubtitle" }, + { content => "maintitle" }, + { content => "maintitleaddon" }, + { content => "note" }, + { content => "number" }, + { content => "organization" }, + { content => "pages" }, + { content => "part" }, + { content => "publisher" }, + { content => "pubstate" }, + { content => "series" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "venue" }, + { content => "volume" }, + { content => "volumes" }, + ], + }, + { + entrytype => [{ content => "report" }], + field => [ + { content => "author" }, + { content => "title" }, + { content => "type" }, + { content => "institution" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "chapter" }, + { content => "doi" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "isrn" }, + { content => "language" }, + { content => "location" }, + { content => "note" }, + { content => "number" }, + { content => "pages" }, + { content => "pagetotal" }, + { content => "pubstate" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + { content => "version" }, + ], + }, + { + entrytype => [{ content => "thesis" }], + field => [ + { content => "author" }, + { content => "title" }, + { content => "type" }, + { content => "institution" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "chapter" }, + { content => "doi" }, + { content => "eprint" }, + { content => "eprintclass" }, + { content => "eprinttype" }, + { content => "language" }, + { content => "location" }, + { content => "note" }, + { content => "pages" }, + { content => "pagetotal" }, + { content => "pubstate" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + ], + }, + { + entrytype => [{ content => "unpublished" }], + field => [ + { content => "author" }, + { content => "title" }, + { content => "day" }, + { content => "endday" }, + { content => "endmonth" }, + { content => "endyear" }, + { content => "month" }, + { content => "year" }, + { content => "addendum" }, + { content => "howpublished" }, + { content => "language" }, + { content => "location" }, + { content => "note" }, + { content => "pubstate" }, + { content => "subtitle" }, + { content => "titleaddon" }, + { content => "url" }, + { content => "urlday" }, + { content => "urlendday" }, + { content => "urlendmonth" }, + { content => "urlendyear" }, + { content => "urlmonth" }, + { content => "urlyear" }, + ], + }, + ], + entrytypes => { + entrytype => [ + { content => "article" }, + { content => "artwork" }, + { content => "audio" }, + { content => "bibnote" }, + { content => "book" }, + { content => "bookinbook" }, + { content => "booklet" }, + { content => "collection" }, + { content => "commentary" }, + { content => "customa" }, + { content => "customb" }, + { content => "customc" }, + { content => "customd" }, + { content => "custome" }, + { content => "customf" }, + { content => "inbook" }, + { content => "incollection" }, + { content => "inproceedings" }, + { content => "inreference" }, + { content => "image" }, + { content => "jurisdiction" }, + { content => "legal" }, + { content => "legislation" }, + { content => "letter" }, + { content => "manual" }, + { content => "misc" }, + { content => "movie" }, + { content => "music" }, + { content => "mvcollection" }, + { content => "mvbook" }, + { content => "online" }, + { content => "patent" }, + { content => "performance" }, + { content => "periodical" }, + { content => "proceedings" }, + { content => "reference" }, + { content => "report" }, + { content => "review" }, + { content => "set" }, + { content => "software" }, + { content => "standard" }, + { content => "suppbook" }, + { content => "suppcollection" }, + { content => "thesis" }, + { content => "unpublished" }, + { content => "video" }, + ], + }, + fields => { + field => [ + { content => "abstract", datatype => "literal", fieldtype => "field" }, + { content => "addendum", datatype => "literal", fieldtype => "field" }, + { content => "afterword", datatype => "name", fieldtype => "list" }, + { content => "annotation", datatype => "literal", fieldtype => "field" }, + { content => "annotator", datatype => "name", fieldtype => "list" }, + { content => "author", datatype => "name", fieldtype => "list" }, + { content => "authortype", datatype => "key", fieldtype => "field" }, + { content => "bookauthor", datatype => "name", fieldtype => "list" }, + { content => "bookpagination", datatype => "key", fieldtype => "field" }, + { content => "booksubtitle", datatype => "literal", fieldtype => "field" }, + { content => "booktitle", datatype => "literal", fieldtype => "field" }, + { + content => "booktitleaddon", + datatype => "literal", + fieldtype => "field", + }, + { content => "chapter", datatype => "literal", fieldtype => "field" }, + { content => "commentator", datatype => "name", fieldtype => "list" }, + { content => "crossref", datatype => "literal", fieldtype => "field" }, + { content => "day", datatype => "literal", fieldtype => "field" }, + { content => "doi", datatype => "verbatim", fieldtype => "field" }, + { content => "edition", datatype => "literal", fieldtype => "field" }, + { content => "editor", datatype => "name", fieldtype => "list" }, + { content => "editora", datatype => "name", fieldtype => "list" }, + { content => "editoratype", datatype => "key", fieldtype => "field" }, + { content => "editorb", datatype => "name", fieldtype => "list" }, + { content => "editorbtype", datatype => "key", fieldtype => "field" }, + { content => "editorc", datatype => "name", fieldtype => "list" }, + { content => "editorctype", datatype => "key", fieldtype => "field" }, + { content => "editortype", datatype => "key", fieldtype => "field" }, + { content => "eid", datatype => "literal", fieldtype => "field" }, + { content => "endday", datatype => "literal", fieldtype => "field" }, + { content => "endmonth", datatype => "literal", fieldtype => "field" }, + { + content => "endyear", + datatype => "literal", + fieldtype => "field", + nullok => "true", + }, + { + content => "entryset", + datatype => "literal", + fieldtype => "field", + skip_output => "true", + }, + { content => "entrysubtype", datatype => "literal", fieldtype => "field" }, + { content => "eprint", datatype => "verbatim", fieldtype => "field" }, + { content => "eprintclass", datatype => "literal", fieldtype => "field" }, + { content => "eprinttype", datatype => "literal", fieldtype => "field" }, + { content => "eventday", datatype => "literal", fieldtype => "field" }, + { content => "eventendday", datatype => "literal", fieldtype => "field" }, + { content => "eventendmonth", datatype => "literal", fieldtype => "field" }, + { + content => "eventendyear", + datatype => "literal", + fieldtype => "field", + nullok => "true", + }, + { content => "eventmonth", datatype => "literal", fieldtype => "field" }, + { content => "eventtitle", datatype => "literal", fieldtype => "field" }, + { content => "eventyear", datatype => "literal", fieldtype => "field" }, + { content => "execute", datatype => "literal", fieldtype => "field" }, + { content => "file", datatype => "verbatim", fieldtype => "field" }, + { content => "foreword", datatype => "name", fieldtype => "list" }, + { content => "gender", datatype => "literal", fieldtype => "field" }, + { content => "holder", datatype => "name", fieldtype => "list" }, + { content => "howpublished", datatype => "literal", fieldtype => "field" }, + { content => "hyphenation", datatype => "literal", fieldtype => "field" }, + { + content => "indexsorttitle", + datatype => "literal", + fieldtype => "field", + }, + { content => "indextitle", datatype => "literal", fieldtype => "field" }, + { content => "institution", datatype => "literal", fieldtype => "list" }, + { content => "introduction", datatype => "name", fieldtype => "list" }, + { content => "isan", datatype => "literal", fieldtype => "field" }, + { content => "isbn", datatype => "literal", fieldtype => "field" }, + { content => "ismn", datatype => "literal", fieldtype => "field" }, + { content => "isrn", datatype => "literal", fieldtype => "field" }, + { content => "issn", datatype => "literal", fieldtype => "field" }, + { content => "issue", datatype => "literal", fieldtype => "field" }, + { content => "issuesubtitle", datatype => "literal", fieldtype => "field" }, + { content => "issuetitle", datatype => "literal", fieldtype => "field" }, + { content => "iswc", datatype => "literal", fieldtype => "field" }, + { + content => "journalsubtitle", + datatype => "literal", + fieldtype => "field", + }, + { content => "journaltitle", datatype => "literal", fieldtype => "field" }, + { content => "keywords", datatype => "special", fieldtype => "field" }, + { content => "label", datatype => "literal", fieldtype => "field" }, + { content => "language", datatype => "key", fieldtype => "list" }, + { content => "library", datatype => "literal", fieldtype => "field" }, + { content => "lista", datatype => "literal", fieldtype => "list" }, + { content => "listb", datatype => "literal", fieldtype => "list" }, + { content => "listc", datatype => "literal", fieldtype => "list" }, + { content => "listd", datatype => "literal", fieldtype => "list" }, + { content => "liste", datatype => "literal", fieldtype => "list" }, + { content => "listf", datatype => "literal", fieldtype => "list" }, + { content => "location", datatype => "literal", fieldtype => "list" }, + { content => "mainsubtitle", datatype => "literal", fieldtype => "field" }, + { content => "maintitle", datatype => "literal", fieldtype => "field" }, + { + content => "maintitleaddon", + datatype => "literal", + fieldtype => "field", + }, + { content => "month", datatype => "integer", fieldtype => "field" }, + { content => "namea", datatype => "name", fieldtype => "list" }, + { content => "nameaddon", datatype => "literal", fieldtype => "field" }, + { content => "nameatype", datatype => "key", fieldtype => "field" }, + { content => "nameb", datatype => "name", fieldtype => "list" }, + { content => "namebtype", datatype => "key", fieldtype => "field" }, + { content => "namec", datatype => "name", fieldtype => "list" }, + { content => "namectype", datatype => "key", fieldtype => "field" }, + { content => "note", datatype => "literal", fieldtype => "field" }, + { content => "number", datatype => "literal", fieldtype => "field" }, + { content => "options", datatype => "special", fieldtype => "field" }, + { content => "organization", datatype => "literal", fieldtype => "list" }, + { content => "origday", datatype => "literal", fieldtype => "field" }, + { content => "origendday", datatype => "literal", fieldtype => "field" }, + { content => "origendmonth", datatype => "literal", fieldtype => "field" }, + { + content => "origendyear", + datatype => "literal", + fieldtype => "field", + nullok => "true", + }, + { content => "origlanguage", datatype => "key", fieldtype => "field" }, + { content => "origlocation", datatype => "literal", fieldtype => "list" }, + { content => "origmonth", datatype => "literal", fieldtype => "field" }, + { content => "origpublisher", datatype => "literal", fieldtype => "list" }, + { content => "origtitle", datatype => "literal", fieldtype => "field" }, + { content => "origyear", datatype => "literal", fieldtype => "field" }, + { content => "pages", datatype => "range", fieldtype => "field" }, + { content => "pagetotal", datatype => "literal", fieldtype => "field" }, + { content => "pagination", datatype => "key", fieldtype => "field" }, + { content => "part", datatype => "literal", fieldtype => "field" }, + { + content => "presort", + datatype => "literal", + fieldtype => "field", + skip_output => "true", + }, + { content => "publisher", datatype => "literal", fieldtype => "list" }, + { content => "pubstate", datatype => "key", fieldtype => "field" }, + { content => "related", datatype => "literal", fieldtype => "field" }, + { content => "relatedtype", datatype => "literal", fieldtype => "field" }, + { content => "relatedstring", datatype => "literal", fieldtype => "field" }, + { content => "reprinttitle", datatype => "literal", fieldtype => "field" }, + { content => "series", datatype => "literal", fieldtype => "field" }, + { content => "shortauthor", datatype => "name", fieldtype => "list" }, + { content => "shorteditor", datatype => "name", fieldtype => "list" }, + { content => "shorthand", datatype => "literal", fieldtype => "field" }, + { + content => "shorthandintro", + datatype => "literal", + fieldtype => "field", + }, + { content => "shortjournal", datatype => "literal", fieldtype => "field" }, + { content => "shortseries", datatype => "literal", fieldtype => "field" }, + { content => "shorttitle", datatype => "literal", fieldtype => "field" }, + { + content => "sortkey", + datatype => "literal", + fieldtype => "field", + skip_output => "true", + }, + { + content => "sortname", + datatype => "name", + fieldtype => "list", + skip_output => "true", + }, + { + content => "sorttitle", + datatype => "literal", + fieldtype => "field", + skip_output => "true", + }, + { + content => "sortyear", + datatype => "literal", + fieldtype => "field", + skip_output => "true", + }, + { content => "subtitle", datatype => "literal", fieldtype => "field" }, + { content => "title", datatype => "literal", fieldtype => "field" }, + { content => "titleaddon", datatype => "literal", fieldtype => "field" }, + { content => "translator", datatype => "name", fieldtype => "list" }, + { content => "type", datatype => "key", fieldtype => "field" }, + { content => "url", datatype => "verbatim", fieldtype => "field" }, + { content => "usera", datatype => "literal", fieldtype => "field" }, + { content => "userb", datatype => "literal", fieldtype => "field" }, + { content => "userc", datatype => "literal", fieldtype => "field" }, + { content => "userd", datatype => "literal", fieldtype => "field" }, + { content => "usere", datatype => "literal", fieldtype => "field" }, + { content => "userf", datatype => "literal", fieldtype => "field" }, + { content => "urlday", datatype => "literal", fieldtype => "field" }, + { content => "urlendday", datatype => "literal", fieldtype => "field" }, + { content => "urlendmonth", datatype => "literal", fieldtype => "field" }, + { + content => "urlendyear", + datatype => "literal", + fieldtype => "field", + nullok => "true", + }, + { content => "urlmonth", datatype => "literal", fieldtype => "field" }, + { content => "urlyear", datatype => "literal", fieldtype => "field" }, + { content => "venue", datatype => "literal", fieldtype => "field" }, + { content => "verba", datatype => "verbatim", fieldtype => "field" }, + { content => "verbb", datatype => "verbatim", fieldtype => "field" }, + { content => "verbc", datatype => "verbatim", fieldtype => "field" }, + { content => "version", datatype => "literal", fieldtype => "field" }, + { content => "volume", datatype => "literal", fieldtype => "field" }, + { content => "volumes", datatype => "literal", fieldtype => "field" }, + { content => "xref", datatype => "literal", fieldtype => "field" }, + { content => "year", datatype => "literal", fieldtype => "field" }, + ], + }, + } +); + + +# Set up some encoding aliases to map \inputen{c,x} encoding names to Encode +# It seems that inputen{c,x} has a different idea of nextstep than Encode +# so we push it to MacRoman +define_alias( 'ansinew' => 'cp1252'); # inputenc alias for cp1252 +define_alias( 'applemac' => 'MacRoman'); +define_alias( 'applemacce' => 'MacCentralEurRoman'); +define_alias( 'next' => 'MacRoman'); +define_alias( 'x-mac-roman' => 'MacRoman'); +define_alias( 'x-mac-centeuro' => 'MacCentralEurRoman'); +define_alias( 'x-mac-cyrillic' => 'MacCyrillic'); +define_alias( 'x-nextstep' => 'MacRoman'); +define_alias( 'x-ascii' => 'ascii'); # Encode doesn't resolve this one by default +define_alias( 'lutf8' => 'UTF-8'); # Luatex +define_alias( 'utf8x' => 'UTF-8'); # UCS (old) + +# Defines the scope of each of the BibLaTeX configuration options +our %CONFIG_SCOPE_BIBLATEX = ( + alphaothers => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 0}, + controlversion => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + debug => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + dataonly => {GLOBAL => 0, PER_TYPE => 0, PER_ENTRY => 1}, + displaymode => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + inheritance => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + labelalpha => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 0}, + labelnamespec => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 0}, + labelnumber => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 0}, + labelyear => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 0}, + labelyearspec => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 0}, + maxitems => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + minitems => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + maxnames => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + minnames => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + presort => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 1}, + singletitle => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 0}, + skipbib => {GLOBAL => 0, PER_TYPE => 1, PER_ENTRY => 1}, + skiplab => {GLOBAL => 0, PER_TYPE => 1, PER_ENTRY => 1}, + skiplos => {GLOBAL => 0, PER_TYPE => 1, PER_ENTRY => 1}, + sortalphaothers => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 0}, + sortexclusion => {GLOBAL => 0, PER_TYPE => 1, PER_ENTRY => 0}, + sorting => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + sortlos => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + structure => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + terseinits => {GLOBAL => 1, PER_TYPE => 0, PER_ENTRY => 0}, + uniquename => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 0}, + useauthor => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 1}, + useeditor => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 1}, + useprefix => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 1}, + usetranslator => {GLOBAL => 1, PER_TYPE => 1, PER_ENTRY => 1}, +); + + +1; + +__END__ + +=pod + +=encoding utf-8 + +=head1 NAME + +Biber::Constants - global constants for biber + +=head1 AUTHOR + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entries.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entries.pm new file mode 100644 index 00000000000..90ebff7ce0b --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entries.pm @@ -0,0 +1,111 @@ +package Biber::Entries; +#use feature 'unicode_strings'; + +=encoding utf-8 + +=head1 NAME + +Biber::Entries + +=head2 new + + Initialize a Biber::Entries object + +=cut + +sub new { + my ($class) = @_; + my $self = bless {}, $class; + return $self; +} + +=head2 notnull + + Test for an empty object + +=cut + +sub notnull { + my $self = shift; + my @arr = keys %$self; + return $#arr > -1 ? 1 : 0; +} + +=head2 entry_exists + + Boolean values sub to tell if there is an entry + for the passed citation key. + +=cut + +sub entry_exists { + my $self = shift; + my $citekey = lc(shift); + return defined($self->{$citekey}) ? 1 : 0; +} + +=head2 entry + + Returns a Biber::Entry object for a given + citekey + +=cut + +sub entry { + my $self = shift; + my $citekey = lc(shift); + return $self->{$citekey}; +} + +=head2 sorted_keys + + Returns a sorted array of Biber::Entry object keys + +=cut + +sub sorted_keys { + my $self = shift; + use locale; + return sort keys %$self; +} + +=head2 add_entry + + Adds a Biber::Entry to the Biber::Entries object + +=cut + +sub add_entry { + my $self = shift; + my ($key, $entry) = @_; + $key = lc($key); + $self->{$key} = $entry; + return; +} + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entry.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entry.pm new file mode 100644 index 00000000000..4440a4f3af1 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entry.pm @@ -0,0 +1,397 @@ +package Biber::Entry; +#use feature 'unicode_strings'; + +use List::Util qw( first ); +use Biber::Utils; +use Biber::Constants; +use Data::Dump qw( pp ); +use Log::Log4perl qw( :no_extra_logdie_message ); + +my $logger = Log::Log4perl::get_logger('main'); + +=encoding utf-8 + +=head1 NAME + +Biber::Entry + +=head2 new + + Initialize a Biber::Entry object + +=cut + +sub new { + my $class = shift; + my $obj = shift; + my $self; + if (defined($obj) and ref($obj) eq 'HASH') { + $self = bless $obj, $class; + } + else { + $self = bless {}, $class; + } + return $self; +} + +=head2 clone + + Clone a Biber::Entry object and return a copy + Accepts optionally a key for the copy + +=cut + +sub clone { + my $self = shift; + my $newkey = shift; + my $new = new Biber::Entry; + while (my ($k, $v) = each(%{$self->{datafields}})) { + $new->{datafields}{$k} = $v; + } + # Need to add entrytype + $new->{derivedfields}{entrytype} = $self->{derivedfields}{entrytype}; + # put in key if specified + if ($newkey) { + $new->{derivedfields}{dskey} = $newkey; + $new->{derivedfields}{citekey} = $newkey; + } + return $new; +} + +=head2 notnull + + Test for an empty object + +=cut + +sub notnull { + my $self = shift; + my @arr = keys %$self; + return $#arr > -1 ? 1 : 0; +} + +=head2 set_datafield + + Set a field which is in the bib data file + Only set to null if the field is a nullable one + otherwise if value is null, remove the field + +=cut + +sub set_datafield { + my $self = shift; + my ($key, $val) = @_; + my $struc = Biber::Config->get_structure; + # Only set fields which are either not null or are ok to be null + if ( $struc->is_field_type('nullok', $key) or is_notnull($val)) { + $self->{datafields}{$key} = $val; + } + elsif (is_null($val)) { + delete($self->{datafields}{$key}); + } + return; +} + + +=head2 set_field + + Set a derived field for a Biber::Entry object, that is, a field which was not + an actual bibliography field + +=cut + +sub set_field { + my $self = shift; + my ($key, $val) = @_; + # All derived fields can be null + $self->{derivedfields}{$key} = $val; + return; +} + +=head2 get_field + + Get a field for a Biber::Entry object + +=cut + +sub get_field { + my $self = shift; + my $key = shift; + return $self->{datafields}{$key} if exists($self->{datafields}{$key}); + return $self->{derivedfields}{$key} if exists($self->{derivedfields}{$key}); + return undef; +} + +=head2 get_datafield + + Get a field that was in the original data file + +=cut + +sub get_datafield { + my $self = shift; + my $key = shift; + return $self->{datafields}{$key}; +} + + +=head2 del_field + + Delete a field in a Biber::Entry object + +=cut + +sub del_field { + my $self = shift; + my $key = shift; + delete $self->{datafields}{$key}; + delete $self->{derivedfields}{$key}; + return; +} + +=head2 del_datafield + + Delete an original data source data field in a Biber::Entry object + +=cut + +sub del_datafield { + my $self = shift; + my $key = shift; + delete $self->{datafields}{$key}; + return; +} + + +=head2 field_exists + + Check whether a field exists (even if null) + +=cut + +sub field_exists { + my $self = shift; + my $key = shift; + return (exists($self->{datafields}{$key}) or + exists($self->{derivedfields}{$key})) ? 1 : 0; +} + +=head2 datafields + + Returns a sorted array of the fields which came from the data source + +=cut + +sub datafields { + my $self = shift; + use locale; + return sort keys %{$self->{datafields}}; +} + + +=head2 fields + + Returns a sorted array of all field names, including ones + added during processing which are not necessarily fields + which came from the data file + +=cut + +sub fields { + my $self = shift; + use locale; + my %keys = (%{$self->{derivedfields}}, %{$self->{datafields}}); + return sort keys %keys; +} + +=head2 has_keyword + + Check if a Biber::Entry object has a particular keyword in + in the KEYWORDS field. + +=cut + +sub has_keyword { + my $self = shift; + my $keyword = shift; + if (my $keywords = $self->{datafields}{keywords}) { + return (first {lc($_) eq lc($keyword)} split(/\s*,\s*/, $keywords)) ? 1 : 0; + } + else { + return 0; + } + return undef; # shouldn't get here +} + + + +=head2 add_warning + + Append a warning to a Biber::Entry object + +=cut + +sub add_warning { + my $self = shift; + my $warning = shift; + push @{$self->{derivedfields}{'warnings'}}, $warning; + return; +} + +=head2 set_inherit_from + + Inherit fields from parent entry + + $entry->inherit_from($parententry); + + Takes a second Biber::Entry object as argument + Tailored for set inheritance which is a straight 1:1 inheritance, + excluding certain fields for backwards compatibility + +=cut + +sub set_inherit_from { + my $self = shift; + my $parent = shift; + + # Data source fields + foreach my $field ($parent->datafields) { + next if $self->field_exists($field); # Don't overwrite existing fields + $self->set_datafield($field, $parent->get_field($field)); + } + # Datesplit is a special non datafield and needs to be inherited for any + # validation checks which may occur later + if (my $ds = $parent->get_field('datesplit')) { + $self->set_field('datesplit', $ds); + } + return; +} + +=head2 inherit_from + + Inherit fields from parent entry (as indicated by the crossref field) + + $entry->inherit_from($parententry); + + Takes a second Biber::Entry object as argument + Uses the crossref inheritance specifications from the .bcf + +=cut + +sub inherit_from { + my $self = shift; + my $parent = shift; + my $type = $self->get_field('entrytype'); + my $parenttype = $parent->get_field('entrytype'); + my $inheritance = Biber::Config->getblxoption('inheritance'); + my %processed; + # get defaults + my $defaults = $inheritance->{defaults}; + # global defaults ... + my $inherit_all = $defaults->{inherit_all}; + my $override_target = $defaults->{override_target}; + # override with type_pair specific defaults if they exist ... + foreach my $type_pair (@{$defaults->{type_pair}}) { + if (($type_pair->{source} eq '*' or $type_pair->{source} eq $parenttype) and + ($type_pair->{target} eq '*' or $type_pair->{target} eq $type)) { + $inherit_all = $type_pair->{inherit_all} if $type_pair->{inherit_all}; + $override_target = $type_pair->{override_target} if $type_pair->{override_target}; + } + } + + # First process any fields that have special treatment + foreach my $inherit (@{$inheritance->{inherit}}) { + # Match for this combination of entry and crossref parent? + foreach my $type_pair (@{$inherit->{type_pair}}) { + if (($type_pair->{source} eq '*' or $type_pair->{source} eq $parenttype) and + ($type_pair->{target} eq '*' or $type_pair->{target} eq $type)) { + foreach my $field (@{$inherit->{field}}) { + next unless $parent->field_exists($field->{source}); + $processed{$field->{source}} = 1; + # localise defaults according to field, if specified + my $field_override_target = $field->{override_target} + if $field->{override_target}; + # Skip this field if requested + if ($field->{skip}) { + $processed{$field->{source}} = 1; + } + # Set the field if it doesn't exist or override is requested + elsif (not $self->field_exists($field->{target}) or + $field_override_target eq 'true') { + $logger->debug(" Entry '" . + $self->get_field('dskey') . + "' is inheriting field '" . + $field->{source}. + "' as '" . + $field->{target} . + "' from entry '" . + $parent->get_field('dskey') . + "'"); + $self->set_datafield($field->{target}, $parent->get_field($field->{source})); + } + } + } + } + } + + # Now process the rest of the (original data only) fields, if necessary + if ($inherit_all eq 'true') { + foreach my $field ($parent->datafields) { + next if $processed{$field}; # Skip if we already dealt with this field above + # Set the field if it doesn't exist or override is requested + if (not $self->field_exists($field) or $override_target eq 'true') { + $logger->debug(" Entry '" . + $self->get_field('dskey') . + "' is inheriting field '$field' from entry '" . + $parent->get_field('dskey') . + "'"); + $self->set_datafield($field, $parent->get_field($field)); + } + } + } + # Datesplit is a special non datafield and needs to be inherited for any + # validation checks which may occur later + if (my $ds = $parent->get_field('datesplit')) { + $self->set_field('datesplit', $ds); + } + return; +} + +=head2 dump + + Dump Biber::Entry object + +=cut + +sub dump { + my $self = shift; + return pp($self); +} + + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entry/Name.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entry/Name.pm new file mode 100644 index 00000000000..6fb0899540d --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entry/Name.pm @@ -0,0 +1,506 @@ +package Biber::Entry::Name; +#use feature 'unicode_strings'; + +use Regexp::Common qw( balanced ); +use Data::Dump qw( pp ); + +=encoding utf-8 + +=head1 NAME + +Biber::Entry::Name + +=head2 new + + Initialize a Biber::Entry::Name object, optionally with key=>value arguments. + + Ex: Biber::Entry::Name->new( lastname="Bolzmann" firstname=>"Anna Maria" prefix => "von" ) + +=cut + +sub new { + my ($class, %params) = @_; + if (%params) { + my $name = {}; + foreach my $attr (qw/gender + lastname + lastname_i + lastname_it + firstname + firstname_i + firstname_it + middlename + middlename_i + middlename_it + prefix + prefix_i + prefix_it + suffix + suffix_i + suffix_it + namestring + nameinitstring + strip/) { + if (exists $params{$attr}) { + $name->{$attr} = $params{$attr} + } + } + return bless $name, $class; + } else { + return bless {}, $class; + } +} + +=head2 notnull + + Test for an empty object + +=cut + +sub notnull { + my $self = shift; + my @arr = keys %$self; + return $#arr > -1 ? 1 : 0; +} + + +=head2 was_stripped + + Return boolean to tell if the passed field had braces stripped from the original + +=cut + +sub was_stripped { + my ($self, $part) = @_; + return exists($self->{strip}) ? $self->{strip}{$part} : undef; +} + + +=head2 set_firstname + + Set firstname for a Biber::Entry::Name object + +=cut + +sub set_firstname { + my ($self, $val) = @_; + $self->{firstname} = $val; + return; +} + +=head2 get_firstname + + Get firstname for a Biber::Entry::Name object + +=cut + +sub get_firstname { + my $self = shift; + return $self->{firstname}; +} + +=head2 get_firstname_i + + Get firstname initials for a Biber::Entry::Name object + +=cut + +sub get_firstname_i { + my $self = shift; + return $self->{firstname_i}; +} + +=head2 get_firstname_it + + Get firstname terse initials for a Biber::Entry::Name object + +=cut + +sub get_firstname_it { + my $self = shift; + return $self->{firstname_it}; +} + + +=head2 set_middlename + + Set middlename for a Biber::Entry::Name object + +=cut + +sub set_middlename { + my ($self, $val) = @_; + $self->{middlename} = $val; + return; +} + +=head2 get_middlename + + Get middlename for a Biber::Entry::Name object + +=cut + +sub get_middlename { + my $self = shift; + return $self->{middlename}; +} + +=head2 get_middlename_i + + Get middlename initials for a Biber::Entry::Name object + +=cut + +sub get_middlename_i { + my $self = shift; + return $self->{middlename_i}; +} + +=head2 get_middlename_it + + Get middlename terse initials for a Biber::Entry::Name object + +=cut + +sub get_middlename_it { + my $self = shift; + return $self->{middlename_it}; +} + + +=head2 set_lastname + + Set lastname for a Biber::Entry::Name object + +=cut + +sub set_lastname { + my ($self, $val) = @_; + $self->{lastname} = $val; + return; +} + +=head2 get_lastname + + Get lastname for a Biber::Entry::Name object + +=cut + +sub get_lastname { + my $self = shift; + return $self->{lastname}; +} + +=head2 get_lastname_i + + Get lastname initials for a Biber::Entry::Name object + +=cut + +sub get_lastname_i { + my $self = shift; + return $self->{lastname_i}; +} + +=head2 get_lastname_it + + Get lastname terse initials for a Biber::Entry::Name object + +=cut + +sub get_lastname_it { + my $self = shift; + return $self->{lastname_it}; +} + + +=head2 set_suffix + + Set suffix for a Biber::Entry::Name object + +=cut + +sub set_suffix { + my ($self, $val) = @_; + $self->{suffix} = $val; + return; +} + +=head2 get_suffix + + Get suffix for a Biber::Entry::Name object + +=cut + +sub get_suffix { + my $self = shift; + return $self->{suffix}; +} + +=head2 get_suffix_i + + Get suffix initials for a Biber::Entry::Name object + +=cut + +sub get_suffix_i { + my $self = shift; + return $self->{suffix_i}; +} + +=head2 get_suffix_it + + Get suffix terse initials for a Biber::Entry::Name object + +=cut + +sub get_suffix_it { + my $self = shift; + return $self->{suffix_it}; +} + + +=head2 set_prefix + + Set prefix for a Biber::Entry::Name object + +=cut + +sub set_prefix { + my ($self, $val) = @_; + $self->{prefix} = $val; + return; +} + +=head2 get_prefix + + Get prefix for a Biber::Entry::Name object + +=cut + +sub get_prefix { + my $self = shift; + return $self->{prefix}; +} + +=head2 get_prefix_i + + Get prefix initials for a Biber::Entry::Name object + +=cut + +sub get_prefix_i { + my $self = shift; + return $self->{prefix_i}; +} + +=head2 get_prefix_it + + Get prefix terse initials for a Biber::Entry::Name object + +=cut + +sub get_prefix_it { + my $self = shift; + return $self->{prefix_it}; +} + + +=head2 set_gender + + Set gender for a Biber::Entry::Name object + +=cut + +sub set_gender { + my ($self, $val) = @_; + $self->{gender} = $val; + return; +} + +=head2 get_gender + + Get gender for a Biber::Entry::Name object + +=cut + +sub get_gender { + my $self = shift; + return $self->{gender}; +} + + + +=head2 set_namestring + + Set namestring for a Biber::Entry::Name object + +=cut + +sub set_namestring { + my ($self, $val) = @_; + $self->{namestring} = $val; + return; +} + +=head2 get_namestring + + Get namestring for a Biber::Entry::Name object + +=cut + +sub get_namestring { + my $self = shift; + return $self->{namestring}; +} + +=head2 set_nameinitstring + + Set nameinitstring for a Biber::Entry::Name object + +=cut + +sub set_nameinitstring { + my ($self, $val) = @_; + $self->{nameinitstring} = $val; + return; +} + +=head2 get_nameinitstring + + Get nameinitstring for a Biber::Entry::Name object + +=cut + +sub get_nameinitstring { + my $self = shift; + return $self->{nameinitstring}; +} + +=head2 name_to_bbl { + + Return bbl data for a name + +=cut + +sub name_to_bbl { + my $self = shift; + + # lastname is always defined + my $ln = $self->get_lastname; + if ($self->was_stripped('lastname')) { + $ln = Biber::Utils::add_outer($ln); + } + my $lni = Biber::Config->getblxoption('terseinits') ? $self->get_lastname_it : $self->get_lastname_i; + + # firstname + my $fn; + my $fni; + if ($fn = $self->get_firstname) { + if ($self->was_stripped('firstname')) { + $fn = Biber::Utils::add_outer($fn); + } + $fni = Biber::Config->getblxoption('terseinits') ? $self->get_firstname_it : $self->get_firstname_i; + } + else { + $fn = ''; + $fni = ''; + } + + # middlename + my $mn; + my $mni; + if ($mn = $self->get_middlename) { + $mni = Biber::Config->getblxoption('terseinits') ? $self->get_middlename_it : $self->get_middlename_i; + } + else { + $mn = ''; + $mni = ''; + } + + # prefix + my $pre; + my $prei; + if ($pre = $self->get_prefix) { + if ($self->was_stripped('prefix')) { + $pre = Biber::Utils::add_outer($pre); + } + $prei = Biber::Config->getblxoption('terseinits') ? $self->get_prefix_it : $self->get_prefix_i; + } + else { + $pre = ''; + $prei = ''; + } + + # suffix + my $suf; + my $sufi; + if ($suf = $self->get_suffix) { + if ($self->was_stripped('suffix')) { + $suf = Biber::Utils::add_outer($suf); + } + $sufi = Biber::Config->getblxoption('terseinits') ? $self->get_suffix_it : $self->get_suffix_i; + } + else { + $suf = ''; + $sufi = ''; + } + + # Can't just replace all spaces in first names with "~" as this could + # potentially be too long and would do nasty line-break things in LaTeX + # So, be a bit picky and only attach initials/protected things + # J. Frank -> J.~Frank + # {J.\,P.} Frank -> {J.\,P.}~Frank + $fn =~ s/(\p{Lu}\.|$RE{balanced}{-parens=>'{}'})\s+/$1~/g; + # Bernard H. -> Bernard~H. + # Bernard {H.\,P.} -> Bernard~{H.\,P.} + $fn =~ s/\s+(\p{Lu}\.|$RE{balanced}{-parens=>'{}'})/~$1/g; + $pre =~ s/\s/~/g if $pre; # van der -> van~der + # BIBLATEXML supports middle names + if ($self->get_middlename) { + return " {{$ln}{$lni}{$fn}{$fni}{$mn}{$mni}{$pre}{$prei}{$suf}{$sufi}}%\n"; + } + else { + return " {{$ln}{$lni}{$fn}{$fni}{$pre}{$prei}{$suf}{$sufi}}%\n"; + } +} + + +=head2 dump + + Dump Biber::Entry::Name object + +=cut + +sub dump { + my $self = shift; + return pp($self); +} + + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entry/Names.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entry/Names.pm new file mode 100644 index 00000000000..72cb7dc400d --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Entry/Names.pm @@ -0,0 +1,158 @@ +package Biber::Entry::Names; +#use feature 'unicode_strings'; + +use Data::Dump; + +=encoding utf-8 + +=head1 NAME + +Biber::Entry::Names + +=head2 new + + Initialize a Biber::Entry::Names object + +=cut + +sub new { + my $class = shift; + return bless [], $class; +} + + +=head2 notnull + + Test for an empty object + +=cut + +sub notnull { + my $self = shift; + my @arr = @$self; + return $#arr > -1 ? 1 : 0; +} + +=head2 names + + Return ref to array of all Biber::Entry::Name objects + in object + +=cut + +sub names { + my $self = shift; + return $self; +} + +=head2 add_element + + Add a Biber::Entry::Name object to the Biber::Entry::Names + object + +=cut + +sub add_element { + my $self = shift; + my $name_obj = shift; + push @$self, $name_obj; + return; +} + +=head2 count_elements + + Returns the number of Biber::Entry::Name objects in the object + +=cut + +sub count_elements { + my $self = shift; + return scalar @$self; +} + +=head2 nth_element + + Returns the nth Biber::Entry::Name object in the object + +=cut + +sub nth_element { + my $self = shift; + my $n = shift; + return @$self[$n-1]; +} + +=head2 first_n_elements + + Returns a new Biber::Entry::Names object containing only + the first n entries of $self + +=cut + +sub first_n_elements { + my $self = shift; + my $n = shift; + return bless [ splice(@$self, 0, $n) ], Biber::Entry::Names; +} + +=head2 del_last_element + + Deletes the last Biber::Entry::Name object in the object + +=cut + +sub del_last_element { + my $self = shift; + pop(@$self); # Don't want the return value of this! + return; +} + +=head2 last_element + + Returns the last Biber::Entry::Name object in the object + +=cut + +sub last_element { + my $self = shift; + return @$self[-1]; +} + +=head2 dump + + Dump a Biber::Entry::Name object for debugging purposes + +=cut + +sub dump { + my $self = shift; + dd($self); + return; +} + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/biblatexml.dcf b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/biblatexml.dcf new file mode 100644 index 00000000000..e17ec28257f --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/biblatexml.dcf @@ -0,0 +1,145 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../../../data/schemata/dcf.rnc" type="compact"?> +<dcf:driver-control driver="biblatexml" xmlns:dcf="https://sourceforge.net/projects/biber"> + <!-- + These entry type aliases we might find in the the datasource so + Since biblatexml is specifically for biblatex, there should be no need + for entrytype aliases - a biblatexml file should have only what biblatex expects + --> + + <!-- + Field handlers + --> + <dcf:fields> + <!-- date fields --> + <dcf:field name="date" handler="date"/> + <!-- list fields --> + <dcf:field name="institution" handler="list"/> + <dcf:field name="language" handler="list"/> + <dcf:field name="lista" handler="list"/> + <dcf:field name="listb" handler="list"/> + <dcf:field name="listc" handler="list"/> + <dcf:field name="listd" handler="list"/> + <dcf:field name="liste" handler="list"/> + <dcf:field name="listf" handler="list"/> + <dcf:field name="location" handler="list"/> + <dcf:field name="organization" handler="list"/> + <dcf:field name="origlocation" handler="list"/> + <dcf:field name="origpublisher" handler="list"/> + <dcf:field name="publisher" handler="list"/> + <!-- name fields --> + <dcf:field name="afterword" handler="name"/> + <dcf:field name="annotator" handler="name"/> + <dcf:field name="author" handler="name"/> + <dcf:field name="bookauthor" handler="name"/> + <dcf:field name="commentator" handler="name"/> + <dcf:field name="editor" handler="name"/> + <dcf:field name="editora" handler="name"/> + <dcf:field name="editorb" handler="name"/> + <dcf:field name="editorc" handler="name"/> + <dcf:field name="foreword" handler="name"/> + <dcf:field name="holder" handler="name"/> + <dcf:field name="introduction" handler="name"/> + <dcf:field name="namea" handler="name"/> + <dcf:field name="nameb" handler="name"/> + <dcf:field name="namec" handler="name"/> + <dcf:field name="shortauthor" handler="name"/> + <dcf:field name="shorteditor" handler="name"/> + <dcf:field name="sortname" handler="name"/> + <dcf:field name="translator" handler="name"/> + <!-- range fields --> + <dcf:field name="pages" handler="range"/> + <!-- verbatim fields --> + <dcf:field name="abstract" handler="verbatim"/> + <dcf:field name="addendum" handler="verbatim"/> + <dcf:field name="annotation" handler="verbatim"/> + <dcf:field name="authortype" handler="verbatim"/> + <dcf:field name="bookpagination" handler="verbatim"/> + <dcf:field name="booksubtitle" handler="verbatim"/> + <dcf:field name="booktitle" handler="verbatim"/> + <dcf:field name="booktitleaddon" handler="verbatim"/> + <dcf:field name="chapter" handler="verbatim"/> + <dcf:field name="crossref" handler="verbatim"/> + <dcf:field name="day" handler="verbatim"/> + <dcf:field name="edition" handler="verbatim"/> + <dcf:field name="editoratype" handler="verbatim"/> + <dcf:field name="editorbtype" handler="verbatim"/> + <dcf:field name="editorctype" handler="verbatim"/> + <dcf:field name="editortype" handler="verbatim"/> + <dcf:field name="eid" handler="verbatim"/> + <dcf:field name="entryset" handler="verbatim"/> + <dcf:field name="entrysubtype" handler="verbatim"/> + <dcf:field name="eventtitle" handler="verbatim"/> + <dcf:field name="execute" handler="verbatim"/> + <dcf:field name="hyphenation" handler="verbatim"/> + <dcf:field name="indexsorttitle" handler="verbatim"/> + <dcf:field name="indextitle" handler="verbatim"/> + <dcf:field name="isan" handler="verbatim"/> + <dcf:field name="isbn" handler="verbatim"/> + <dcf:field name="ismn" handler="verbatim"/> + <dcf:field name="isrn" handler="verbatim"/> + <dcf:field name="issn" handler="verbatim"/> + <dcf:field name="issue" handler="verbatim"/> + <dcf:field name="issuesubtitle" handler="verbatim"/> + <dcf:field name="issuetitle" handler="verbatim"/> + <dcf:field name="iswc" handler="verbatim"/> + <dcf:field name="journalsubtitle" handler="verbatim"/> + <dcf:field name="journaltitle" handler="verbatim"/> + <dcf:field name="label" handler="verbatim"/> + <dcf:field name="library" handler="verbatim"/> + <dcf:field name="mainsubtitle" handler="verbatim"/> + <dcf:field name="maintitle" handler="verbatim"/> + <dcf:field name="maintitleaddon" handler="verbatim"/> + <dcf:field name="month" handler="verbatim"/> + <dcf:field name="nameaddon" handler="verbatim"/> + <dcf:field name="nameatype" handler="verbatim"/> + <dcf:field name="namebtype" handler="verbatim"/> + <dcf:field name="namectype" handler="verbatim"/> + <dcf:field name="note" handler="verbatim"/> + <dcf:field name="number" handler="verbatim"/> + <dcf:field name="origlanguage" handler="verbatim"/> + <dcf:field name="origtitle" handler="verbatim"/> + <dcf:field name="pagetotal" handler="verbatim"/> + <dcf:field name="pagination" handler="verbatim"/> + <dcf:field name="part" handler="verbatim"/> + <dcf:field name="presort" handler="verbatim"/> + <dcf:field name="pubstate" handler="verbatim"/> + <dcf:field name="related" handler="verbatim"/> + <dcf:field name="relatedtype" handler="verbatim"/> + <dcf:field name="series" handler="verbatim"/> + <dcf:field name="shorthand" handler="verbatim"/> + <dcf:field name="shorthandintro" handler="verbatim"/> + <dcf:field name="shortjournal" handler="verbatim"/> + <dcf:field name="shortseries" handler="verbatim"/> + <dcf:field name="shorttitle" handler="verbatim"/> + <dcf:field name="sortkey" handler="verbatim"/> + <dcf:field name="sorttitle" handler="verbatim"/> + <dcf:field name="sortyear" handler="verbatim"/> + <dcf:field name="subtitle" handler="verbatim"/> + <dcf:field name="title" handler="verbatim"/> + <dcf:field name="titleaddon" handler="verbatim"/> + <dcf:field name="type" handler="verbatim"/> + <dcf:field name="usera" handler="verbatim"/> + <dcf:field name="userb" handler="verbatim"/> + <dcf:field name="userc" handler="verbatim"/> + <dcf:field name="userd" handler="verbatim"/> + <dcf:field name="usere" handler="verbatim"/> + <dcf:field name="userf" handler="verbatim"/> + <dcf:field name="venue" handler="verbatim"/> + <dcf:field name="version" handler="verbatim"/> + <dcf:field name="volume" handler="verbatim"/> + <dcf:field name="volumes" handler="verbatim"/> + <dcf:field name="xref" handler="verbatim"/> + <dcf:field name="year" handler="verbatim"/> + <dcf:field name="keywords" handler="verbatim"/> + <dcf:field name="options" handler="verbatim"/> + <dcf:field name="doi" handler="verbatim"/> + <dcf:field name="eprint" handler="verbatim"/> + <dcf:field name="file" handler="verbatim"/> + <dcf:field name="url" handler="verbatim"/> + <dcf:field name="verba" handler="verbatim"/> + <dcf:field name="verbb" handler="verbatim"/> + <dcf:field name="verbc" handler="verbatim"/> + </dcf:fields> +</dcf:driver-control> + diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/biblatexml.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/biblatexml.pm new file mode 100644 index 00000000000..a16d06e14f3 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/biblatexml.pm @@ -0,0 +1,686 @@ +package Biber::Input::file::biblatexml; +#use feature 'unicode_strings'; +use strict; +use warnings; +use Carp; + +use Biber::Constants; +use Biber::Entries; +use Biber::Entry; +use Biber::Entry::Names; +use Biber::Entry::Name; +use Biber::Sections; +use Biber::Section; +use Biber::Structure; +use Biber::Utils; +use Biber::Config; +use Encode; +use File::Spec; +use Log::Log4perl qw(:no_extra_logdie_message); +use base 'Exporter'; +use List::AllUtils qw(first uniq); +use XML::LibXML; +use XML::LibXML::Simple; +use Readonly; +use Data::Dump qw(dump); + +my $logger = Log::Log4perl::get_logger('main'); + +Readonly::Scalar our $BIBLATEXML_NAMESPACE_URI => 'http://biblatex-biber.sourceforge.net/biblatexml'; +Readonly::Scalar our $NS => 'bib'; + +# Handlers for field types +# The names of these have nothing to do whatever with the biblatex field types +# They just started out copying them - they are categories of this specific +# data source date types +my %handlers = ( + 'date' => \&_date, + 'list' => \&_list, + 'name' => \&_name, + 'range' => \&_range, + 'related' => \&_related, + 'verbatim' => \&_verbatim +); + +# we assume that the driver config file is in the same dir as the driver: +(my $vol, my $driver_path, undef) = File::Spec->splitpath( $INC{"Biber/Input/file/biblatexml.pm"} ); + +# Deal with the strange world of Par::Packer paths, see similar code in Biber.pm +my $dcf; +if ($driver_path =~ m|/par\-| and $driver_path !~ m|/inc|) { # a mangled PAR @INC path + $dcf = File::Spec->catpath($vol, "$driver_path/inc/lib/Biber/Input/file", 'biblatexml.dcf'); +} +else { + $dcf = File::Spec->catpath($vol, $driver_path, 'biblatexml.dcf'); +} + +# Read driver config file +my $dcfxml = XML::LibXML::Simple::XMLin($dcf, + 'ForceContent' => 1, + 'ForceArray' => [ + qr/\Aentry-type\z/, + qr/\Afield\z/, + ], + 'NsStrip' => 1, + 'KeyAttr' => ['name']); + +# Check we have the right driver +unless ($dcfxml->{driver} eq 'biblatexml') { + $logger->logdie("Expected driver config type 'biblatexml', got '" . $dcfxml->{driver} . "'"); +} + +=head2 extract_entries + + Main data extraction routine. + Accepts a data source identifier (filename in this case), + preprocesses the file and then looks for the passed keys, + creating entries when it finds them and passes out an + array of keys it didn't find. + +=cut + +sub extract_entries { + my ($biber, $filename, $keys) = @_; + my $secnum = $biber->get_current_section; + my $section = $biber->sections->get_section($secnum); + my $bibentries = $section->bibentries; + my @rkeys = @$keys; + + $logger->trace("Entering extract_entries()"); + + # First make sure we can find the biblatexml file + my $trying_filename = $filename; + unless ($filename = locate_biber_file($filename)) { + $logger->logdie("Cannot find file '$trying_filename'!") + } + + # Set up XML parser and namespace + my $parser = XML::LibXML->new(); + my $bltxml = $parser->parse_file($filename) + or $logger->logcroak("Can't parse file $filename"); + my $xpc = XML::LibXML::XPathContext->new($bltxml); + $xpc->registerNs($NS, $BIBLATEXML_NAMESPACE_URI); + + + + if ($section->is_allkeys) { + $logger->debug("All citekeys will be used for section '$secnum'"); + # Loop over all entries, creating objects + foreach my $entry ($xpc->findnodes("//$NS:entry")) { + $logger->debug('Parsing BibLaTeXML entry object ' . $entry->nodePath); + # We have to pass the datasource cased key to + # create_entry() as this sub needs to know the original case of the + # citation key so we can do case-insensitive key/entry comparisons + # later but we need to put the original citation case when we write + # the .bbl. If we lowercase before this, we lose this information. + # Of course, with allkeys, "citation case" means "datasource entry case" + + # If an entry has no key, ignore it and warn + unless ($entry->hasAttribute('id')) { + $logger->warn("Invalid or undefined BibLaTeXML entry key in file '$filename', skipping ..."); + $biber->{warnings}++; + next; + } + create_entry($biber, $entry->getAttribute('id'), $entry); + } + + # if allkeys, push all bibdata keys into citekeys (if they are not already there) + $section->add_citekeys($section->bibentries->sorted_keys); + $logger->debug("Added all citekeys to section '$secnum': " . join(', ', $section->get_citekeys)); + } + else { + # loop over all keys we're looking for and create objects + $logger->debug('Wanted keys: ' . join(', ', @$keys)); + foreach my $wanted_key (@$keys) { + $logger->debug("Looking for key '$wanted_key' in BibLaTeXML file '$filename'"); + # Cache index keys are lower-cased. This next line effectively implements + # case insensitive citekeys + # This will also get the first match it finds + if (my @entries = $xpc->findnodes("//$NS:entry[\@id='" . lc($wanted_key) . "']")) { + my $entry; + # Check to see if there is more than one entry with this key and warn if so + if ($#entries > 0) { + $logger->warn("Found more than one entry for key '$wanted_key' in '$filename': " . + join(',', map {$_->getAttribute('id')} @entries) . ' - using the first one!'); + $biber->{warnings}++; + } + $entry = $entries[0]; + + $logger->debug("Found key '$wanted_key' in BibLaTeXML file '$filename'"); + $logger->debug('Parsing BibLaTeXML entry object ' . $entry->nodePath); + # See comment above about the importance of the case of the key + # passed to create_entry() + create_entry($biber, $wanted_key, $entry); + # found a key, remove it from the list of keys we want + @rkeys = grep {$wanted_key ne $_} @rkeys; + } + $logger->debug('Wanted keys now: ' . join(', ', @rkeys)); + } + } + + return @rkeys; +} + + + + +=head2 create_entry + + Create a Biber::Entry object from an entry found in a biblatexml data source + +=cut + +sub create_entry { + my ($biber, $dskey, $entry) = @_; + my $secnum = $biber->get_current_section; + my $section = $biber->sections->get_section($secnum); + my $struc = Biber::Config->get_structure; + my $bibentries = $section->bibentries; + + # Want a version of the key that is the same case as any citations which + # reference it, in case they are different. We use this as the .bbl + # entry key + # In case of allkeys, this will just be the datasource key as ->get_citekeys + # returns an empty list + my $citekey = first {lc($dskey) eq lc($_)} $section->get_citekeys; + $citekey = $dskey unless $citekey; + my $lc_key = lc($dskey); + + my $bibentry = new Biber::Entry; + # We record the original keys of both the datasource and citation. They may differ in case. + $bibentry->set_field('dskey', $dskey); + $bibentry->set_field('citekey', $citekey); + + # Set entrytype taking note of any aliases for this datasource driver + if (my $ealias = $dcfxml->{'entry-types'}{'entry-type'}{$entry->getAttribute('entrytype')}) { + $bibentry->set_field('entrytype', $ealias->{aliasof}{content}); + if (my $alsoset = $ealias->{alsoset}) { + unless ($bibentry->field_exists($alsoset->{target})) { + $bibentry->set_field($alsoset->{target}, $alsoset->{value}); + } + } + } + else { + $bibentry->set_field('entrytype', $entry->getAttribute('entrytype')); + } + + # Some entry attributes + if (my $hp = $entry->getAttribute('howpublished')) { + $bibentry->set_datafield('howpublished', $hp); + } + + # We put all the fields we find modulo field aliases into the object. + # Validation happens later and is not datasource dependent + foreach my $f (uniq map {$_->nodeName()} $entry->findnodes("*")) { + + # We have to process local options as early as possible in order + # to make them available for things that need them like name parsing + if (_norm($entry->nodeName) eq 'options') { + if (my $node = _resolve_display_mode($biber, $entry, 'options')) { + $biber->process_entry_options($dskey, $node->textContent()); + } + } + + if (my $fm = $dcfxml->{fields}{field}{_norm($f)}) { + my $to = $f; # By default, field to set internally is the same as data source + # Redirect any alias + if (my $alias = $fm->{aliasof}) { + $logger->debug("Found alias '$alias' of field '$f' in entry '$dskey'"); + # If both a field and its alias is set, warn and delete alias field + if ($entry->findnodes("./$NS:$alias")) { + # Warn as that's wrong + $biber->biber_warn($bibentry, "Field '$f' is aliased to field '$alias' but both are defined in entry with key '$dskey' - skipping field '$f'"); + next; + } + $fm = $dcfxml->{fields}{field}{$alias}; + $to = "$NS:$alias"; # Field to set internally is the alias + } + &{$handlers{$fm->{handler}}}($biber, $bibentry, $entry, $f, $to, $dskey); + } + # Default if no explicit way to set the field + else { + my $node = _resolve_display_mode($biber, $entry, $f); + my $value = $node->textContent(); + $bibentry->set_datafield($f, $value); + } + } + + $bibentry->set_field('datatype', 'biblatexml'); + $bibentries->add_entry($lc_key, $bibentry); + + return; +} + + +# Related entries +sub _related { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + # Pick out the node with the right mode + my $node = _resolve_display_mode($biber, $entry, $f); + # TODO + # Current biblatex data model doesn't allow for multiple items here + foreach my $item ($node->findnodes("./$NS:item")) { + $bibentry->set_datafield('related', $item->getAttribute('ids')); + $bibentry->set_datafield('relatedtype', $item->getAttribute('type')); + if (my $string = $item->getAttribute('string')) { + $bibentry->set_datafield('relatedstring', $string); + } + } + return; +} + +# Verbatim fields +sub _verbatim { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + # Pick out the node with the right mode + my $node = _resolve_display_mode($biber, $entry, $f); + + # eprint is special case + if ($f eq "$NS:eprint") { + $bibentry->set_datafield('eprinttype', $node->getAttribute('type')); + if (my $ec = $node->getAttribute('class')) { + $bibentry->set_datafield('eprintclass', $ec); + } + } + else { + $bibentry->set_datafield(_norm($to), $node->textContent()); + } + return; +} + +# List fields +sub _list { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + # Pick out the node with the right mode + my $node = _resolve_display_mode($biber, $entry, $f); + $bibentry->set_datafield(_norm($to), _split_list($node)); + return; +} + +# Range fields +sub _range { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + # Pick out the node with the right mode + my $node = _resolve_display_mode($biber, $entry, $f); + # List of ranges/values + if (my @rangelist = $node->findnodes("./$NS:list/$NS:item")) { + my $rl; + foreach my $range (@rangelist) { + push @$rl, _parse_range_list($range); + } + $bibentry->set_datafield(_norm($to), $rl); + } + # Simple range + elsif (my $range = $node->findnodes("./$NS:range")->get_node(1)) { + $bibentry->set_datafield(_norm($to), [ _parse_range_list($range) ]); + } + # simple list + else { + $bibentry->set_datafield(_norm($to), $node->textContent()); + } + return; +} + +# Date fields +sub _date { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + foreach my $node ($entry->findnodes("./$f")) { + my $datetype = $node->getAttribute('datetype') // ''; + # We are not validating dates here, just syntax parsing + my $date_re = qr/(\d{4}) # year + (?:-(\d{2}))? # month + (?:-(\d{2}))? # day + /xms; + if (my $start = $node->findnodes("./$NS:start")) { # Date range + my $end = $node->findnodes("./$NS:end"); + # Start of range + if (my ($byear, $bmonth, $bday) = + $start->get_node(1)->textContent() =~ m|\A$date_re\z|xms) { + $bibentry->set_datafield($datetype . 'year', $byear) if $byear; + $bibentry->set_datafield($datetype . 'month', $bmonth) if $bmonth; + $bibentry->set_datafield($datetype . 'day', $bday) if $bday; + } + else { + $biber->biber_warn($bibentry, "Invalid format '" . $start->get_node(1)->textContent() . "' of date field '$f' range start in entry '$dskey' - ignoring"); + } + + # End of range + if (my ($eyear, $emonth, $eday) = + $end->get_node(1)->textContent() =~ m|\A(?:$date_re)?\z|xms) { + $bibentry->set_datafield($datetype . 'endmonth', $emonth) if $emonth; + $bibentry->set_datafield($datetype . 'endday', $eday) if $eday; + if ($eyear) { # normal range + $bibentry->set_datafield($datetype . 'endyear', $eyear); + } + else { # open ended range - endyear is defined but empty + $bibentry->set_datafield($datetype . 'endyear', ''); + } + } + else { + $biber->biber_warn($bibentry, "Invalid format '" . $end->get_node(1)->textContent() . "' of date field '$f' range end in entry '$dskey' - ignoring"); + } + } + else { # Simple date + if (my ($byear, $bmonth, $bday) = + $node->textContent() =~ m|\A$date_re\z|xms) { + # did this entry get its year/month fields from splitting an ISO8601 date field? + # We only need to know this for date, year/month as year/month can also + # be explicitly set. It makes a difference on how we do any potential future + # date validation + $bibentry->set_field('datesplit', 1) if $datetype eq ''; + $bibentry->set_datafield($datetype . 'year', $byear) if $byear; + $bibentry->set_datafield($datetype . 'month', $bmonth) if $bmonth; + $bibentry->set_datafield($datetype . 'day', $bday) if $bday; + } + else { + $biber->biber_warn($bibentry, "Invalid format '" . $node->textContent() . "' of date field '$f' in entry '$dskey' - ignoring"); + } + } + } + return; +} + +# Name fields +sub _name { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + # Pick out the node with the right mode + my $node = _resolve_display_mode($biber, $entry, $f); + my $useprefix = Biber::Config->getblxoption('useprefix', $bibentry->get_field('entrytype'), lc($dskey)); + my $names = new Biber::Entry::Names; + foreach my $name ($node->findnodes("./$NS:person")) { + $names->add_element(parsename($name, $f, {useprefix => $useprefix})); + } + $bibentry->set_datafield(_norm($to), $names); + return; +} + +=head2 parsename + + Given a name node, this function returns a Biber::Entry::Name object + + Returns an object which internally looks a bit like this: + + { firstname => 'John', + firstname_i => 'J.', + firstname_it => 'J', + middlename => 'Fred', + middlename_i => 'F.', + middlename_it => 'F', + lastname => 'Doe', + lastname_i => 'D.', + lastname_it => 'D', + prefix => undef, + prefix_i => undef, + prefix_it => undef, + suffix => undef, + suffix_i => undef, + suffix_it => undef, + namestring => 'Doe, John Fred', + nameinitstring => 'Doe_JF', + gender => sm + +=cut + +sub parsename { + my ($node, $fieldname, $opts) = @_; + $logger->debug('Parsing BibLaTeXML name object ' . $node->nodePath); + my $usepre = $opts->{useprefix}; + + my %namec; + + my $gender = $node->getAttribute('gender'); + + foreach my $n ('last', 'first', 'middle', 'prefix', 'suffix') { + # If there is a name component node for this component ... + if (my $nc_node = $node->findnodes("./$NS:$n")->get_node(1)) { + # name component with parts + if (my @parts = map {$_->textContent()} $nc_node->findnodes("./$NS:namepart")) { + $namec{$n} = _join_name_parts(\@parts); + $logger->debug("Found name component '$n': " . $namec{$n}); + if (my $nin = $node->findnodes("./$NS:${n}initial")->get_node(1)) { + my $ni = $nin->textContent(); + $ni =~ s/\.\z//xms; # normalise initials to without period + $ni =~ s/\s+/~/xms; # normalise spaces to ties + $namec{"${n}_it"} = $ni; + $namec{"${n}_i"} = $ni . '.'; + } + else { + ($namec{"${n}_i"}, $namec{"${n}_it"}) = _gen_initials(\@parts); + } + } + # with no parts + elsif (my $t = $nc_node->textContent()) { + $namec{$n} = $t; + $logger->debug("Found name component '$n': $t"); + if (my $nin = $node->findnodes("./$NS:${n}initial")->get_node(1)) { + my $ni = $nin->textContent(); + $ni =~ s/\.\z//xms; # normalise initials to without period + $ni =~ s/\s+/~/xms; # normalise spaces to ties + $namec{"${n}_it"} = $ni; + $namec{"${n}_i"} = $ni . '.'; + } + else { + ($namec{"${n}_i"}, $namec{"${n}_it"}) = _gen_initials([$t]); + } + } + } + } + + # Only warn about lastnames since there should always be one + $logger->warn("Couldn't determine Lastname for name XPath: " . $node->nodePath) unless exists($namec{last}); + + my $namestring = ''; + + # prefix + if (my $p = $namec{prefix}) { + $namestring .= "$p "; + } + + # lastname + if (my $l = $namec{last}) { + $namestring .= "$l, "; + } + + # suffix + if (my $s = $namec{suffix}) { + $namestring .= "$s, "; + } + + # firstname + if (my $f = $namec{first}) { + $namestring .= "$f"; + } + + # middlename + if (my $m = $namec{middle}) { + $namestring .= "$m, "; + } + + # Remove any trailing comma and space if, e.g. missing firstname + # Replace any nbspes + $namestring =~ s/,\s+\z//xms; + $namestring =~ s/~/ /gxms; + + # Construct $nameinitstring + my $nameinitstr = ''; + $nameinitstr .= $namec{prefix_it} . '_' if ( $usepre and exists($namec{prefix}) ); + $nameinitstr .= $namec{last} if exists($namec{last}); + $nameinitstr .= '_' . $namec{suffix_it} if exists($namec{suffix}); + $nameinitstr .= '_' . $namec{first_it} if exists($namec{first}); + $nameinitstr .= '_' . $namec{middle_it} if exists($namec{middle}); + $nameinitstr =~ s/\s+/_/g; + $nameinitstr =~ s/~/_/g; + + return Biber::Entry::Name->new( + firstname => $namec{first} // undef, + firstname_i => exists($namec{first}) ? $namec{first_i} : undef, + firstname_it => exists($namec{first}) ? $namec{first_it} : undef, + middlename => $namec{middle} // undef, + middlename_i => exists($namec{middle}) ? $namec{middle_i} : undef, + middlename_it => exists($namec{middle}) ? $namec{middle_it} : undef, + lastname => $namec{last} // undef, + lastname_i => exists($namec{last}) ? $namec{last_i} : undef, + lastname_it => exists($namec{last}) ? $namec{last_it} : undef, + prefix => $namec{prefix} // undef, + prefix_i => exists($namec{prefix}) ? $namec{prefix_i} : undef, + prefix_it => exists($namec{prefix}) ? $namec{prefix_it} : undef, + suffix => $namec{suffix} // undef, + suffix_i => exists($namec{suffix}) ? $namec{suffix_i} : undef, + suffix_it => exists($namec{suffix}) ? $namec{suffix_it} : undef, + namestring => $namestring, + nameinitstring => $nameinitstr, + gender => $gender + ); +} + + + + +# Joins name parts using BibTeX tie algorithm. Ties are added: +# +# 1. After the first part if it is less than three characters long +# 2. Before the last part +sub _join_name_parts { + my $parts = shift; + # special case - 1 part + if ($#{$parts} == 0) { + return $parts->[0]; + } + # special case - 2 parts + if ($#{$parts} == 1) { + return $parts->[0] . '~' . $parts->[1]; + } + my $namestring = $parts->[0]; + $namestring .= length($parts->[0]) < 3 ? '~' : ' '; + $namestring .= join(' ', @$parts[1 .. ($#{$parts} - 1)]); + $namestring .= '~' . $parts->[$#{$parts}]; + return $namestring; +} + +# Passed an array ref of strings, returns an array of two strings, +# the first is the TeX initials and the second the terse initials +sub _gen_initials { + my $strings_ref = shift; + my @strings; + foreach my $str (@$strings_ref) { + my $chr = substr($str, 0, 1); + # Keep diacritics with their following characters + if ($chr =~ m/\p{Dia}/) { + push @strings, substr($str, 0, 2); + } + else { + push @strings, substr($str, 0, 1); + } + } + return (join('.~', @strings) . '.', join('', @strings)); +} + +# parses a range and returns a ref to an array of start and end values +sub _parse_range_list { + my $rangenode = shift; + my $start = ''; + my $end = ''; + if (my $s = $rangenode->findnodes("./$NS:start")) { + $start = $s->get_node(1)->textContent(); + } + if (my $e = $rangenode->findnodes("./$NS:end")) { + $end = $e->get_node(1)->textContent(); + } + return [$start, $end]; +} + + + +# Splits a list field into an array ref +sub _split_list { + my $node = shift; + if (my @list = $node->findnodes("./$NS:item")) { + return [ map {$_->textContent()} @list ]; + } + else { + return [ $node->textContent() ]; + } +} + + +# Given an entry and a fieldname, returns the field node with the right language mode +sub _resolve_display_mode { + my ($biber, $entry, $fieldname) = @_; + my @nodelist; + my $dm = Biber::Config->getblxoption('displaymode'); + $logger->debug("Resolving display mode for '$fieldname' in node " . $entry->nodePath ); + # Either a fieldname specific mode or the default + my $modelist = $dm->{_norm($fieldname)} || $dm->{'*'}; + foreach my $mode (@$modelist) { + my $modeattr; + # mode is omissable if it is "original" + if ($mode eq 'original') { + $mode = 'original'; + $modeattr = "\@mode='$mode' or not(\@mode)" + } + else { + $modeattr = "\@mode='$mode'" + } + $logger->debug("Found display mode '$mode' for field '$fieldname'"); + if (@nodelist = $entry->findnodes("./${fieldname}[$modeattr]")) { + # Check to see if there is more than one entry with a mode and warn + if ($#nodelist > 0) { + $logger->warn("Found more than one mode '$mode' '$fieldname' field in entry '" . + $entry->getAttribute('id') . "' - using the first one!"); + $biber->{warnings}++; + } + return $nodelist[0]; + } + } + return undef; # Shouldn't get here +} + +# normalise a node name as they have a namsespace and might not be lowercase +sub _norm { + my $name = lc(shift); + $name =~ s/\A$NS://xms; + return $name; +} + + +1; + +__END__ + +=pod + +=encoding utf-8 + +=head1 NAME + +Biber::Input::file::biblatexml - look in a BibLaTeXML file for an entry and create it if found + +=head1 DESCRIPTION + +Provides the extract_entries() method to get entries from a biblatexml data source +and instantiate Biber::Entry objects for what it finds + +=head1 AUTHOR + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/bibtex.dcf b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/bibtex.dcf new file mode 100644 index 00000000000..f87de0cc6ac --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/bibtex.dcf @@ -0,0 +1,191 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../../../data/schemata/dcf.rnc" type="compact"?> +<dcf:driver-control driver="bibtex" xmlns:dcf="https://sourceforge.net/projects/biber"> + <!-- + These entry type aliases we might find in the the datasource so + we can decide how to map and convert them into Biber::Entry objects + We are not validating anything here, that comes later and is not + datasource specific + --> + <dcf:entry-types> + <dcf:entry-type name="conference"> + <dcf:aliasof>inproceedings</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="electronic"> + <dcf:aliasof>online</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="www"> + <dcf:aliasof>online</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="mastersthesis"> + <dcf:aliasof>thesis</dcf:aliasof> + <dcf:alsoset target="type" value="mathesis"/> + </dcf:entry-type> + <dcf:entry-type name="phdthesis"> + <dcf:aliasof>thesis</dcf:aliasof> + <dcf:alsoset target="type" value="phdthesis"/> + </dcf:entry-type> + <dcf:entry-type name="techreport"> + <dcf:aliasof>report</dcf:aliasof> + <dcf:alsoset target="type" value="techreport"/> + </dcf:entry-type> + </dcf:entry-types> + <!-- + These are the fields we expect to find in the the datasource so + we can decide how to map and convert them into Biber::Entry fields + This has nothing conceptually to do with the internal structure + setup, it's a datasource driver specific set of settings to allow + parsing into internal objects. It looks very similar to aspects + of the Biber::Structure defaults because biber/biblatex was developed + at first as a solely bibtex datasource project. + --> + <dcf:fields> + <!-- date fields --> + <dcf:field name="date" handler="date"/> + <dcf:field name="eventdate" handler="date"/> + <dcf:field name="origdate" handler="date"/> + <dcf:field name="urldate" handler="date"/> + <!-- list fields --> + <dcf:field name="address" aliasof="location"/> + <dcf:field name="institution" handler="list"/> + <dcf:field name="language" handler="list"/> + <dcf:field name="lista" handler="list"/> + <dcf:field name="listb" handler="list"/> + <dcf:field name="listc" handler="list"/> + <dcf:field name="listd" handler="list"/> + <dcf:field name="liste" handler="list"/> + <dcf:field name="listf" handler="list"/> + <dcf:field name="location" handler="list"/> + <dcf:field name="organization" handler="list"/> + <dcf:field name="origlocation" handler="list"/> + <dcf:field name="origpublisher" handler="list"/> + <dcf:field name="publisher" handler="list"/> + <dcf:field name="school" aliasof="institution"/> + <!-- literal fields --> + <dcf:field name="abstract" handler="literal"/> + <dcf:field name="addendum" handler="literal"/> + <dcf:field name="annotation" handler="literal"/> + <dcf:field name="annote" aliasof="annotation"/> + <dcf:field name="archiveprefix" aliasof="eprinttype"/> + <dcf:field name="authortype" handler="literal"/> + <dcf:field name="bookpagination" handler="literal"/> + <dcf:field name="booksubtitle" handler="literal"/> + <dcf:field name="booktitle" handler="literal"/> + <dcf:field name="booktitleaddon" handler="literal"/> + <dcf:field name="chapter" handler="literal"/> + <dcf:field name="crossref" handler="literal"/> + <dcf:field name="day" handler="literal"/> + <dcf:field name="edition" handler="literal"/> + <dcf:field name="editoratype" handler="literal"/> + <dcf:field name="editorbtype" handler="literal"/> + <dcf:field name="editorctype" handler="literal"/> + <dcf:field name="editortype" handler="literal"/> + <dcf:field name="eid" handler="literal"/> + <dcf:field name="entryset" handler="literal"/> + <dcf:field name="entrysubtype" handler="literal"/> + <dcf:field name="eprintclass" handler="literal"/> + <dcf:field name="eprinttype" handler="literal"/> + <dcf:field name="eventtitle" handler="literal"/> + <dcf:field name="execute" handler="literal"/> + <dcf:field name="gender" handler="literal"/> + <dcf:field name="howpublished" handler="literal"/> + <dcf:field name="hyphenation" handler="literal"/> + <dcf:field name="indexsorttitle" handler="literal"/> + <dcf:field name="indextitle" handler="literal"/> + <dcf:field name="isan" handler="literal"/> + <dcf:field name="isbn" handler="literal"/> + <dcf:field name="ismn" handler="literal"/> + <dcf:field name="isrn" handler="literal"/> + <dcf:field name="issn" handler="literal"/> + <dcf:field name="issue" handler="literal"/> + <dcf:field name="issuesubtitle" handler="literal"/> + <dcf:field name="issuetitle" handler="literal"/> + <dcf:field name="iswc" handler="literal"/> + <dcf:field name="journal" aliasof="journaltitle"/> + <dcf:field name="journalsubtitle" handler="literal"/> + <dcf:field name="journaltitle" handler="literal"/> + <dcf:field name="key" aliasof="sortkey"/> + <dcf:field name="label" handler="literal"/> + <dcf:field name="library" handler="literal"/> + <dcf:field name="mainsubtitle" handler="literal"/> + <dcf:field name="maintitle" handler="literal"/> + <dcf:field name="maintitleaddon" handler="literal"/> + <dcf:field name="month" handler="literal"/> + <dcf:field name="nameaddon" handler="literal"/> + <dcf:field name="nameatype" handler="literal"/> + <dcf:field name="namebtype" handler="literal"/> + <dcf:field name="namectype" handler="literal"/> + <dcf:field name="note" handler="literal"/> + <dcf:field name="number" handler="literal"/> + <dcf:field name="origlanguage" handler="literal"/> + <dcf:field name="origtitle" handler="literal"/> + <dcf:field name="pagetotal" handler="literal"/> + <dcf:field name="pagination" handler="literal"/> + <dcf:field name="part" handler="literal"/> + <dcf:field name="presort" handler="literal"/> + <dcf:field name="primaryclass" aliasof="eprintclass"/> + <dcf:field name="pubstate" handler="literal"/> + <dcf:field name="related" handler="literal"/> + <dcf:field name="relatedtype" handler="literal"/> + <dcf:field name="reprinttitle" handler="literal"/> + <dcf:field name="series" handler="literal"/> + <dcf:field name="shorthand" handler="literal"/> + <dcf:field name="shorthandintro" handler="literal"/> + <dcf:field name="shortjournal" handler="literal"/> + <dcf:field name="shortseries" handler="literal"/> + <dcf:field name="shorttitle" handler="literal"/> + <dcf:field name="sortkey" handler="literal"/> + <dcf:field name="sorttitle" handler="literal"/> + <dcf:field name="sortyear" handler="literal"/> + <dcf:field name="subtitle" handler="literal"/> + <dcf:field name="title" handler="literal"/> + <dcf:field name="titleaddon" handler="literal"/> + <dcf:field name="type" handler="literal"/> + <dcf:field name="usera" handler="literal"/> + <dcf:field name="userb" handler="literal"/> + <dcf:field name="userc" handler="literal"/> + <dcf:field name="userd" handler="literal"/> + <dcf:field name="usere" handler="literal"/> + <dcf:field name="userf" handler="literal"/> + <dcf:field name="venue" handler="literal"/> + <dcf:field name="version" handler="literal"/> + <dcf:field name="volume" handler="literal"/> + <dcf:field name="volumes" handler="literal"/> + <dcf:field name="xref" handler="literal"/> + <dcf:field name="year" handler="literal"/> + <!-- name fields --> + <dcf:field name="afterword" handler="name"/> + <dcf:field name="annotator" handler="name"/> + <dcf:field name="author" handler="name"/> + <dcf:field name="bookauthor" handler="name"/> + <dcf:field name="commentator" handler="name"/> + <dcf:field name="editor" handler="name"/> + <dcf:field name="editora" handler="name"/> + <dcf:field name="editorb" handler="name"/> + <dcf:field name="editorc" handler="name"/> + <dcf:field name="foreword" handler="name"/> + <dcf:field name="holder" handler="name"/> + <dcf:field name="introduction" handler="name"/> + <dcf:field name="namea" handler="name"/> + <dcf:field name="nameb" handler="name"/> + <dcf:field name="namec" handler="name"/> + <dcf:field name="shortauthor" handler="name"/> + <dcf:field name="shorteditor" handler="name"/> + <dcf:field name="sortname" handler="name"/> + <dcf:field name="translator" handler="name"/> + <!-- range fields --> + <dcf:field name="pages" handler="range"/> + <!-- verbatim fields --> + <dcf:field name="keywords" handler="verbatim"/> + <dcf:field name="options" handler="verbatim"/> + <dcf:field name="doi" handler="verbatim"/> + <dcf:field name="eprint" handler="verbatim"/> + <dcf:field name="file" handler="verbatim"/> + <dcf:field name="pdf" aliasof="file"/> + <dcf:field name="url" handler="verbatim"/> + <dcf:field name="verba" handler="verbatim"/> + <dcf:field name="verbb" handler="verbatim"/> + <dcf:field name="verbc" handler="verbatim"/> + </dcf:fields> +</dcf:driver-control> + diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/bibtex.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/bibtex.pm new file mode 100644 index 00000000000..0eb684d21e7 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/bibtex.pm @@ -0,0 +1,820 @@ +package Biber::Input::file::bibtex; +#use feature 'unicode_strings'; +use sigtrap qw(handler TBSIG SEGV); +use strict; +use warnings; +use Carp; + +use Text::BibTeX 0.50 qw(:nameparts :joinmethods :metatypes); +use Text::BibTeX::Name; +use Text::BibTeX::NameFormat; +use Biber::Constants; +use Biber::Entries; +use Biber::Entry; +use Biber::Entry::Names; +use Biber::Entry::Name; +use Biber::Sections; +use Biber::Section; +use Biber::Structure; +use Biber::Utils; +use Biber::Config; +use Encode; +use File::Spec; +use Log::Log4perl qw(:no_extra_logdie_message); +use base 'Exporter'; +use List::AllUtils qw(first); +use XML::LibXML::Simple; + +my $logger = Log::Log4perl::get_logger('main'); + +our $cache = {}; + +# Handlers for field types +# The names of these have nothing to do whatever with the biblatex field types +# They just started out copying them - they are categories of this specific +# data source date types +my %handlers = ( + 'date' => \&_date, + 'list' => \&_list, + 'literal' => \&_literal, + 'name' => \&_name, + 'range' => \&_range, + 'verbatim' => \&_verbatim +); + + +# we assume that the driver config file is in the same dir as the driver: +(my $vol, my $driver_path, undef) = File::Spec->splitpath( $INC{"Biber/Input/file/bibtex.pm"} ); + +# Deal with the strange world of Par::Packer paths, see similar code in Biber.pm +my $dcf; +if ($driver_path =~ m|/par\-| and $driver_path !~ m|/inc|) { # a mangled PAR @INC path + $dcf = File::Spec->catpath($vol, "$driver_path/inc/lib/Biber/Input/file", 'bibtex.dcf'); +} +else { + $dcf = File::Spec->catpath($vol, $driver_path, 'bibtex.dcf'); +} + +# Read driver config file +my $dcfxml = XML::LibXML::Simple::XMLin($dcf, + 'ForceContent' => 1, + 'ForceArray' => [ + qr/\Aentry-type\z/, + qr/\Afield\z/, + ], + 'NsStrip' => 1, + 'KeyAttr' => ['name']); + +# Check we have the right driver +unless ($dcfxml->{driver} eq 'bibtex') { + $logger->logdie("Expected driver config type 'bibtex', got '" . $dcfxml->{driver} . "'"); +} + +=head2 TBSIG + + Signal handler to catch fatal Text::BibTex SEGFAULTS. It has bugs + and we want to say at least something if it coredumps + +=cut + +sub TBSIG { + my $sig = shift; + $logger->logdie("Caught signal: $sig\nLikely your .bib has a bad entry: $!"); +} + +=head2 extract_entries + + Main data extraction routine. + Accepts a data source identifier, preprocesses the file and then + looks for the passed keys, creating entries when it finds them and + passes out an array of keys it didn't find. + +=cut + +sub extract_entries { + my ($biber, $filename, $keys) = @_; + my $secnum = $biber->get_current_section; + my $section = $biber->sections->get_section($secnum); + my $bibentries = $section->bibentries; + my @rkeys = @$keys; + my $tf; # Up here so that the temp file has enough scope to survive until we've + # used it + $logger->trace("Entering extract_entries()"); + + # If it's a remote .bib file, fetch it first + if ($filename =~ m/\A(?:https?|ftp):/xms) { + $logger->info("Data source '$filename' is a remote .bib - fetching ..."); + require LWP::Simple; + require File::Temp; + $tf = File::Temp->new(SUFFIX => '.bib'); + unless (LWP::Simple::getstore($filename, $tf->filename) == 200) { + $logger->logdie ("Could not fetch file '$filename'"); + } + $filename = $tf->filename; + } + else { + # Need to get the filename even if using cache so we increment + # the filename count for preambles at the bottom of this sub + my $trying_filename = $filename; + unless ($filename = locate_biber_file($filename)) { + $logger->logdie("Cannot find file '$trying_filename'!") + } + } + + # Text::BibTeX can't be controlled by Log4perl so we have to do something clumsy + if (Biber::Config->getoption('quiet')) { + open OLDERR, '>&', \*STDERR; + open STDERR, '>', '/dev/null'; + } + + # Don't read the file again if it's already cached + unless ($cache->{data}{$filename}) { + $logger->debug("Caching data for bibtex format file '$filename' for section $secnum"); + cache_data($biber, $filename); + } + else { + $logger->debug("Using cached data for bibtex format file '$filename' for section $secnum"); + } + + if ($section->is_allkeys) { + $logger->debug("All cached citekeys will be used for section '$secnum'"); + # Loop over all entries, creating objects + while (my (undef, $entry) = each %{$cache->{data}{$filename}}) { + # We have to pass the datasource cased (and UTF-8ed) key to + # create_entry() as this sub needs to know the original case of the + # citation key so we can do case-insensitive key/entry comparisons + # later but we need to put the original citation case when we write + # the .bbl. If we lowercase before this, we lose this information. + # Of course, with allkeys, "citation case" means "datasource entry case" + create_entry($biber, decode_utf8($entry->key), $entry); + } + + # if allkeys, push all bibdata keys into citekeys (if they are not already there) + $section->add_citekeys($section->bibentries->sorted_keys); + $logger->debug("Added all citekeys to section '$secnum': " . join(', ', $section->get_citekeys)); + } + else { + # loop over all keys we're looking for and create objects + $logger->debug('Text::BibTeX cache keys: ' . join(', ', keys %{$cache->{data}{$filename}})); + $logger->debug('Wanted keys: ' . join(', ', @$keys)); + foreach my $wanted_key (@$keys) { + $logger->debug("Looking for key '$wanted_key' in Text::BibTeX cache"); + # Cache index keys are lower-cased. This next line effectively implements + # case insensitive citekeys + if (my $entry = $cache->{data}{$filename}{lc($wanted_key)}) { + $logger->debug("Found key '$wanted_key' in Text::BibTeX cache"); + # See comment above about the importance of the case of the key + # passed to create_entry() + create_entry($biber, $wanted_key, $entry); + # found a key, remove it from the list of keys we want + @rkeys = grep {$wanted_key ne $_} @rkeys; + } + $logger->debug('Wanted keys now: ' . join(', ', @rkeys)); + } + } + + if (Biber::Config->getoption('quiet')) { + open STDERR, '>&', \*OLDERR; + } + + # Only push the preambles from the file if we haven't seen this data file before + # and there are some preambles to push + if ($cache->{counts}{$filename} < 2 and @{$cache->{preamble}{$filename}}) { + push @{$biber->{preamble}}, @{$cache->{preamble}{$filename}}; + } + + return @rkeys; +} + +=head2 create_entry + + Create a Biber::Entry object from a Text::BibTeX object + +=cut + +sub create_entry { + my ($biber, $dskey, $entry) = @_; + my $secnum = $biber->get_current_section; + my $section = $biber->sections->get_section($secnum); + my $bibentries = $section->bibentries; + + # Want a version of the key that is the same case as any citations which + # reference it, in case they are different. We use this as the .bbl + # entry key + # In case of allkeys, this will just be the datasource key as ->get_citekeys + # returns an empty list + my $citekey = first {lc($dskey) eq lc($_)} $section->get_citekeys; + $citekey = $dskey unless $citekey; + my $lc_key = lc($dskey); + + my $bibentry = new Biber::Entry; + # We record the original keys of both the datasource and citation. They may differ in case. + $bibentry->set_field('dskey', $dskey); + $bibentry->set_field('citekey', $citekey); + + if ( $entry->metatype == BTE_REGULAR ) { + + # Set entrytype taking note of any aliases for this datasource driver + if (my $ealias = $dcfxml->{'entry-types'}{'entry-type'}{$entry->type}) { + $bibentry->set_field('entrytype', $ealias->{aliasof}{content}); + if (my $alsoset = $ealias->{alsoset}) { + unless ($bibentry->field_exists($alsoset->{target})) { + $bibentry->set_field($alsoset->{target}, $alsoset->{value}); + } + } + } + else { + $bibentry->set_field('entrytype', $entry->type); + } + + # We put all the fields we find modulo field aliases into the object + # validation happens later and is not datasource dependent + foreach my $f ($entry->fieldlist) { + # We have to process local options as early as possible in order + # to make them available for things that need them like parsename() + if ($f eq 'options') { + my $value = decode_utf8($entry->get($f)); + $biber->process_entry_options($dskey, $value); + } + + if (my $fm = $dcfxml->{fields}{field}{$f}) { + my $to = $f; # By default, field to set internally is the same as data source + # Redirect any alias + if (my $alias = $fm->{aliasof}) { + $logger->debug("Found alias '$alias' of field '$f' in entry '$dskey'"); + # If both a field and its alias is set, warn and delete alias field + if ($entry->exists($alias)) { + # Warn as that's wrong + $biber->biber_warn($bibentry, "Field '$f' is aliased to field '$alias' but both are defined in entry with key '$dskey' - skipping field '$f'"); + next; + } + $fm = $dcfxml->{fields}{field}{$alias}; + $to = $alias; # Field to set internally is the alias + } + &{$handlers{$fm->{handler}}}($biber, $bibentry, $entry, $f, $to, $dskey); + } + # Default if no explicit way to set the field + else { + my $value = decode_utf8($entry->get($f)); + $bibentry->set_datafield($f, $value); + } + } + + $bibentry->set_field('datatype', 'bibtex'); + $bibentries->add_entry($lc_key, $bibentry); + } + + return; +} + + +# Literal fields +sub _literal { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + my $value = decode_utf8($entry->get($f)); + + # If we have already split some date fields into literal fields + # like date -> year/month/day, don't overwrite them with explicit + # year/month + return if ($to eq 'year' and $bibentry->get_datafield('year')); + return if ($to eq 'month' and $bibentry->get_datafield('month')); + + # Try to sanitise months to biblatex requirements + if ($to eq 'month') { + $bibentry->set_datafield($to, _hack_month($value)); + } + else { + $bibentry->set_datafield($to, $value); + } + return; +} + +# Verbatim fields +sub _verbatim { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + my $value = decode_utf8($entry->get($f)); + $bibentry->set_datafield($to, $value); + return; +} + +# Range fields +sub _range { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + my $values_ref; + my @values = split(/\s*,\s*/, decode_utf8($entry->get($f))); + # Here the "-–" contains two different chars even though they might + # look the same in some fonts ... + # If there is a range sep, then we set the end of the range even if it's null + # If no range sep, then the end of the range is undef + foreach my $value (@values) { + $value =~ m/\A\s*([^-–]+)([-–]*)([^-–]*)\s*\z/xms; + my $end; + if ($2) { + $end = $3; + } + else { + $end = undef; + } + push @$values_ref, [$1 || '', $end]; + } + $bibentry->set_datafield($to, $values_ref); + return; +} + + +# Names +sub _name { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + my $secnum = $biber->get_current_section; + my $section = $biber->sections->get_section($secnum); + my @tmp = $entry->split($f); + my $lc_key = lc($dskey); + my $useprefix = Biber::Config->getblxoption('useprefix', $bibentry->get_field('entrytype'), $lc_key); + my $names = new Biber::Entry::Names; + foreach my $name (@tmp) { + + # Consecutive "and" causes Text::BibTeX::Name to segfault + unless ($name) { + $biber->biber_warn($bibentry, "Name in key '$dskey' is empty (probably consecutive 'and'): skipping name"); + $section->del_citekey($dskey); + next; + } + + $name = decode_utf8($name); + + # Check for malformed names in names which aren't completely escaped + + # Too many commas + unless ($name =~ m/\A{.+}\z/xms) { # Ignore these tests for escaped names + my @commas = $name =~ m/,/g; + if ($#commas > 1) { + $biber->biber_warn($bibentry, "Name \"$name\" has too many commas: skipping name"); + $section->del_citekey($dskey); + next; + } + + # Consecutive commas cause Text::BibTeX::Name to segfault + if ($name =~ /,,/) { + $biber->biber_warn($bibentry, "Name \"$name\" is malformed (consecutive commas): skipping name"); + $section->del_citekey($dskey); + next; + } + } + + $names->add_element(parsename($name, $f, {useprefix => $useprefix})); + } + $bibentry->set_datafield($to, $names); + return; +} + +# Dates +sub _date { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + my ($datetype) = $f =~ m/\A(.*)date\z/xms; + my $date = decode_utf8($entry->get($f)); + # We are not validating dates here, just syntax parsing + my $date_re = qr/(\d{4}) # year + (?:-(\d{2}))? # month + (?:-(\d{2}))? # day + /xms; + if (my ($byear, $bmonth, $bday, $r, $eyear, $emonth, $eday) = + $date =~ m|\A$date_re(/)?(?:$date_re)?\z|xms) { + # did this entry get its year/month fields from splitting an ISO8601 date field? + # We only need to know this for date, year/month as year/month can also + # be explicitly set. It makes a difference on how we do any potential future + # date validation + $bibentry->set_field('datesplit', 1) if $datetype eq ''; + # Some warnings for overwriting YEAR and MONTH from DATE + if ($byear and + ($datetype . 'year' eq 'year') and + $entry->get('year')) { + $biber->biber_warn($bibentry, "Overwriting field 'year' with year value from field 'date' for entry '$dskey'"); + } + if ($bmonth and + ($datetype . 'month' eq 'month') and + $entry->get('month')) { + $biber->biber_warn($bibentry, "Overwriting field 'month' with month value from field 'date' for entry '$dskey'"); + } + + $bibentry->set_datafield($datetype . 'year', $byear) if $byear; + $bibentry->set_datafield($datetype . 'month', $bmonth) if $bmonth; + $bibentry->set_datafield($datetype . 'day', $bday) if $bday; + $bibentry->set_datafield($datetype . 'endmonth', $emonth) if $emonth; + $bibentry->set_datafield($datetype . 'endday', $eday) if $eday; + if ($r and $eyear) { # normal range + $bibentry->set_datafield($datetype . 'endyear', $eyear); + } + elsif ($r and not $eyear) { # open ended range - endyear is defined but empty + $bibentry->set_datafield($datetype . 'endyear', ''); + } + } + else { + $biber->biber_warn($bibentry, "Invalid format '$date' of date field '$f' in entry '$dskey' - ignoring"); + } + return; +} + +# List fields +sub _list { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + my @tmp = $entry->split($f); + + @tmp = map { decode_utf8($_) } @tmp; + @tmp = map { remove_outer($_) } @tmp; + $bibentry->set_datafield($to, [ @tmp ]); + return; +} + + + +=head2 cache_data + + Caches file data into T::B objects indexed by the original + datasource key, decoded into UTF8 + +=cut + +sub cache_data { + my ($biber, $filename) = @_; + + # Initialise this + $cache->{preamble}{$filename} = []; + + # Convert/decode file + my $pfilename = preprocess_file($biber, $filename); + + my $bib = Text::BibTeX::File->new( $pfilename, '<' ) + or $logger->logdie("Cannot create Text::BibTeX::File object from $pfilename: $!"); + while ( my $entry = new Text::BibTeX::Entry $bib ) { + + if ( $entry->metatype == BTE_PREAMBLE ) { + push @{$cache->{preamble}{$filename}}, decode_utf8($entry->value); + next; + } + + # Ignore misc bibtex entry types we don't care about + next if ( $entry->metatype == BTE_MACRODEF or $entry->metatype == BTE_UNKNOWN + or $entry->metatype == BTE_COMMENT ); + + # If an entry has no key, ignore it and warn + unless ($entry->key) { + $logger->warn("Invalid or undefined BibTeX entry key in file '$pfilename', skipping ..."); + next; + } + + # Text::BibTeX >= 0.46 passes through all citekey bits, thus allowing utf8 keys + my $dskey = decode_utf8($entry->key); + + # Bad entry + unless ($entry->parse_ok) { + $logger->warn("Entry $dskey does not parse correctly: skipping"); + next; + } + + # Cache the entry so we don't have to read the file again on next pass. + # Two reasons - So we avoid T::B macro redef warnings and speed + $cache->{data}{$filename}{lc($dskey)} = $entry; + $logger->debug("Cached Text::BibTeX entry for key '$dskey' from bibtex file '$filename'"); + } + + $bib->close; # If we don't do this, we can't unlink the temp file on Windows + + unlink $pfilename if -e $pfilename; + + return; +} + + +=head2 preprocess_file + + Convert file to UTF-8 and potentially decode LaTeX macros to UTF-8 + +=cut + +sub preprocess_file { + my ($biber, $filename) = @_; + my $secnum = $biber->get_current_section; + my $section = $biber->sections->get_section($secnum); + + my $ufilename = "${filename}_$$.utf8"; + + # bib encoding is not UTF-8 + if (Biber::Config->getoption('bibencoding') ne 'UTF-8') { + require File::Slurp::Unicode; + my $buf = File::Slurp::Unicode::read_file($filename, encoding => Biber::Config->getoption('bibencoding')) + or $logger->logdie("Can't read $filename"); + + File::Slurp::Unicode::write_file($ufilename, {encoding => 'UTF-8'}, $buf) + or $logger->logdie("Can't write $ufilename"); + + } + else { + File::Copy::copy($filename, $ufilename); + } + + # Decode LaTeX to UTF8 if output is UTF-8 + if (Biber::Config->getoption('bblencoding') eq 'UTF-8') { + require File::Slurp::Unicode; + my $buf = File::Slurp::Unicode::read_file($ufilename, encoding => 'UTF-8') + or $logger->logdie("Can't read $ufilename"); + require Biber::LaTeX::Recode; + $logger->info('Decoding LaTeX character macros into UTF-8'); + $buf = Biber::LaTeX::Recode::latex_decode($buf, strip_outer_braces => 1, + scheme => Biber::Config->getoption('decodecharsset')); + + File::Slurp::Unicode::write_file($ufilename, {encoding => 'UTF-8'}, $buf) + or $logger->logdie("Can't write $ufilename"); + } + + # Increment the number of times each datafile has been referenced + # For example, a datafile might be referenced in more than one section. + # Some things find this information useful, for example, setting preambles is global + # and so we need to know if we've already saved the preamble for a datafile. + $cache->{counts}{$filename}++; + + return $ufilename; +} + +=head2 parsename + + Given a name string, this function returns a Biber::Entry::Name object + with all parts of the name resolved according to the BibTeX conventions. + + parsename('John Doe') + returns an object which internally looks a bit like this: + + { firstname => 'John', + firstname_i => 'J.', + firstname_it => 'J', + lastname => 'Doe', + lastname_i => 'D.', + lastname_it => 'D', + prefix => undef, + prefix_i => undef, + prefix_it => undef, + suffix => undef, + suffix_i => undef, + suffix_it => undef, + namestring => 'Doe, John', + nameinitstring => 'Doe_J', + strip => {'firstname' => 0, + 'lastname' => 0, + 'prefix' => 0, + 'suffix' => 0} + } + +=cut + +sub parsename { + my ($namestr, $fieldname, $opts) = @_; + $logger->debug(" Parsing namestring '$namestr'"); + my $usepre = $opts->{useprefix}; + # First sanitise the namestring due to Text::BibTeX::Name limitations on whitespace + $namestr =~ s/\A\s*//xms; # leading whitespace + $namestr =~ s/\s*\z//xms; # trailing whitespace + $namestr =~ s/\s+/ /g; # Collapse internal whitespace + + open OLDERR, '>&', \*STDERR; + open STDERR, '>', '/dev/null'; + my $name = new Text::BibTeX::Name($namestr); + open STDERR, '>&', \*OLDERR; + + # Formats so we can get BibTeX compatible nbsp inserted + my $l_f = new Text::BibTeX::NameFormat('l', 0); + my $f_f = new Text::BibTeX::NameFormat('f', 0); + my $p_f = new Text::BibTeX::NameFormat('v', 0); + my $s_f = new Text::BibTeX::NameFormat('j', 0); + $l_f->set_options(BTN_LAST, 0, BTJ_MAYTIE, BTJ_NOTHING); + $f_f->set_options(BTN_FIRST, 0, BTJ_MAYTIE, BTJ_NOTHING); + $p_f->set_options(BTN_VON, 0, BTJ_MAYTIE, BTJ_NOTHING); + $s_f->set_options(BTN_JR, 0, BTJ_MAYTIE, BTJ_NOTHING); + + # Generate name parts + my $lastname = decode_utf8($name->format($l_f)); + my $firstname = decode_utf8($name->format($f_f)); + my $prefix = decode_utf8($name->format($p_f)); + my $suffix = decode_utf8($name->format($s_f)); + + # Variables to hold either the Text::BibTeX::NameFormat generated initials + # or our own generated ones in case we are using a broken version of Text::BibTeX + my $gen_lastname_i; + my $gen_lastname_it; + my $gen_firstname_i; + my $gen_firstname_it; + my $gen_prefix_i; + my $gen_prefix_it; + my $gen_suffix_i; + my $gen_suffix_it; + + # Use a copy of $name so that when we generate the + # initials, we do so without certain things. This is easier than trying + # hack robust initials code into btparse ... + # This is a hard-coded hack + my $nd_namestr = $namestr; + $nd_namestr =~ s/\b\p{L}{2}\p{Pd}//gxms; # strip prefices + $nd_namestr =~ s/[\x{2bf}\x{2018}]//gxms; # strip specific diacritics + my $nd_name = new Text::BibTeX::Name($nd_namestr, $fieldname); + + # Initials formats + my $li_f = new Text::BibTeX::NameFormat('l', 1); + my $fi_f = new Text::BibTeX::NameFormat('f', 1); + my $pi_f = new Text::BibTeX::NameFormat('v', 1); + my $si_f = new Text::BibTeX::NameFormat('j', 1); + + # Truncated initials formats + my $lit_f = new Text::BibTeX::NameFormat('l', 1); + my $fit_f = new Text::BibTeX::NameFormat('f', 1); + my $pit_f = new Text::BibTeX::NameFormat('v', 1); + my $sit_f = new Text::BibTeX::NameFormat('j', 1); + + # Period following normal initials + $li_f->set_text(BTN_LAST, undef, undef, undef, '.'); + $fi_f->set_text(BTN_FIRST, undef, undef, undef, '.'); + $pi_f->set_text(BTN_VON, undef, undef, undef, '.'); + $si_f->set_text(BTN_JR, undef, undef, undef, '.'); + $li_f->set_options(BTN_LAST, 1, BTJ_MAYTIE, BTJ_NOTHING); + $fi_f->set_options(BTN_FIRST, 1, BTJ_MAYTIE, BTJ_NOTHING); + $pi_f->set_options(BTN_VON, 1, BTJ_MAYTIE, BTJ_NOTHING); + $si_f->set_options(BTN_JR, 1, BTJ_MAYTIE, BTJ_NOTHING); + + # Nothing following truncated initials + $lit_f->set_text(BTN_LAST, undef, undef, undef, ''); + $fit_f->set_text(BTN_FIRST, undef, undef, undef, ''); + $pit_f->set_text(BTN_VON, undef, undef, undef, ''); + $sit_f->set_text(BTN_JR, undef, undef, undef, ''); + $lit_f->set_options(BTN_LAST, 1, BTJ_NOTHING, BTJ_NOTHING); + $fit_f->set_options(BTN_FIRST, 1, BTJ_NOTHING, BTJ_NOTHING); + $pit_f->set_options(BTN_VON, 1, BTJ_NOTHING, BTJ_NOTHING); + $sit_f->set_options(BTN_JR, 1, BTJ_NOTHING, BTJ_NOTHING); + + $gen_lastname_i = decode_utf8($nd_name->format($li_f)); + $gen_lastname_it = decode_utf8($nd_name->format($lit_f)); + $gen_firstname_i = decode_utf8($nd_name->format($fi_f)); + $gen_firstname_it = decode_utf8($nd_name->format($fit_f)); + $gen_prefix_i = decode_utf8($nd_name->format($pi_f)); + $gen_prefix_it = decode_utf8($nd_name->format($pit_f)); + $gen_suffix_i = decode_utf8($nd_name->format($si_f)); + $gen_suffix_it = decode_utf8($nd_name->format($sit_f)); + + # Only warn about lastnames since there should always be one + $logger->warn("Couldn't determine Last Name for name \"$namestr\"") unless $lastname; + + my $namestring = ''; + # prefix + my $ps; + my $prefix_stripped; + my $prefix_i; + my $prefix_it; + if ($prefix) { + $prefix_i = $gen_prefix_i; + $prefix_it = $gen_prefix_it; + $prefix_stripped = remove_outer($prefix); + $ps = $prefix ne $prefix_stripped ? 1 : 0; + $namestring .= "$prefix_stripped "; + } + # lastname + my $ls; + my $lastname_stripped; + my $lastname_i; + my $lastname_it; + if ($lastname) { + $lastname_i = $gen_lastname_i; + $lastname_it = $gen_lastname_it; + $lastname_stripped = remove_outer($lastname); + $ls = $lastname ne $lastname_stripped ? 1 : 0; + $namestring .= "$lastname_stripped, "; + } + # suffix + my $ss; + my $suffix_stripped; + my $suffix_i; + my $suffix_it; + if ($suffix) { + $suffix_i = $gen_suffix_i; + $suffix_it = $gen_suffix_it; + $suffix_stripped = remove_outer($suffix); + $ss = $suffix ne $suffix_stripped ? 1 : 0; + $namestring .= "$suffix_stripped, "; + } + # firstname + my $fs; + my $firstname_stripped; + my $firstname_i; + my $firstname_it; + if ($firstname) { + $firstname_i = $gen_firstname_i; + $firstname_it = $gen_firstname_it; + $firstname_stripped = remove_outer($firstname); + $fs = $firstname ne $firstname_stripped ? 1 : 0; + $namestring .= "$firstname_stripped"; + } + + # Remove any trailing comma and space if, e.g. missing firstname + # Replace any nbspes + $namestring =~ s/,\s+\z//xms; + $namestring =~ s/~/ /gxms; + + # Construct $nameinitstring + my $nameinitstr = ''; + $nameinitstr .= $prefix_it . '_' if ( $usepre and $prefix ); + $nameinitstr .= $lastname if $lastname; + $nameinitstr .= '_' . $suffix_it if $suffix; + $nameinitstr .= '_' . $firstname_it if $firstname; + $nameinitstr =~ s/\s+/_/g; + $nameinitstr =~ s/~/_/g; + + # The "strip" entry tells us which of the name parts had outer braces + # stripped during processing so we can add them back when printing the + # .bbl so as to maintain maximum BibTeX compatibility + return Biber::Entry::Name->new( + firstname => $firstname eq '' ? undef : $firstname_stripped, + firstname_i => $firstname eq '' ? undef : $firstname_i, + firstname_it => $firstname eq '' ? undef : $firstname_it, + lastname => $lastname eq '' ? undef : $lastname_stripped, + lastname_i => $lastname eq '' ? undef : $lastname_i, + lastname_it => $lastname eq '' ? undef : $lastname_it, + prefix => $prefix eq '' ? undef : $prefix_stripped, + prefix_i => $prefix eq '' ? undef : $prefix_i, + prefix_it => $prefix eq '' ? undef : $prefix_it, + suffix => $suffix eq '' ? undef : $suffix_stripped, + suffix_i => $suffix eq '' ? undef : $suffix_i, + suffix_it => $suffix eq '' ? undef : $suffix_it, + namestring => $namestring, + nameinitstring => $nameinitstr, + strip => {'firstname' => $fs, + 'lastname' => $ls, + 'prefix' => $ps, + 'suffix' => $ss} + ); +} + + +# Routine to try to hack month into the right biblatex format +# Especially since we support remote .bibs which we potentially have no control over +my %months = ( + 'jan' => '01', + 'feb' => '02', + 'mar' => '03', + 'apr' => '04', + 'may' => '05', + 'jun' => '06', + 'jul' => '07', + 'aug' => '08', + 'sep' => '09', + 'oct' => '10', + 'nov' => '11', + 'dec' => '12' + ); + +sub _hack_month { + my $in_month = shift; + if ($in_month =~ m/\A\s*((?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).*)\s*\z/i) { + return $months{lc(substr($1,0,3))}; + } + else { + return $in_month; + } +} + + +1; + +__END__ + +=pod + +=encoding utf-8 + +=head1 NAME + +Biber::Input::file::bibtex - look in a BibTeX file for an entry and create it if found + +=head1 DESCRIPTION + +Provides the extract_entries() method to get entries from a bibtex data source +and instantiate Biber::Entry objects for what it finds + +=head1 AUTHOR + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/ris.dcf b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/ris.dcf new file mode 100644 index 00000000000..5f779e865b3 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/ris.dcf @@ -0,0 +1,145 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../../../data/schemata/dcf.rnc" type="compact"?> +<dcf:driver-control driver="ris" xmlns:dcf="https://sourceforge.net/projects/biber"> + <!-- + These entry type aliases we might find in the the datasource so + we can decide how to map and convert them into Biber::Entry objects + We are not validating anything here, that comes later and is not + datasource specific + --> + <dcf:entry-types> + <dcf:entry-type name="ART"> + <dcf:aliasof>artwork</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="BILL"> + <dcf:aliasof>jurisdiction</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="BOOK"> + <dcf:aliasof>book</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="COMP"> + <dcf:aliasof>software</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="CONF"> + <dcf:aliasof>proceedings</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="GEN"> + <dcf:aliasof>misc</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="JFULL"> + <dcf:aliasof>article</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="JOUR"> + <dcf:aliasof>article</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="MGZN"> + <dcf:aliasof>misc</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="MPCT"> + <dcf:aliasof>movie</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="NEWS"> + <dcf:aliasof>misc</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="PAMP"> + <dcf:aliasof>misc</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="PAT"> + <dcf:aliasof>patent</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="PCOMM"> + <dcf:aliasof>misc</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="RPRT"> + <dcf:aliasof>report</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="SER"> + <dcf:aliasof>misc</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="SLIDE"> + <dcf:aliasof>misc</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="SOUND"> + <dcf:aliasof>audio</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="STAT"> + <dcf:aliasof>legal</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="THES"> + <dcf:aliasof>thesis</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="UNBILL"> + <dcf:aliasof>jurisdiction</dcf:aliasof> + </dcf:entry-type> + <dcf:entry-type name="UNPB"> + <dcf:aliasof>unpublished</dcf:aliasof> + </dcf:entry-type> + </dcf:entry-types> + <!-- + These are the fields we expect to find in the the datasource so + we can decide how to map and convert them into Biber::Entry fields + This has nothing conceptually to do with the internal structure + setup, it's a datasource driver specific set of settings to allow + parsing into internal objects. It looks very similar to aspects + of the Biber::Structure defaults because biber/biblatex was developed + at first as a solely bibtex datasource project. + --> + <dcf:fields> + <!-- date fields --> + <dcf:field name="Y1" aliasof="date"/> + <dcf:field name="PY" aliasof="date"/> + <dcf:field name="date" handler="date"/> + <dcf:field name="Y2" aliasof="eventdate"/> + <dcf:field name="eventdate" handler="date"/> + <!-- name fields --> + <dcf:field name="A1" aliasof="author"/> + <dcf:field name="AU" aliasof="author"/> + <dcf:field name="author" handler="name"/> + <dcf:field name="A2" aliasof="editor"/> + <dcf:field name="A3" aliasof="editor"/> + <dcf:field name="ED" aliasof="editor"/> + <dcf:field name="editor" handler="name"/> + <!-- range fields --> + <dcf:field name="SPEP" aliasof="pages"/> + <dcf:field name="pages" handler="range"/> + <!-- verbatim fields --> + <dcf:field name="N1" aliasof="note"/> + <dcf:field name="note" handler="verbatim"/> + <dcf:field name="N2" aliasof="abstract"/> + <dcf:field name="AB" aliasof="abstract"/> + <dcf:field name="abstract" handler="verbatim"/> + <dcf:field name="JO" aliasof="journaltitle"/> + <dcf:field name="JF" aliasof="journaltitle"/> + <dcf:field name="journaltitle" handler="verbatim"/> + <dcf:field name="JA" aliasof="shortjournal"/> + <dcf:field name="shortjournal" handler="verbatim"/> + <dcf:field name="VL" aliasof="volume"/> + <dcf:field name="volume" handler="verbatim"/> + <dcf:field name="IS" aliasof="issue"/> + <dcf:field name="CP" aliasof="issue"/> + <dcf:field name="issue" handler="verbatim"/> + <dcf:field name="CY" aliasof="location"/> + <dcf:field name="location" aliasof="literal"/> + <dcf:field name="SN" aliasof="isbn"/> + <dcf:field name="isbn" handler="verbatim"/> + <dcf:field name="PB" aliasof="publisher"/> + <dcf:field name="publisher" handler="verbatim"/> + <dcf:field name="KW" aliasof="keywords"/> + <dcf:field name="keywords" handler="verbatim"/> + <dcf:field name="U1" aliasof="usera"/> + <dcf:field name="usera" handler="verbatim"/> + <dcf:field name="U2" aliasof="userb"/> + <dcf:field name="userb" handler="verbatim"/> + <dcf:field name="U3" aliasof="userc"/> + <dcf:field name="userc" handler="verbatim"/> + <dcf:field name="U4" aliasof="userd"/> + <dcf:field name="userd" handler="verbatim"/> + <dcf:field name="U5" aliasof="usere"/> + <dcf:field name="usere" handler="verbatim"/> + <dcf:field name="UR" aliasof="url"/> + <dcf:field name="url" handler="verbatim"/> + <dcf:field name="L1" aliasof="file"/> + <dcf:field name="file" handler="verbatim"/> + </dcf:fields> +</dcf:driver-control> + diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/ris.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/ris.pm new file mode 100755 index 00000000000..2cdc600979c --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Input/file/ris.pm @@ -0,0 +1,433 @@ +package Biber::Input::file::ris; +#use feature 'unicode_strings'; +use strict; +use warnings; +use Carp; + +use Biber::Constants; +use Biber::Entries; +use Biber::Entry; +use Biber::Entry::Names; +use Biber::Entry::Name; +use Biber::Sections; +use Biber::Section; +use Biber::Structure; +use Biber::Utils; +use Biber::Config; +use Encode; +use File::Spec; +use Log::Log4perl qw(:no_extra_logdie_message); +use base 'Exporter'; +use List::AllUtils qw(first uniq); +use XML::LibXML::Simple; +use Readonly; +use Data::Dump qw(dump); +use Switch; + +my $logger = Log::Log4perl::get_logger('main'); + +# Handlers for field types +# The names of these have nothing to do whatever with the biblatex field types +# They just started out copying them - they are categories of this specific +# data source date types +my %handlers = ( + 'date' => \&_date, + 'name' => \&_name, + 'range' => \&_range, + 'verbatim' => \&_verbatim +); + +# we assume that the driver config file is in the same dir as the driver: +(my $vol, my $driver_path, undef) = File::Spec->splitpath( $INC{"Biber/Input/file/ris.pm"} ); + +# Deal with the strange world of Par::Packer paths, see similar code in Biber.pm +my $dcf; +if ($driver_path =~ m|/par\-| and $driver_path !~ m|/inc|) { # a mangled PAR @INC path + $dcf = File::Spec->catpath($vol, "$driver_path/inc/lib/Biber/Input/file", 'ris.dcf'); +} +else { + $dcf = File::Spec->catpath($vol, $driver_path, 'ris.dcf'); +} + +# Read driver config file +my $dcfxml = XML::LibXML::Simple::XMLin($dcf, + 'ForceContent' => 1, + 'ForceArray' => [ + qr/\Aentry-type\z/, + qr/\Afield\z/, + ], + 'NsStrip' => 1, + 'KeyAttr' => ['name']); + +# Check we have the right driver +unless ($dcfxml->{driver} eq 'ris') { + $logger->logdie("Expected driver config type 'ris', got '" . $dcfxml->{driver} . "'"); +} + + + +=head2 extract_entries + + Main data extraction routine. + Accepts a data source identifier (filename in this case), + preprocesses the file and then looks for the passed keys, + creating entries when it finds them and passes out an + array of keys it didn't find. + +=cut + +sub extract_entries { + my ($biber, $filename, $keys) = @_; + my $secnum = $biber->get_current_section; + my $section = $biber->sections->get_section($secnum); + my $bibentries = $section->bibentries; + my @rkeys = @$keys; + my $tf; + + $logger->trace("Entering extract_entries()"); + + # If it's a remote file, fetch it first + if ($filename =~ m/\A(?:https?|ftp):/xms) { + $logger->info("Data source '$filename' is a remote file - fetching ..."); + require LWP::Simple; + require File::Temp; + $tf = File::Temp->new(SUFFIX => '.ris'); + unless (LWP::Simple::getstore($filename, $tf->filename) == 200) { + $logger->logdie ("Could not fetch file '$filename'"); + } + $filename = $tf->filename; + } + else { + my $trying_filename = $filename; + unless ($filename = locate_biber_file($filename)) { + $logger->logdie("Cannot find file '$trying_filename'!") + } + } + + # pre-process into something a little more sensible, dealing with the multi-line + # fields in RIS + require IO::File; + my $ris = new IO::File; + $ris->open("< $filename"); + my $e; + my @ris_entries; + my $last_tag; + while(<$ris>) { + if (m/\A([A-Z][A-Z0-9])\s\s\-\s*(.+)?\n\z/xms) { + $last_tag = $1; + switch ($1) { + case 'TY' { $e = {'TY' => $2}; } + case 'KW' { push @{$e->{KW}}, $2 } # amalgamate keywords + case 'SP' { $e->{SPEP}{SP} = $2 } # amalgamate page range + case 'EP' { $e->{SPEP}{EP} = $2 } # amalgamate page range + case 'A1' { push @{$e->{A1}}, $2 } # amalgamate names + case 'A2' { push @{$e->{A2}}, $2 } # amalgamate names + case 'A3' { push @{$e->{A3}}, $2 } # amalgamate names + case 'AU' { push @{$e->{AU}}, $2 } # amalgamate names + case 'ED' { push @{$e->{ED}}, $2 } # amalgamate names + case 'ER' { $e->{KW} = join(',', @{$e->{KW}}); + push @ris_entries, $e } + else { $e->{$1} = $2 } + } + } + elsif (m/\A(.+)\n\z/xms) { # Deal with stupid line continuations + $e->{$last_tag} .= " $1"; + } + } + $ris->close; + undef $ris; + + if ($section->is_allkeys) { + $logger->debug("All citekeys will be used for section '$secnum'"); + # Loop over all entries, creating objects + foreach my $entry (@ris_entries) { + $logger->debug('Parsing RIS entry object ' . $entry->{ID}); + # We have to pass the datasource cased key to + # create_entry() as this sub needs to know the original case of the + # citation key so we can do case-insensitive key/entry comparisons + # later but we need to put the original citation case when we write + # the .bbl. If we lowercase before this, we lose this information. + # Of course, with allkeys, "citation case" means "datasource entry case" + + # If an entry has no key, ignore it and warn + unless ($entry->{ID}) { + $logger->warn("RIS entry has no ID key in file '$filename', skipping ..."); + $biber->{warnings}++; + next; + } + create_entry($biber, $entry->{ID}, $entry); + } + + # if allkeys, push all bibdata keys into citekeys (if they are not already there) + $section->add_citekeys($section->bibentries->sorted_keys); + $logger->debug("Added all citekeys to section '$secnum': " . join(', ', $section->get_citekeys)); + } + else { + # loop over all keys we're looking for and create objects + $logger->debug('Wanted keys: ' . join(', ', @$keys)); + foreach my $wanted_key (@$keys) { + $logger->debug("Looking for key '$wanted_key' in RIS file '$filename'"); + # Cache index keys are lower-cased. This next line effectively implements + # case insensitive citekeys + # This will also get the first match it finds + if (my @entries = grep { lc($wanted_key) eq lc($_->{ID}) } @ris_entries) { + if ($#entries > 0) { + $logger->warn("Found more than one entry for key '$wanted_key' in '$filename' - using the first one!"); + $biber->{warnings}++; + } + my $entry = $entries[0]; + + $logger->debug("Found key '$wanted_key' in RIS file '$filename'"); + $logger->debug('Parsing RIS entry object ' . $entry->{ID}); + # See comment above about the importance of the case of the key + # passed to create_entry() + create_entry($biber, $wanted_key, $entry); + # found a key, remove it from the list of keys we want + @rkeys = grep {$wanted_key ne $_} @rkeys; + } + $logger->debug('Wanted keys now: ' . join(', ', @rkeys)); + } + } + return @rkeys; +} + + +=head2 create_entry + + Create a Biber::Entry object from an entry found in a biblatexml data source + +=cut + +sub create_entry { + my ($biber, $dskey, $entry) = @_; + my $secnum = $biber->get_current_section; + my $section = $biber->sections->get_section($secnum); + my $struc = Biber::Config->get_structure; + my $bibentries = $section->bibentries; + + # Want a version of the key that is the same case as any citations which + # reference it, in case they are different. We use this as the .bbl + # entry key + # In case of allkeys, this will just be the datasource key as ->get_citekeys + # returns an empty list + my $citekey = first {lc($dskey) eq lc($_)} $section->get_citekeys; + $citekey = $dskey unless $citekey; + my $lc_key = lc($dskey); + + my $bibentry = new Biber::Entry; + # We record the original keys of both the datasource and citation. They may differ in case. + $bibentry->set_field('dskey', $dskey); + $bibentry->set_field('citekey', $citekey); + + # Set entrytype taking note of any aliases for this datasource driver + if (my $ealias = $dcfxml->{'entry-types'}{'entry-type'}{$entry->{TY}}) { + $bibentry->set_field('entrytype', $ealias->{aliasof}{content}); + if (my $alsoset = $ealias->{alsoset}) { + unless ($bibentry->field_exists($alsoset->{target})) { + $bibentry->set_field($alsoset->{target}, $alsoset->{value}); + } + } + } + else { + $bibentry->set_field('entrytype', $entry->{TY}); + } + + # We put all the fields we find modulo field aliases into the object. + # Validation happens later and is not datasource dependent + foreach my $f (keys %$entry) { + + if (my $fm = $dcfxml->{fields}{field}{$f}) { + my $to = $f; # By default, field to set internally is the same as data source + # Redirect any alias + if (my $alias = $fm->{aliasof}) { + $logger->debug("Found alias '$alias' of field '$f' in entry '$dskey'"); + $fm = $dcfxml->{fields}{field}{$alias}; + $to = $alias; # Field to set internally is the alias + } + &{$handlers{$fm->{handler}}}($biber, $bibentry, $entry, $f, $to, $dskey); + } + # Default if no explicit way to set the field + else { + $bibentry->set_datafield($f, $entry->{$f}); + } + } + + $bibentry->set_field('datatype', 'ris'); + $bibentries->add_entry($lc_key, $bibentry); + + return; +} + +# Verbatim fields +sub _verbatim { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + $bibentry->set_datafield($to, $entry->{$f}); + return; +} + +# Range fields +sub _range { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + $bibentry->set_datafield($to, _parse_range_list($entry->{$f})); + return; +} + +# Date fields +sub _date { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + my $date = $entry->{$f}; + if ($date =~ m|\A([0-9]{4})/([0-9]{2})/([0-9]{2}/([^\n]+))\z|xms) { + $bibentry->set_datafield('year', $1); + $bibentry->set_datafield('month', $2); + $bibentry->set_datafield('day', $3); + } + elsif ($date =~ m|\A([0-9])\z|xms) { + $bibentry->set_datafield('year', $1); + } + else { + $logger->warn("Invalid RIS date format: '$date' - ignoring"); + } + return; +} + +# Name fields +sub _name { + my ($biber, $bibentry, $entry, $f, $to, $dskey) = @_; + my $names = $entry->{$f}; + my $names_obj = new Biber::Entry::Names; + foreach my $name (@$names) { + $logger->debug('Parsing RIS name'); + if ($name =~ m|\A([^,]+)\s*,?\s*([^,]+)?\s*,?\s*([^,]+)?\z|xms) { + my $lastname = $1; + my $firstname = $2; + my $suffix = $3; + $logger->debug("Found name component 'lastname': $lastname") if $lastname; + $logger->debug("Found name component 'firstname': $firstname") if $firstname; + $logger->debug("Found name component 'suffix': $suffix") if $suffix; + + my @fni = _gen_initials([split(/\s/, $firstname)]) if $firstname; + my @lni = _gen_initials([split(/\s/, $lastname)]) if $lastname; + my @si = _gen_initials([split(/\s/, $suffix)]) if $suffix; + + my $namestring = ''; + + # lastname + $namestring .= "$lastname, "; + + # suffix + $namestring .= "$suffix, " if $suffix; + + # firstname + $namestring .= $firstname if $firstname; + + # Remove any trailing comma and space if, e.g. missing firstname + # Replace any nbspes + $namestring =~ s/,\s+\z//xms; + $namestring =~ s/~/ /gxms; + + # Construct $nameinitstring + my $nameinitstr = ''; + $nameinitstr .= $lastname if $lastname; + $nameinitstr .= '_' . $si[1] if $suffix; + $nameinitstr .= '_' . $fni[1] if $firstname; + $nameinitstr =~ s/\s+/_/g; + $nameinitstr =~ s/~/_/g; + + my $name_obj = Biber::Entry::Name->new( + firstname => $firstname || undef, + firstname_i => $firstname ? $fni[0] : undef, + firstname_it => $firstname ? $fni[1] : undef, + lastname => $lastname, + lastname_i => $lni[0], + lastname_it => $lni[1], + suffix => $suffix || undef, + suffix_i => $suffix ? $si[0] : undef, + suffix_it => $suffix ? $si[1] : undef, + namestring => $namestring, + nameinitstring => $nameinitstr + ); + $names_obj->add_element($name_obj); + $bibentry->set_datafield($to, $names_obj); + + # Special case + if ($f eq 'A3') { + $bibentry->set_datafield('editortype', 'series'); + } + } + else { + $logger->warn("Invalid RIS name format: '$name' - ignoring"); + } + } + return; + +} + +# Passed an array ref of strings, returns an array of two strings, +# the first is the TeX initials and the second the terse initials +sub _gen_initials { + my $strings_ref = shift; + my @strings; + foreach my $str (@$strings_ref) { + my $chr = substr($str, 0, 1); + # Keep diacritics with their following characters + if ($chr =~ m/\p{Dia}/) { + push @strings, substr($str, 0, 2); + } + else { + push @strings, substr($str, 0, 1); + } + } + return (join('.~', @strings) . '.', join('', @strings)); +} + + +# parses a range and returns a ref to an array of start and end values +sub _parse_range_list { + my $range = shift; + my $start = $range->{SP} || ''; + my $end = $range->{EP} || ''; + return [[$start, $end]]; +} + + +1; + +__END__ + +=pod + +=encoding utf-8 + +=head1 NAME + +Biber::Input::file::biblatexml - look in a BibLaTeXML file for an entry and create it if found + +=head1 DESCRIPTION + +Provides the extract_entries() method to get entries from a biblatexml data source +and instantiate Biber::Entry objects for what it finds + +=head1 AUTHOR + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Internals.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Internals.pm new file mode 100644 index 00000000000..2f1c73310a8 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Internals.pm @@ -0,0 +1,889 @@ +package Biber::Internals; +#use feature 'unicode_strings'; + +use strict; +use warnings; +use Carp; +use Biber::Constants; +use Biber::Utils; +use Text::Wrap; +$Text::Wrap::columns = 80; +use Storable qw( dclone ); +use List::AllUtils qw( :all ); +use Log::Log4perl qw(:no_extra_logdie_message); +use POSIX qw( locale_h ); # for lc() +use Encode; +use charnames ':full'; +use Unicode::Normalize; +use utf8; + +=encoding utf-8 + +=head1 NAME + +Biber::Internals - Internal methods for processing the bibliographic data + +=head1 METHODS + + +=cut + +my $logger = Log::Log4perl::get_logger('main'); + +sub _getnamehash { + my ($self, $citekey, $names) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $initstr = ''; + + if ( $names->count_elements <= Biber::Config->getblxoption('maxnames') ) { # 1 to maxname names + foreach my $n (@{$names->names}) { + if ( $n->get_prefix and + Biber::Config->getblxoption('useprefix', $be->get_field('entrytype'), $citekey ) ) { + $initstr .= $n->get_prefix_it; + } + $initstr .= $n->get_lastname_it; + + if ( $n->get_suffix ) { + $initstr .= $n->get_suffix_it; + } + + if ( $n->get_firstname ) { + $initstr .= $n->get_firstname_it; + } + if ( $n->get_middlename ) { + $initstr .= $n->get_middlename_it; + } + # without useprefix, prefix is not first in the hash + if ( $n->get_prefix and not + Biber::Config->getblxoption('useprefix', $be->get_field('entrytype'), $citekey ) ) { + $initstr .= $n->get_prefix_it; + } + + } + } + # > maxname names: only take initials of first getblxoption('minnames', $citekey) + else { + foreach my $i ( 1 .. Biber::Config->getblxoption('minnames') ) { + if ( $names->nth_element($i)->get_prefix and + Biber::Config->getblxoption('useprefix', $be->get_field('entrytype'), $citekey) ) { + $initstr .= $names->nth_element($i)->get_prefix_it; + } + + if ( $names->nth_element($i)->get_suffix ) { + $initstr .= $names->nth_element($i)->get_suffix_it; + } + + $initstr .= $names->nth_element($i)->get_lastname_it; + if ( $names->nth_element($i)->get_firstname ) { + $initstr .= $names->nth_element($i)->get_firstname_it; + } + if ( $names->nth_element($i)->get_middlename ) { + $initstr .= $names->nth_element($i)->get_middlename_it; + } + + # without useprefix, prefix is not first in the hash + if ( $names->nth_element($i)->get_prefix and not + Biber::Config->getblxoption('useprefix', $be->get_field('entrytype'), $citekey) ) { + $initstr .= $names->nth_element($i)->get_prefix_it; + } + $initstr .= "+"; + } + } + return normalise_string_lite($initstr); +} + +sub _getfullhash { + my ($self, $citekey, $names) = @_; + my $initstr = ''; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + foreach my $n (@{$names->names}) { + if ( $n->get_prefix and + Biber::Config->getblxoption('useprefix', $be->get_field('entrytype'), $citekey ) ) { + $initstr .= $n->get_prefix_it; + } + $initstr .= $n->get_lastname_it; + + if ( $n->get_suffix ) { + $initstr .= $n->get_suffix_it; + } + + if ( $n->get_firstname ) { + $initstr .= $n->get_firstname_it; + } + + if ( $n->get_middlename ) { + $initstr .= $n->get_middlename_it; + } + + # without useprefix, prefix is not first in the hash + if ( $n->get_prefix and not + Biber::Config->getblxoption('useprefix', $be->get_field('entrytype'), $citekey ) ) { + $initstr .= $n->get_prefix_it; + } + + } + return normalise_string_lite($initstr); +} + +sub _getlabel { + my ($self, $citekey, $namefield) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $names = $be->get_field($namefield); + my $alphaothers = Biber::Config->getblxoption('alphaothers', $be->get_field('entrytype')); + my $sortalphaothers = Biber::Config->getblxoption('sortalphaothers', $be->get_field('entrytype')); + my $useprefix = Biber::Config->getblxoption('useprefix', $be->get_field('entrytype'), $citekey); + my $maxnames = Biber::Config->getblxoption('maxnames'); + my $minnames = Biber::Config->getblxoption('minnames'); + my $label = ''; + my $sortlabel = ''; # This contains sortalphaothers instead of alphaothers, if defined + # This is needed in cases where alphaothers is something like + # '\textasteriskcentered' which would mess up sorting. + + my @lastnames = map { strip_nosort(normalise_string($_->get_lastname), $namefield) } @{$names->names}; + my @prefices = map { $_->get_prefix } @{$names->names}; + my $numnames = $names->count_elements; + + # If name list was truncated in bib with "and others", this overrides maxnames + my $morenames = ($names->last_element->get_namestring eq 'others') ? 1 : 0; + my $nametrunc; + my $loopnames; + + # loopnames is the number of names to loop over in the name list when constructing the label + if ($morenames or ($numnames > $maxnames)) { + $nametrunc = 1; + $loopnames = $minnames; # Only look at $minnames names if we are truncating ... + } else { + $loopnames = $numnames; # ... otherwise look at all names + } + + # Now loop over the name list, grabbing a substring of each surname + # The substring length depends on whether we are using prefices and also whether + # we have truncated to one name: + # 1. If there is only one name + # 1. label string is first 3 chars of surname if there is no prefix + # 2. label string is first char of prefix plus first 2 chars of surname if there is a prefix + # 2. If there is more than one name + # 1. label string is first char of each surname (up to minnames) if there is no prefix + # 2. label string is first char of prefix plus first char of each surname (up to minnames) + # if there is a prefix + for (my $i=0; $i<$loopnames; $i++) { + $label .= substr($prefices[$i] , 0, 1) if ($useprefix and $prefices[$i]); + $label .= substr($lastnames[$i], 0, $loopnames == 1 ? (($useprefix and $prefices[$i]) ? 2 : 3) : 1); + } + + $sortlabel = $label; + + # Add alphaothers if name list is truncated + if ($nametrunc) { + $label .= $alphaothers; + $sortlabel .= $sortalphaothers; + } + + return [$label, $sortlabel]; +} + +######### +# Sorting +######### + +our $sorting_sep = ','; + +# The keys are defined by BibLaTeX and passed in the control file +# The value is an array pointer, first element is a code pointer, second is +# a pointer to extra arguments to the code. This is to make code re-use possible +# so the sorting can share code for similar things. +our $dispatch_sorting = { + 'address' => [\&_sort_place, ['place']], + 'author' => [\&_sort_author, []], + 'booksubtitle' => [\&_sort_title, ['booksubtitle']], + 'booktitle' => [\&_sort_title, ['booktitle']], + 'booktitleaddon' => [\&_sort_title, ['booktitleaddon']], + 'citeorder' => [\&_sort_citeorder, []], + 'day' => [\&_sort_dm, ['day']], + 'editor' => [\&_sort_editor, ['editor']], + 'editora' => [\&_sort_editor, ['editora']], + 'editoratype' => [\&_sort_editortc, ['editoratype']], + 'editorb' => [\&_sort_editor, ['editorb']], + 'editorbtype' => [\&_sort_editortc, ['editorbtype']], + 'editorc' => [\&_sort_editor, ['editorc']], + 'editorctype' => [\&_sort_editortc, ['editorctype']], + 'endday' => [\&_sort_dm, ['endday']], + 'endmonth' => [\&_sort_dm, ['endmonth']], + 'endyear' => [\&_sort_year, ['endyear']], + 'entrykey' => [\&_sort_entrykey, []], + 'eventday' => [\&_sort_dm, ['eventday']], + 'eventendday' => [\&_sort_dm, ['eventendday']], + 'eventendmonth' => [\&_sort_dm, ['eventendmonth']], + 'eventendyear' => [\&_sort_year, ['eventendyear']], + 'eventmonth' => [\&_sort_dm, ['eventmonth']], + 'eventtitle' => [\&_sort_title, ['eventtitle']], + 'eventyear' => [\&_sort_year, ['eventyear']], + 'issuesubtitle' => [\&_sort_title, ['issuesubtitle']], + 'issuetitle' => [\&_sort_title, ['issuetitle']], + 'institution' => [\&_sort_place, ['institution']], + 'journalsubtitle' => [\&_sort_title, ['journalsubtitle']], + 'journaltitle' => [\&_sort_title, ['journaltitle']], + 'labelalpha' => [\&_sort_labelalpha, []], + 'labelname' => [\&_sort_labelname, []], + 'labelyear' => [\&_sort_labelyear, []], + 'location' => [\&_sort_place, ['location']], + 'mainsubtitle' => [\&_sort_title, ['mainsubtitle']], + 'maintitle' => [\&_sort_title, ['maintitle']], + 'maintitleaddon' => [\&_sort_title, ['maintitleaddon']], + 'month' => [\&_sort_dm, ['month']], + 'origday' => [\&_sort_dm, ['origday']], + 'origendday' => [\&_sort_dm, ['origendday']], + 'origendmonth' => [\&_sort_dm, ['origendmonth']], + 'origendyear' => [\&_sort_year, ['origendyear']], + 'origmonth' => [\&_sort_dm, ['origmonth']], + 'origtitle' => [\&_sort_title, ['origtitle']], + 'origyear' => [\&_sort_year, ['origyear']], + 'organization' => [\&_sort_place, ['organization']], + 'presort' => [\&_sort_presort, []], + 'publisher' => [\&_sort_publisher, []], + 'pubstate' => [\&_sort_pubstate, []], + 'school' => [\&_sort_place, ['school']], + 'shorthand' => [\&_sort_shorthand, []], + 'shorttitle' => [\&_sort_title, ['shorttitle']], + 'sortkey' => [\&_sort_sortkey, []], + 'sortname' => [\&_sort_sortname, []], + 'sorttitle' => [\&_sort_title, ['sorttitle']], + 'sortyear' => [\&_sort_year, ['sortyear']], + 'subtitle' => [\&_sort_title, ['subtitle']], + 'title' => [\&_sort_title, ['title']], + 'titleaddon' => [\&_sort_title, ['titleaddon']], + 'translator' => [\&_sort_translator, []], + 'urlday' => [\&_sort_dm, ['urlday']], + 'urlendday' => [\&_sort_dm, ['urlendday']], + 'urlendmonth' => [\&_sort_dm, ['urlendmonth']], + 'urlendyear' => [\&_sort_year, ['urlendyear']], + 'urlmonth' => [\&_sort_dm, ['urlmonth']], + 'urlyear' => [\&_sort_year, ['urlyear']], + 'volume' => [\&_sort_volume, []], + 'year' => [\&_sort_year, ['year']], + }; + +# Main sorting dispatch method +sub _dispatch_sorting { + my ($self, $sortfield, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $code_ref; + my $code_args_ref; + + # If this field is excluded from sorting for this entrytype, then skip it and return + if (my $se = Biber::Config->getblxoption('sortexclusion', $be->get_field('entrytype'))) { + if ($se->{$sortfield}) { + return ''; + } + } + + # if the field is not found in the dispatch table, assume it's a literal string + unless (exists($dispatch_sorting->{$sortfield})) { + $code_ref = \&_sort_literal; + $code_args_ref = [$sortfield]; + } + else { # real sorting field + $code_ref = ${$dispatch_sorting->{$sortfield}}[0]; + $code_args_ref = ${$dispatch_sorting->{$sortfield}}[1]; + } + return &{$code_ref}($self, $citekey, $sortelementattributes, $code_args_ref); +} + +# Conjunctive set of sorting sets +sub _generatesortinfo { + my ($self, $citekey, $list, $sortscheme) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $sortobj; + $BIBER_SORT_FINAL = 0; + $BIBER_SORT_FINAL = ''; + foreach my $sortset (@{$sortscheme}) { + my $s = $self->_sortset($sortset, $citekey); + # We have already found a "final" item so if this item returns null, + # copy in the "final" item string as it's the master key for this entry now + if ($BIBER_SORT_FINAL and not $BIBER_SORT_NULL) { + push @$sortobj, $BIBER_SORT_FINAL; + } + else { + push @$sortobj, $s; + } + } + + # Record the information needed for sorting later + # sortstring isn't actually used to sort, it's used to generate sortinit and + # for debugging purposes + my $ss = join($sorting_sep, @$sortobj); + $list->set_sortdata($citekey, [$ss, $sortobj]); + + # Generate sortinit - the initial letter of the sortstring. Skip + # if there is no sortstring, which is possible in tests + if ($ss) { + # This must ignore the presort characters, naturally + my $pre = Biber::Config->getblxoption('presort', $be->get_field('entrytype'), $citekey); + + # Strip off the prefix + $ss =~ s/\A$pre$sorting_sep+//; + my $init = substr $ss, 0, 1; + + # Now check if this sortinit is valid in the bblencoding. If not, warn + # and replace with a suitable value + my $bblenc = Biber::Config->getoption('bblencoding'); + if ($bblenc ne 'UTF-8') { + # Can this init be represented in the BBL encoding? + if (encode($bblenc, $init) eq '?') { # Malformed data encoding char + # So convert to macro + require Biber::LaTeX::Recode; + my $initd = Biber::LaTeX::Recode::latex_encode($init, + scheme => Biber::Config->getoption('bblsafecharsset')); + # warn only on second sorting pass to avoid user confusion + $logger->warn("The character '$init' cannot be encoded in '$bblenc'. sortinit will be set to macro '$initd' for entry '$citekey'"); + $self->{warnings}++; + $init = $initd; + } + } + $list->set_sortinitdata($citekey, $init); + } + return; +} + +# Process sorting set +sub _sortset { + my ($self, $sortset, $citekey) = @_; + foreach my $sortelement (@$sortset[1..$#$sortset]) { + my ($sortelementname, $sortelementattributes) = %$sortelement; + $BIBER_SORT_NULL = 0; # reset this per sortset + my $string = $self->_dispatch_sorting($sortelementname, $citekey, $sortelementattributes); + if ($string) { # sort returns something for this key + if ($sortset->[0]{final}) { + # If we encounter a "final" element, we return an empty sort + # string and save the string so it can be copied into all further + # fields as this is now the master sort key. We use an empty string + # where we found it in order to preserve sort field order and so + # that we sort correctly against all other entries without a value + # for this "final" field + $BIBER_SORT_FINAL = $string; + last; + } + return $string; + } + } + $BIBER_SORT_NULL = 1; # set null flag - need this to deal with some cases + return ''; +} + +############################################## +# Sort dispatch routines +############################################## + +sub _sort_author { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if (Biber::Config->getblxoption('useauthor', $be->get_field('entrytype'), $citekey) and + $be->get_field('author')) { + my $string = $self->_namestring($citekey, 'author'); + return _process_sort_attributes($string, $sortelementattributes); + } + else { + return ''; + } +} + +sub _sort_citeorder { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + # Pad the numbers so that they sort with "cmp" properly. Assume here max of + # a million bib entries. Probably enough ... + return sprintf('%.7d', (first_index {$_ eq $citekey} $section->get_orig_order_citekeys) + 1); +} + +# This is a meta-sub which uses the optional arguments to the dispatch code +# It's done to avoid having many repetitions of almost identical sorting code +# for the many date sorting options +# It deals with day and month fields +sub _sort_dm { + my ($self, $citekey, $sortelementattributes, $args) = @_; + my $dmtype = $args->[0]; # get day/month field type + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if (my $field = $be->get_field($dmtype)) { + return _process_sort_attributes($field, $sortelementattributes); + } + else { + return ''; + } +} + +# This is a meta-sub which uses the optional arguments to the dispatch code +# It's done to avoid having many repetitions of almost identical sorting code +# for the editor roles +sub _sort_editor { + my ($self, $citekey, $sortelementattributes, $args) = @_; + my $ed = $args->[0]; # get editor field + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if (Biber::Config->getblxoption('useeditor', $be->get_field('entrytype'), $citekey) and + $be->get_field($ed)) { + my $string = $self->_namestring($citekey, $ed); + return _process_sort_attributes($string, $sortelementattributes); + } + else { + return ''; + } +} + +# This is a meta-sub which uses the optional arguments to the dispatch code +# It's done to avoid having many repetitions of almost identical sorting code +# for the editor type/class roles +sub _sort_editortc { + my ($self, $citekey, $sortelementattributes, $args) = @_; + my $edtypeclass = $args->[0]; # get editor type/class field + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if (Biber::Config->getblxoption('useeditor', $be->get_field('entrytype'), $citekey) and + $be->get_field($edtypeclass)) { + my $string = $be->get_field($edtypeclass); + return _process_sort_attributes($string, $sortelementattributes); + } + else { + return ''; + } +} + +# debug sorting +sub _sort_entrykey { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + return $citekey; +} + + +sub _sort_labelalpha { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if ($be->get_field('sortlabelalpha')) { + my $string = $be->get_field('sortlabelalpha'); + return _process_sort_attributes($string, $sortelementattributes); + } + else { + return ''; + } +} + +sub _sort_labelname { + my ($self, $citekey, $sortelementattributes, $args) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + # re-direct to the right sorting routine for the labelname + if (my $ln = $be->get_field('labelnamename')) { + # Don't process attributes as they will be processed in the real sub + return $self->_dispatch_sorting($ln, $citekey, $sortelementattributes); + } + else { + return ''; + } +} + +sub _sort_labelyear { + my ($self, $citekey, $sortelementattributes, $args) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + # re-direct to the right sorting routine for the labelyear + if (my $ly = $be->get_field('labelyearname')) { + # Don't process attributes as they will be processed in the real sub + return $self->_dispatch_sorting($ly, $citekey, $sortelementattributes); + } + else { + return ''; + } +} + +sub _sort_literal { + my ($self, $citekey, $sortelementattributes, $args) = @_; + my $string = $args->[0]; # get literal string + return _process_sort_attributes($string, $sortelementattributes); +} + +# This is a meta-sub which uses the optional arguments to the dispatch code +# It's done to avoid having many repetitions of almost identical sorting code +# for the place (address/location/institution etc.) sorting options +sub _sort_place { + my ($self, $citekey, $sortelementattributes, $args) = @_; + my $pltype = $args->[0]; # get place field type + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if ($be->get_field($pltype)) { + my $string = $self->_liststring($citekey, $pltype); + return _process_sort_attributes($string, $sortelementattributes); + } + else { + return ''; + } +} + +sub _sort_presort { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $string = Biber::Config->getblxoption('presort', $be->get_field('entrytype'), $citekey); + return _process_sort_attributes($string, $sortelementattributes); +} + +sub _sort_publisher { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if ($be->get_field('publisher')) { + my $string = $self->_liststring($citekey, 'publisher'); + return _process_sort_attributes($string, $sortelementattributes); + } + else { + return ''; + } +} + +sub _sort_pubstate { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $string = $be->get_field('pubstate') // ''; + return _process_sort_attributes($string, $sortelementattributes); +} + +sub _sort_shorthand { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $string = $be->get_field('shorthand') // ''; + return _process_sort_attributes($string, $sortelementattributes); +} + +sub _sort_sortkey { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $string = $be->get_field('sortkey') // ''; + return _process_sort_attributes($string, $sortelementattributes); +} + +sub _sort_sortname { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + + # see biblatex manual §3.4 - sortname is ignored if no use<name> option is defined + if ($be->get_field('sortname') and + (Biber::Config->getblxoption('useauthor', $be->get_field('entrytype'), $citekey) or + Biber::Config->getblxoption('useeditor', $be->get_field('entrytype'), $citekey) or + Biber::Config->getblxoption('useetranslator', $be->get_field('entrytype'), $citekey))) { + my $string = $self->_namestring($citekey, 'sortname'); + return _process_sort_attributes($string, $sortelementattributes); + } + else { + return ''; + } +} + +# This is a meta-sub which uses the optional arguments to the dispatch code +# It's done to avoid having many repetitions of almost identical sorting code +# for the title sorting options +sub _sort_title { + my ($self, $citekey, $sortelementattributes, $args) = @_; + my $ttype = $args->[0]; # get year field type + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if (my $field = $be->get_field($ttype)) { + my $string = normalise_string_sort($field, $ttype); + return _process_sort_attributes($string, $sortelementattributes); + } + else { + return ''; + } +} + +sub _sort_translator { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if (Biber::Config->getblxoption('usetranslator', $be->get_field('entrytype'), $citekey) and + $be->get_field('translator')) { + my $string = $self->_namestring($citekey, 'translator'); + return _process_sort_attributes($string, $sortelementattributes); + } + else { + return ''; + } +} + +sub _sort_volume { + my ($self, $citekey, $sortelementattributes) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if (my $field = $be->get_field('volume')) { + return _process_sort_attributes($field, $sortelementattributes); + } + else { + return ''; + } +} + +# This is a meta-sub which uses the optional arguments to the dispatch code +# It's done to avoid having many repetitions of almost identical sorting code +# for the many date sorting options +# It deals with year fields +sub _sort_year { + my ($self, $citekey, $sortelementattributes, $args) = @_; + my $ytype = $args->[0]; # get year field type + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + if (my $field = $be->get_field($ytype)) { + return _process_sort_attributes($field, $sortelementattributes); + } + else { + return ''; + } +} + +#======================================================== +# Utility subs used elsewhere but relying on sorting code +#======================================================== + +sub _process_sort_attributes { + my ($field_string, $sortelementattributes) = @_; + return $field_string unless $sortelementattributes; + # process substring + if ($sortelementattributes->{substring_width} or + $sortelementattributes->{substring_side}) { + my $subs_offset = 0; + my $default_substring_width = 4; + my $default_substring_side = 'left'; + my $subs_width = ($sortelementattributes->{substring_width} or $default_substring_width); + my $subs_side = ($sortelementattributes->{substring_side} or $default_substring_side); + if ($subs_side eq 'right') { + $subs_offset = 0 - $subs_width; + } + $field_string = substr( $field_string, $subs_offset, $subs_width ); + } + # Process padding + if ($sortelementattributes->{pad_side} or + $sortelementattributes->{pad_width} or + $sortelementattributes->{pad_char}) { + my $default_pad_width = 4; + my $default_pad_side = 'left'; + my $default_pad_char = '0'; + my $pad_width = ($sortelementattributes->{pad_width} or $default_pad_width); + my $pad_side = ($sortelementattributes->{pad_side} or $default_pad_side); + my $pad_char = ($sortelementattributes->{pad_char} or $default_pad_char); + my $pad_length = $pad_width - length($field_string); + if ($pad_side eq 'left') { + $field_string = ($pad_char x $pad_length) . $field_string; + } + elsif ($pad_side eq 'right') { + $field_string = $field_string . ($pad_char x $pad_length); + } + } + return $field_string; +} + +sub _namestring { + my $self = shift; + my ($citekey, $field) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my $names = $be->get_field($field); + my $str = ''; + my $truncated = 0; + my $truncnames = dclone($names); + + # These should be symbols which can't appear in names + # This means, symbols which normalise_string_sort strips out + my $nsi = '_'; # name separator, internal + my $nse = '+'; # name separator, external + # Guaranteed to sort after everything else as it's the last legal Unicode code point + my $trunc = "\x{10FFFD}"; # sort string for "et al" truncated name + + # perform truncation according to options minnames, maxnames + if ( $names->count_elements > Biber::Config->getblxoption('maxnames') ) { + $truncated = 1; + $truncnames = $truncnames->first_n_elements(Biber::Config->getblxoption('minnames')); + } + + # We strip nosort first otherwise normalise_string_sort damages diacritics + # We strip each individual component instead of the whole thing so we can use + # as name separators things which would otherwise be stripped. This way we + # guarantee that the separators are never in names + foreach my $n ( @{$truncnames->names} ) { + # If useprefix is true, use prefix at start of name for sorting + if ( $n->get_prefix and + Biber::Config->getblxoption('useprefix', $be->get_field('entrytype'), $citekey ) ) { + $str .= normalise_string_sort($n->get_prefix, $field) . $nsi; + } + $str .= normalise_string_sort($n->get_lastname, $field) . $nsi; + $str .= normalise_string_sort($n->get_firstname, $field) . $nsi if $n->get_firstname; + $str .= normalise_string_sort($n->get_middlename, $field) . $nsi if $n->get_middlename; + $str .= normalise_string_sort($n->get_suffix, $field) . $nsi if $n->get_suffix; + + # If useprefix is false, use prefix at end of name + if ( $n->get_prefix and not + Biber::Config->getblxoption('useprefix', $be->get_field('entrytype'), $citekey ) ) { + $str .= normalise_string_sort($n->get_prefix, $field) . $nsi; + } + + $str =~ s/\Q$nsi\E\z//xms; # Remove any trailing internal separator + $str .= $nse; # Add separator in between names + } + + $str =~ s/\s+\Q$nse\E/$nse/gxms; # Remove any whitespace before external separator + $str =~ s/\Q$nse\E\z//xms; # strip final external separator as we are finished + $str .= "$nse$trunc" if $truncated; + return $str; +} + +sub _liststring { + my ( $self, $citekey, $field ) = @_; + my $secnum = $self->get_current_section; + my $section = $self->sections->get_section($secnum); + my $be = $section->bibentry($citekey); + my @items = @{$be->get_field($field)}; + my $str = ''; + my $truncated = 0; + + # These should be symbols which can't appear in lists + # This means, symbols which normalise_string_sort strips out + my $lsi = '_'; # list separator, internal + my $lse = '+'; # list separator, external + # Guaranteed to sort after everything else as it's the last legal Unicode code point + my $trunc = "\x{10FFFD}"; # sort string for truncated list + + # perform truncation according to options minitems, maxitems + if ( $#items + 1 > Biber::Config->getblxoption('maxitems') ) { + $truncated = 1; + @items = splice(@items, 0, Biber::Config->getblxoption('minitems') ); + } + + # separate the items by a string to give some structure + $str = join($lsi, map { normalise_string_sort($_, $field)} @items); + $str .= $lse; + + $str =~ s/\s+\Q$lse\E/$lse/gxms; + $str =~ s/\Q$lse\E\z//xms; + $str .= "$lse$trunc" if $truncated; + return $str; +} + +=head2 process_entry_options + + Set per-entry options + + "dataonly" is a special case and expands to "skiplab,skiplos,skipbib" + but only "skiplab" and "skiplos" are dealt with in Biber, "skipbib" is + dealt with in biblatex. + +=cut + +sub process_entry_options { + my $self = shift; + my $citekey = shift; + my $options = shift; + if ( $options ) { # Just in case it's null + my @entryoptions = split /\s*,\s*/, $options; + foreach (@entryoptions) { + m/^([^=]+)=?(.+)?$/; + if ( $2 and $2 eq 'false' ) { + if (lc($1) eq 'dataonly') { + Biber::Config->setblxoption('skiplab', 0, 'PER_ENTRY', $citekey); + Biber::Config->setblxoption('skiplos', 0, 'PER_ENTRY', $citekey); + } + else { + Biber::Config->setblxoption($1, 0, 'PER_ENTRY', $citekey); + } + } + elsif ( ($2 and $2 eq 'true') or not $2) { + if (lc($1) eq 'dataonly') { + Biber::Config->setblxoption('skiplab', 1, 'PER_ENTRY', $citekey); + Biber::Config->setblxoption('skiplos', 1, 'PER_ENTRY', $citekey); + } + else { + Biber::Config->setblxoption($1, 1, 'PER_ENTRY', $citekey); + } + } + elsif ($2) { + if (lc($1) eq 'dataonly') { + Biber::Config->setblxoption('skiplab', $2, 'PER_ENTRY', $citekey); + Biber::Config->setblxoption('skiplos', $2, 'PER_ENTRY', $citekey); + } + else { + Biber::Config->setblxoption($1, $2, 'PER_ENTRY', $citekey); + } + } + else { + if (lc($1) eq 'dataonly') { + Biber::Config->setblxoption('skiplab', 1, 'PER_ENTRY', $citekey); + Biber::Config->setblxoption('skiplos', 1, 'PER_ENTRY', $citekey); + } + else { + Biber::Config->setblxoption($1, 1, 'PER_ENTRY', $citekey); + } + } + } + } +} + + +=head1 AUTHOR + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/LaTeX/Recode.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/LaTeX/Recode.pm new file mode 100644 index 00000000000..d395e808504 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/LaTeX/Recode.pm @@ -0,0 +1,327 @@ +package Biber::LaTeX::Recode; +#use feature 'unicode_strings'; +use strict; +use warnings; +no warnings 'utf8'; +use Unicode::Normalize; +use Biber::LaTeX::Recode::Data; +use Exporter; +use base qw(Exporter); +use Carp; + +our $VERSION = '0.1'; +our @EXPORT = qw(latex_encode latex_decode); + +=encoding utf-8 + +=head1 NAME + +Biber::LaTeX::Recode - Encode/Decode chars to/from UTF-8/lacros in LaTeX + +=head1 VERSION + +Version 0.01 + +=head1 SYNOPSIS + + use Biber::LaTeX:Recode + + my $string = 'Muḥammad ibn MÅ«sÄ al-KhwÄrizmÄ«'; + my $latex_string = latex_encode($string); + # => 'Mu\d{h}ammad ibn M\=us\=a al-Khw\=arizm\={\i}' + + my $string = 'Mu\d{h}ammad ibn M\=us\=a al-Khw\=arizm\={\i}'; + my $utf8_string = latex_decode($string); + # => 'Muḥammad ibn MÅ«sÄ al-KhwÄrizmÄ«' + +=head1 DESCRIPTION + +Allows conversion between Unicode chars and LaTeX macros. + +=head1 GLOBAL OPTIONS + +The decoding scheme can be set with + + $Biber::LaTeX::Recode::DefaultScheme = '<name>'; + +Possible values are 'base', 'extra' and 'full'; default value is 'extra'. + +base => Most common macros and diacritics (sufficient for Western languages + and common symbols) + +extra => Also converts punctuation, larger range of diacritics and macros + (e.g. for IPA, Latin Extended Additional, etc.) + +full => Also converts symbols, Greek letters, dingbats, negated symbols, and + superscript characters and symbols ... + +=cut + + +our $DefaultScheme_d = 'extra'; +our $DefaultScheme_e = 'extra'; + + +=head2 latex_decode($text, @options) + +Converts LaTeX macros in the $text to Unicode characters. + +The function accepts a number of options: + + * normalize => $bool (default 1) + whether the output string should be normalized with Unicode::Normalize + + * normalization => <normalization form> (default 'NFC') + and if yes, the normalization form to use (see the Unicode::Normalize documentation) + + * strip_outer_braces => $bool (default 0) + whether the outer curly braces around letters+combining marks should be + stripped off. By default "fut{\\'e}" becomes fut{é}, to prevent something + like '\\textuppercase{\\'e}' to become '\\textuppercaseé'. Setting this option to + TRUE can be useful for instance when converting BibTeX files. + +=cut + +sub latex_decode { + my $text = shift; + my %opts = @_; + my $norm = exists $opts{normalize} ? $opts{normalize} : 1; + my $norm_form = exists $opts{normalization} ? $opts{normalization} : 'NFC'; + my $scheme = exists $opts{scheme} ? $opts{scheme} : $DefaultScheme_d; + croak "invalid scheme name '$scheme'" + unless ( $scheme eq 'full' or $scheme eq 'base' or $scheme eq 'extra' ); + my $strip_outer_braces = + exists $opts{strip_outer_braces} ? $opts{strip_outer_braces} : 0; + + my %DIAC = _get_diac($scheme); + my ($WORDMAC, $WORDMAC_RE) = _get_mac($scheme); + + my $DIAC_RE; + if ( $scheme eq 'base' ) { + $DIAC_RE = $DIAC_RE_BASE; + } + else { + $DIAC_RE = $DIAC_RE_EXTRA; + } + + if ( $scheme eq 'full' ) { + $text =~ s/\\not\\($NEG_SYMB_RE)/$NEGATEDSYMBOLS{$1}/ge; + $text =~ s/\\textsuperscript{($SUPER_RE)}/$SUPERSCRIPTS{$1}/ge; + $text =~ s/\\textsuperscript{\\($SUPERCMD_RE)}/$CMDSUPERSCRIPTS{$1}/ge; + $text =~ s/\\dings{([2-9AF][0-9A-F])}/$DINGS{$1}/ge; + } + + $text =~ s/(\\[a-zA-Z]+)\\(\s+)/$1\{\}$2/g; # \foo\ bar -> \foo{} bar + $text =~ s/([^{]\\\w)([;,.:%])/$1\{\}$2/g; #} Aaaa\o, -> Aaaa\o{}, + $text =~ s/(\\(?:$DIAC_RE_BASE|$ACCENTS_RE)){\\i}/$1\{i\}/g; + # special cases such as '\={\i}' -> '\={i}' -> "i\x{304}" + + ## remove {} around macros that print one character + ## by default we skip that, as it would break constructions like \foo{\i} + if ($strip_outer_braces) { + $text =~ s/ \{\\($WORDMAC_RE)\} / $WORDMAC->{$1} /gxe; + } + $text =~ s/ \\($WORDMAC_RE)(?: \{\} | \s+ | \b) / $WORDMAC->{$1} /gxe; + + $text =~ s/\\($ACCENTS_RE)\{(\p{L}\p{M}*)\}/$2 . $ACCENTS{$1}/ge; + + $text =~ s/\\($ACCENTS_RE)(\p{L}\p{M}*)/$2 . $ACCENTS{$1}/ge; + + $text =~ s/\\($DIAC_RE)\s*\{(\p{L}\p{M}*)\}/$2 . $DIAC{$1}/ge; + + $text =~ s/\\($DIAC_RE)\s+(\p{L}\p{M}*)/$2 . $DIAC{$1}/ge; + + $text =~ s/\\($ACCENTS_RE)\{(\p{L}\p{M}*)\}/$2 . $ACCENTS{$1}/ge; + + $text =~ s/\\($ACCENTS_RE)(\p{L}\p{M}*)/$2 . $ACCENTS{$1}/ge; + + $text =~ s/\\($DIAC_RE)\s*\{(\p{L}\p{M}*)\}/$2 . $DIAC{$1}/ge; + + $text =~ s/\\($DIAC_RE)\s+(\p{L}\p{M}*)/$2 . $DIAC{$1}/ge; + + ## remove {} around letter+combining mark(s) + ## by default we skip that, as it would destroy constructions like \foo{\`e} + if ($strip_outer_braces) { + $text =~ s/{(\PM\pM+)}/$1/g; + } + + if ($norm) { + return Unicode::Normalize::normalize( $norm_form, $text ); + } + else { + return $text; + } +} + +=head2 latex_encode($text, @options) + +Converts LaTeX character macros to UTF-8 + +=cut + +sub latex_encode { + my $text = NFD(shift); + my %opts = @_; + my $scheme = exists $opts{scheme} ? $opts{scheme} : $DefaultScheme_e; + croak "invalid scheme name '$scheme'" + unless ( $scheme eq 'full' or $scheme eq 'base' or $scheme eq 'extra' ); + # choose the diacritics set to use + my %DIAC_R = _get_diac_r($scheme); + my $DIAC_RE_R; + if ( $scheme eq 'base' ) { + $DIAC_RE_R = $DIAC_RE_BASE_R; + } + else { + $DIAC_RE_R = $DIAC_RE_EXTRA_R; + } + + # choose the macro set to use + my ($WORDMAC_R, $WORDMAC_RE_R) = _get_mac_r($scheme); + + if ( $scheme eq 'full' ) { + $text =~ s/($NEG_SYMB_RE_R)/"\\not\\" . $NEGATEDSYMBOLS_R{$1}/ge; + $text =~ s/($SUPER_RE_R)/"\\textsuperscript{" . $SUPERSCRIPTS_R{$1} . "}"/ge; + $text =~ s/($SUPERCMD_RE_R)/"\\textsuperscript{\\" . $CMDSUPERSCRIPTS_R{$1} . "}"/ge; + $text =~ s/($DINGS_RE_R)/"\\dings{" . $DINGS_R{$1} . "}"/ge; + } + + # Accents + + # special case such as "i\x{304}" -> '\={\i}' - "i" needs the dot removing for accents + $text =~ s/i($ACCENTS_RE_R)/"\\" . $ACCENTS_R{$1} . "{\\i}"/ge; + + $text =~ s/\{(\p{L}\p{M}*)\}($ACCENTS_RE_R)/"\\" . $ACCENTS_R{$2} . "{$1}"/ge; + $text =~ s/(\p{L}\p{M}*)($ACCENTS_RE_R)/"\\" . $ACCENTS_R{$2} . "{$1}"/ge; + + # Diacritics + $text =~ s{ + (\P{M})($DIAC_RE_R)($DIAC_RE_R)($DIAC_RE_R) + }{ + "\\" . $DIAC_R{$4} . "{\\" . $DIAC_R{$3} . "{\\" . $DIAC_R{$2} . _get_diac_last_r($1,$2) . '}}' + }gex; + $text =~ s{ + (\P{M})($DIAC_RE_R)($DIAC_RE_R) + }{ + "\\" . $DIAC_R{$3} . "{\\" . $DIAC_R{$2} . _get_diac_last_r($1,$2) . '}' + }gex; + $text =~ s{ + (\P{M})($DIAC_RE_R) + }{ + "\\" . $DIAC_R{$2} . _get_diac_last_r($1,$2) + }gex; + + # General macros (excluding special encoding excludes) + $text =~ s/($WORDMAC_RE_R)/"{\\" . $WORDMAC_R->{$1} . '}'/ge; + + # Only replace these if using "full" scheme + if ($scheme eq 'full') { + my %WORDMATHMAC_R = ( %PUNCTUATION_R, %SYMBOLS_R, %GREEK_R ); + my $WORDMATHMAC_RE_R = join( '|', sort { length $b <=> length $a } keys %WORDMATHMAC_R ); + # Math mode macros (excluding special encoding excludes) + $text =~ s/($WORDMATHMAC_RE_R)/"{\$\\" . $WORDMATHMAC_R{$1} . '$}'/ge; + } + + return $text; +} + + +# Helper subroutines + +sub _get_diac { + my $scheme = shift; + if ( $scheme eq 'base' ) { + return %DIACRITICS; + } + else { + return ( %DIACRITICS, %DIACRITICSEXTRA ); + } +} + +sub _get_diac_r { + my $scheme = shift; + if ( $scheme eq 'base' ) { + return %DIACRITICS_R; + } + else { + return ( %DIACRITICS_R, %DIACRITICSEXTRA_R); + } +} + + +sub _get_mac { + my $scheme = shift; + my %macs; + if ( $scheme eq 'base' ) { + %macs = %WORDMACROS; + } + elsif ( $scheme eq 'full' ) { + %macs = ( %WORDMACROS, %WORDMACROSEXTRA, %PUNCTUATION, %SYMBOLS, + %GREEK ); + } + else { + %macs = ( %WORDMACROS, %WORDMACROSEXTRA, %PUNCTUATION ); + } + return (\%macs, join( '|', sort { length $b <=> length $a } keys %macs )); +} + +sub _get_mac_r { + my $scheme = shift; + my %macs; + if ( $scheme eq 'base' ) { + %macs = %WORDMACROS_R; + } + elsif ( $scheme eq 'full' ) { + %macs = ( %WORDMACROS_R, %WORDMACROSEXTRA_R ); + } + else { + %macs = ( %WORDMACROS_R, %WORDMACROSEXTRA_R ); + } + + # don't encode things which latex needs like braces etc. + foreach my $e (keys %ENCODE_EXCLUDE_R) { + delete($macs{$e}); + } + return (\%macs, join( '|', sort { length $b <=> length $a } keys %macs )); +} + + +sub _get_diac_last_r { + my ($a,$b) = @_; + if ( $b =~ /$ACCENTS_RE_R/) { + return $a eq 'i' ? '{\\i}' : $a + } + else { + return "{$a}" + } +} + + +=head1 AUTHOR + +François Charette, C<< <firmicus@cpan.org> >> + +=head1 BUGS + +Please report any bugs or feature requests to C<bug-latex-decode at +rt.cpan.org>, or through the web interface at +L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=LaTeX-Decode>. I will be +notified, and then you'll automatically be notified of progress on your bug as +I make changes. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2010 François Charette, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=4 shiftwidth=4 expandtab: + diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/LaTeX/Recode/Data.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/LaTeX/Recode/Data.pm new file mode 100644 index 00000000000..926045a9d02 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/LaTeX/Recode/Data.pm @@ -0,0 +1,1013 @@ +package Biber::LaTeX::Recode::Data; +#use feature 'unicode_strings'; +use strict; +use warnings; +use base qw(Exporter); +our @EXPORT = qw[ %ACCENTS %ACCENTS_R + %WORDMACROS %WORDMACROS_R + %DIACRITICS %DIACRITICS_R + %WORDMACROSEXTRA %WORDMACROSEXTRA_R + %DIACRITICSEXTRA %DIACRITICSEXTRA_R + %PUNCTUATION %PUNCTUATION_R + %NEGATEDSYMBOLS %NEGATEDSYMBOLS_R + %SUPERSCRIPTS %SUPERSCRIPTS_R + %SYMBOLS %SYMBOLS_R + %CMDSUPERSCRIPTS %CMDSUPERSCRIPTS_R + %DINGS %DINGS_R + %GREEK %GREEK_R + %ENCODE_EXCLUDE_R + $ACCENTS_RE $ACCENTS_RE_R + $DIAC_RE_BASE $DIAC_RE_BASE_R + $DIAC_RE_EXTRA $DIAC_RE_EXTRA_R + $NEG_SYMB_RE $NEG_SYMB_RE_R + $SUPER_RE $SUPER_RE_R + $SUPERCMD_RE $SUPERCMD_RE_R + $DINGS_RE_R + ]; + +our %ACCENTS = ( + chr(0x60) => "\x{300}", #` + chr(0x27) => "\x{301}", #' + chr(0x5e) => "\x{302}", #^ + chr(0x7e) => "\x{303}", #~ + chr(0x3d) => "\x{304}", #= + chr(0x2e) => "\x{307}", #. + chr(0x22) => "\x{308}", #" +); + +our %ACCENTS_R = reverse %ACCENTS; + +our %WORDMACROS = ( + textquotedbl => "\x{0022}", + texthash => "\x{0023}", + textdollar => "\x{0024}", + textpercent => "\x{0025}", + textampersand => "\x{0026}", + textquotesingle => "\x{0027}", + textasteriskcentered => "\x{002A}", + textless => "\x{003C}", + textequals => "\x{003D}", + textgreater => "\x{003E}", + textbackslash => "\x{005C}", + textasciicircum => "\x{005E}", + textunderscore => "\x{005F}", + textasciigrave => "\x{0060}", + textg => "\x{0067}", + textbraceleft => "\x{007B}", + textbar => "\x{007C}", + textbraceright => "\x{007D}", + textasciitilde => "\x{007E}", + nobreakspace => "\x{00A0}", + textexclamdown => "\x{00A1}", + textcent => "\x{00A2}", + pounds => "\x{00A3}", + textsterling => "\x{00A3}", + textcurrency => "\x{00A4}", + textyen => "\x{00A5}", + textbrokenbar => "\x{00A6}", + S => "\x{00A7}", + textsection => "\x{00A7}", + textasciidieresis => "\x{00A8}", + copyright => "\x{00A9}", + textcopyright => "\x{00A9}", + textordfeminine => "\x{00AA}", + guillemotleft => "\x{00AB}", + lnot => "\x{00AC}", + textlogicalnot => "\x{00AC}", + textminus => "\x{2212}", + textregistered => "\x{00AE}", + textasciimacron => "\x{00AF}", + textdegree => "\x{00B0}", + pm => "\x{00B1}", + textpm => "\x{00B1}", + texttwosuperior => "\x{00B2}", + textthreesuperior => "\x{00B3}", + textasciiacute => "\x{00B4}", + mu => "\x{00B5}", + textmu => "\x{00B5}", + P => "\x{00B6}", + textparagraph => "\x{00B6}", + textperiodcentered => "\x{00B7}", + textcentereddot => "\x{00B7}", + textasciicedilla => "\x{00B8}", + textonesuperior => "\x{00B9}", + textordmasculine => "\x{00BA}", + guillemotright => "\x{00BB}", + textonequarter => "\x{00BC}", + textonehalf => "\x{00BD}", + textthreequarters => "\x{00BE}", + textquestiondown => "\x{00BF}", + AA => "\x{00C5}", + AE => "\x{00C6}", + DH => "\x{00D0}", + times => "\x{00D7}", + texttimes => "\x{00D7}", + O => "\x{00D8}", + TH => "\x{00DE}", + Thorn => "\x{00DE}", + ss => "\x{00DF}", + aa => "\x{00E5}", + ae => "\x{00E6}", + dh => "\x{00F0}", + div => "\x{00F7}", + textdiv => "\x{00F7}", + o => "\x{00F8}", + th => "\x{00FE}", + textthorn => "\x{00FE}", + textthornvari => "\x{00FE}", + textthornvarii => "\x{00FE}", + textthornvariii => "\x{00FE}", + textthornvariv => "\x{00FE}", + DJ => "\x{0110}", + dj => "\x{0111}", + textcrd => "\x{0111}", + textHbar => "\x{0126}", + textcrh => "\x{0127}", + texthbar => "\x{0127}", + i => "\x{0131}", + IJ => "\x{0132}", + ij => "\x{0133}", + textkra => "\x{0138}", + L => "\x{0141}", + l => "\x{0142}", + textbarl => "\x{0142}", + NG => "\x{014A}", + ng => "\x{014B}", + OE => "\x{0152}", + oe => "\x{0153}" +); + +our %WORDMACROS_R = reverse %WORDMACROS; + +our %WORDMACROSEXTRA = ( + textTbar => "\x{0166}", + textTstroke => "\x{0166}", + texttbar => "\x{0167}", + texttstroke => "\x{0167}", + textcrb => "\x{0180}", + textBhook => "\x{0181}", + textOopen => "\x{0186}", + textChook => "\x{0187}", + textchook => "\x{0188}", + texthtc => "\x{0188}", + textDafrican => "\x{0189}", + textDhook => "\x{018A}", + textEreversed => "\x{018E}", + textEopen => "\x{0190}", + textFhook => "\x{0191}", + textflorin => "\x{0192}", + textGammaafrican => "\x{0194}", + texthvlig => "\x{0195}", + hv => "\x{0195}", + textIotaafrican => "\x{0196}", + textKhook => "\x{0198}", + textkhook => "\x{0199}", + texthtk => "\x{0199}", + textcrlambda => "\x{019B}", + textNhookleft => "\x{019D}", + OHORN => "\x{01A0}", + ohorn => "\x{01A1}", + textPhook => "\x{01A4}", + textphook => "\x{01A5}", + texthtp => "\x{01A5}", + textEsh => "\x{01A9}", + ESH => "\x{01A9}", + textlooptoprevesh => "\x{01AA}", + textpalhookbelow => "\x{01AB}", + textThook => "\x{01AC}", + textthook => "\x{01AD}", + texthtt => "\x{01AD}", + textTretroflexhook => "\x{01AE}", + UHORN => "\x{01AF}", + uhorn => "\x{01B0}", + textVhook => "\x{01B2}", + textYhook => "\x{01B3}", + textyhook => "\x{01B4}", + textEzh => "\x{01B7}", + texteturned => "\x{01DD}", + textturna => "\x{0250}", + textscripta => "\x{0251}", + textturnscripta => "\x{0252}", + textbhook => "\x{0253}", + texthtb => "\x{0253}", + textoopen => "\x{0254}", + textopeno => "\x{0254}", + textctc => "\x{0255}", + textdtail => "\x{0256}", + textrtaild => "\x{0256}", + textdhook => "\x{0257}", + texthtd => "\x{0257}", + textreve => "\x{0258}", + textschwa => "\x{0259}", + textrhookschwa => "\x{025A}", + texteopen => "\x{025B}", + textepsilon => "\x{025B}", + textrevepsilon => "\x{025C}", + textrhookrevepsilon => "\x{025D}", + textcloserevepsilon => "\x{025E}", + textbardotlessj => "\x{025F}", + texthtg => "\x{0260}", + textscriptg => "\x{0261}", + textscg => "\x{0262}", + textgammalatinsmall => "\x{0263}", + textgamma => "\x{0263}", + textramshorns => "\x{0264}", + textturnh => "\x{0265}", + texthth => "\x{0266}", + texththeng => "\x{0267}", + textbari => "\x{0268}", + textiotalatin => "\x{0269}", + textiota => "\x{0269}", + textsci => "\x{026A}", + textltilde => "\x{026B}", + textbeltl => "\x{026C}", + textrtaill => "\x{026D}", + textlyoghlig => "\x{026E}", + textturnm => "\x{026F}", + textturnmrleg => "\x{0270}", + textltailm => "\x{0271}", + textltailn => "\x{0272}", + textnhookleft => "\x{0272}", + textrtailn => "\x{0273}", + textscn => "\x{0274}", + textbaro => "\x{0275}", + textscoelig => "\x{0276}", + textcloseomega => "\x{0277}", + textphi => "\x{0278}", + textturnr => "\x{0279}", + textturnlonglegr => "\x{027A}", + textturnrrtail => "\x{027B}", + textlonglegr => "\x{027C}", + textrtailr => "\x{027D}", + textfishhookr => "\x{027E}", + textlhti => "\x{027F}", # ?? + textscr => "\x{0280}", + textinvscr => "\x{0281}", + textrtails => "\x{0282}", + textesh => "\x{0283}", + texthtbardotlessj => "\x{0284}", + textraisevibyi => "\x{0285}", # ?? + textctesh => "\x{0286}", + textturnt => "\x{0287}", + textrtailt => "\x{0288}", + texttretroflexhook => "\x{0288}", + textbaru => "\x{0289}", + textupsilon => "\x{028A}", + textscriptv => "\x{028B}", + textvhook => "\x{028B}", + textturnv => "\x{028C}", + textturnw => "\x{028D}", + textturny => "\x{028E}", + textscy => "\x{028F}", + textrtailz => "\x{0290}", + textctz => "\x{0291}", + textezh => "\x{0292}", + textyogh => "\x{0292}", + textctyogh => "\x{0293}", + textglotstop => "\x{0294}", + textrevglotstop => "\x{0295}", + textinvglotstop => "\x{0296}", + textstretchc => "\x{0297}", + textbullseye => "\x{0298}", + textscb => "\x{0299}", + textcloseepsilon => "\x{029A}", + texthtscg => "\x{029B}", + textsch => "\x{029C}", + textctj => "\x{029D}", + textturnk => "\x{029E}", + textscl => "\x{029F}", + texthtq => "\x{02A0}", + textbarglotstop => "\x{02A1}", + textbarrevglotstop => "\x{02A2}", + textdzlig => "\x{02A3}", + textdyoghlig => "\x{02A4}", + textdctzlig => "\x{02A5}", + texttslig => "\x{02A6}", + textteshlig => "\x{02A7}", + texttesh => "\x{02A7}", + texttctclig => "\x{02A8}", + hamza => "\x{02BE}", + ain => "\x{02BF}", + ayn => "\x{02BF}", + textprimstress => "\x{02C8}", + textlengthmark => "\x{02D0}" +); + +our %WORDMACROSEXTDA_R = reverse %WORDMACROSEXTRA; + +our %DIACRITICS = ( + r => "\x{030A}", + H => "\x{030B}", + u => "\x{0306}", + v => "\x{030C}", + G => "\x{030F}", + M => "\x{0322}", + d => "\x{0323}", + c => "\x{0327}", + k => "\x{0328}", + b => "\x{0331}", + B => "\x{0335}", + t => "\x{0311}", +); + +our %DIACRITICS_R = reverse %DIACRITICS; + +our %DIACRITICSEXTRA = ( + textvbaraccent => "\x{030D}", + textdoublevbaraccent => "\x{030E}", + textdotbreve => "\x{0310}", + textturncommaabove => "\x{0312}", + textcommaabove => "\x{0313}", + textrevcommaabove => "\x{0314}", + textcommaabover => "\x{0315}", + textsubgrave => "\x{0316}", + textsubacute => "\x{0317}", + textadvancing => "\x{0318}", + textretracting => "\x{0319}", + textlangleabove => "\x{031A}", + textrighthorn => "\x{031B}", + textsublhalfring => "\x{031C}", + textraising => "\x{031D}", + textlowering => "\x{031E}", + textsubplus => "\x{031F}", + textsubbar => "\x{0320}", + textsubminus => "\x{0320}", + textpalhookbelow => "\x{0321}", + textsubumlaut => "\x{0324}", + textsubring => "\x{0325}", + textcommabelow => "\x{0326}", + textsyllabic => "\x{0329}", + textsubbridge => "\x{032A}", + textsubw => "\x{032B}", + textsubwedge => "\x{032C}", + textsubcircnum => "\x{032D}", + textsubbreve => "\x{032E}", + textundertie => "\x{032E}", + textsubarch => "\x{032F}", + textsubtilde => "\x{0330}", + subdoublebar => "\x{0333}", + textsuperimposetilde => "\x{0334}", + textlstrokethru => "\x{0336}", + textsstrikethru => "\x{0337}", + textlstrikethru => "\x{0338}", + textsubrhalfring => "\x{0339}", + textinvsubbridge => "\x{033A}", + textsubsquare => "\x{033B}", + textseagull => "\x{033C}", + textovercross => "\x{033D}", + overbridge => "\x{0346}", + subdoublebar => "\x{0347}", ## ?? + subdoublevert => "\x{0348}", + subcorner => "\x{0349}", + crtilde => "\x{034A}", + textoverw => "\x{034A}", + dottedtilde => "\x{034B}", + doubletilde => "\x{034C}", + spreadlips => "\x{034D}", + whistle => "\x{034E}", + textrightarrowhead => "\x{0350}", + textlefthalfring => "\x{0351}", + sublptr => "\x{0354}", + subrptr => "\x{0355}", + textrightuparrowhead => "\x{0356}", + textrighthalfring => "\x{0357}", + textdoublebreve => "\x{035D}", + textdoublemacron => "\x{035E}", + textdoublemacronbelow => "\x{035F}", + textdoubletilde => "\x{0360}", + texttoptiebar => "\x{0361}", + sliding => "\x{0362}" +); + +our %DIACRITICSEXTRA_R = reverse %DIACRITICSEXTRA; + +our %PUNCTUATION = ( + textendash => "\x{2013}", + textemdash => "\x{2014}", + textquoteleft => "\x{2018}", + textquoteright => "\x{2019}", + quotesinglbase => "\x{201A}", + textquotedblleft => "\x{201C}", + textquotedblright => "\x{201D}", + quotedblbase => "\x{201E}", + dag => "\x{2020}", + ddag => "\x{2021}", + textbullet => "\x{2022}", + dots => "\x{2026}", + textperthousand => "\x{2030}", + textpertenthousand => "\x{2031}", + guilsinglleft => "\x{2039}", + guilsinglright => "\x{203A}", + textreferencemark => "\x{203B}", + textinterrobang => "\x{203D}", + textoverline => "\x{203E}", + langle => "\x{27E8}", + rangle => "\x{27E9}" +); + +our %PUNCTUATION_R = reverse %PUNCTUATION; + +# \not\xxx +our %NEGATEDSYMBOLS = ( + asymp => "\x{226D}", + lesssim => "\x{2274}", + gtrsim => "\x{2275}", + subset => "\x{2284}", + supset => "\x{2285}", + ni => "\x{220C}", + simeq => "\x{2244}", + approx => "\x{2249}", + equiv => "\x{2262}", + preccurlyeq => "\x{22E0}", + succcurlyeq => "\x{22E1}", + sqsubseteq => "\x{22E2}", + sqsupseteq => "\x{22E3}", +); + +our %NEGATEDSYMBOLS_R = reverse %NEGATEDSYMBOLS; + +# \textsuperscript{x} +our %SUPERSCRIPTS = ( + 0 => "\x{2070}", + i => "\x{2071}", + 4 => "\x{2074}", + 5 => "\x{2075}", + 6 => "\x{2076}", + 7 => "\x{2077}", + 8 => "\x{2078}", + 9 => "\x{2079}", + '+' => "\x{207A}", + '-' => "\x{207B}", + '=' => "\x{207C}", + '(' => "\x{207D}", + ')' => "\x{207E}", + n => "\x{207F}", + SM => "\x{2120}", + h => "\x{02b0}", + j => "\x{02b2}", + r => "\x{02b3}", + w => "\x{02b7}", + y => "\x{02b8}" +); + +our %SUPERSCRIPTS_R = reverse %SUPERSCRIPTS; + +# \textsuperscript{\xxx} +our %CMDSUPERSCRIPTS = ( + texthth => "\x{02b1}", + textturnr => "\x{02b4}", + textturnrrtail => "\x{02b5}", + textinvscr => "\x{02b6}" +); + +our %CMDSUPERSCRIPTS_R = reverse %CMDSUPERSCRIPTS; + +our %SYMBOLS = ( + textcolonmonetary => "\x{20A1}", + textlira => "\x{20A4}", + textnaira => "\x{20A6}", + textwon => "\x{20A9}", + textdong => "\x{20AB}", + euro => "\x{20AC}", + texteuro => "\x{20AC}", + textnumero => "\x{2116}", + texttrademark => "\x{2122}", + leftarrow => "\x{2190}", + uparrow => "\x{2191}", + rightarrow => "\x{2192}", + downarrow => "\x{2193}", + leftrightarrow => "\x{2194}", + updownarrow => "\x{2195}", + leadsto => "\x{219D}", + rightleftharpoons => "\x{21CC}", + Rightarrow => "\x{21D2}", + Leftrightarrow => "\x{21D4}", + forall => "\x{2200}", + complement => "\x{2201}", + partial => "\x{2202}", + exists => "\x{2203}", + nexists => "\x{2204}", + set => "\x{2205}", + Delta => "\x{2206}", + nabla => "\x{2207}", + in => "\x{2208}", + notin => "\x{2209}", + ni => "\x{220B}", + prod => "\x{220F}", + coprod => "\x{2210}", + sum => "\x{2211}", + mp => "\x{2213}", + dotplus => "\x{2214}", + setminus => "\x{2216}", + ast => "\x{2217}", + circ => "\x{2218}", + bullet => "\x{2219}", + surd => "\x{221A}", + propto => "\x{221D}", + infty => "\x{221E}", + angle => "\x{2220}", + measuredangle => "\x{2221}", + sphericalangle => "\x{2222}", + mid => "\x{2223}", + nmid => "\x{2224}", + parallel => "\x{2225}", + nparallel => "\x{2226}", + wedge => "\x{2227}", + vee => "\x{2228}", + cap => "\x{2229}", + cup => "\x{222A}", + int => "\x{222B}", + iint => "\x{222C}", + iiint => "\x{222D}", + oint => "\x{222E}", + therefore => "\x{2234}", + because => "\x{2235}", + sim => "\x{223C}", + backsim => "\x{223D}", + wr => "\x{2240}", + nsim => "\x{2241}", + simeq => "\x{2243}", + cong => "\x{2245}", + ncong => "\x{2247}", + approx => "\x{2248}", + approxeq => "\x{224A}", + asymp => "\x{224D}", + Bumpeq => "\x{224E}", + bumpeq => "\x{224F}", + doteq => "\x{2250}", + doteqdot => "\x{2251}", + fallingdotseq => "\x{2252}", + risingdotseq => "\x{2253}", + eqcirc => "\x{2256}", + circeq => "\x{2257}", + triangleq => "\x{225C}", + neq => "\x{2260}", + equiv => "\x{2261}", + leq => "\x{2264}", + geq => "\x{2265}", + leqq => "\x{2266}", + geqq => "\x{2267}", + lneqq => "\x{2268}", + gneqq => "\x{2269}", + ll => "\x{226A}", + gg => "\x{226B}", + between => "\x{226C}", + nless => "\x{226E}", + ngtr => "\x{226F}", + nleq => "\x{2270}", + ngeq => "\x{2271}", + lesssim => "\x{2272}", + gtrsim => "\x{2273}", + lessgtr => "\x{2276}", + gtrless => "\x{2277}", + prec => "\x{227A}", + succ => "\x{227B}", + preccurlyeq => "\x{227C}", + succcurlyeq => "\x{227D}", + precsim => "\x{227E}", + succsim => "\x{227F}", + nprec => "\x{2280}", + nsucc => "\x{2281}", + subset => "\x{2282}", + supset => "\x{2283}", + subseteq => "\x{2286}", + supseteq => "\x{2287}", + nsubseteq => "\x{2288}", + nsupseteq => "\x{2289}", + subsetneq => "\x{228A}", + supsetneq => "\x{228B}", + uplus => "\x{228E}", + sqsubset => "\x{228F}", + sqsupset => "\x{2290}", + sqsubseteq => "\x{2291}", + sqsupseteq => "\x{2292}", + sqcap => "\x{2293}", + sqcup => "\x{2294}", + oplus => "\x{2295}", + ominus => "\x{2296}", + otimes => "\x{2297}", + oslash => "\x{2298}", + odot => "\x{2299}", + circledcirc => "\x{229A}", + circledast => "\x{229B}", + circleddash => "\x{229D}", + boxplus => "\x{229E}", + boxminus => "\x{229F}", + boxtimes => "\x{22A0}", + boxdot => "\x{22A1}", + vdash => "\x{22A2}", + dashv => "\x{22A3}", + top => "\x{22A4}", + bot => "\x{22A5}", + Vdash => "\x{22A9}", + Vvdash => "\x{22AA}", + nVdash => "\x{22AE}", + lhd => "\x{22B2}", + rhd => "\x{22B3}", + unlhd => "\x{22B4}", + unrhd => "\x{22B5}", + multimap => "\x{22B8}", + intercal => "\x{22BA}", + veebar => "\x{22BB}", + barwedge => "\x{22BC}", + bigwedge => "\x{22C0}", + bigvee => "\x{22C1}", + bigcap => "\x{22C2}", + bigcup => "\x{22C3}", + diamond => "\x{22C4}", + cdot => "\x{22C5}", + star => "\x{22C6}", + divideontimes => "\x{22C7}", + bowtie => "\x{22C8}", + ltimes => "\x{22C9}", + rtimes => "\x{22CA}", + leftthreetimes => "\x{22CB}", + rightthreetimes => "\x{22CC}", + backsimeq => "\x{22CD}", + curlyvee => "\x{22CE}", + curlywedge => "\x{22CF}", + Subset => "\x{22D0}", + Supset => "\x{22D1}", + Cap => "\x{22D2}", + Cup => "\x{22D3}", + pitchfork => "\x{22D4}", + lessdot => "\x{22D6}", + gtrdot => "\x{22D7}", + lll => "\x{22D8}", + ggg => "\x{22D9}", + lesseqgtr => "\x{22DA}", + gtreqless => "\x{22DB}", + curlyeqprec => "\x{22DE}", + curlyeqsucc => "\x{22DF}", + lnsim => "\x{22E6}", + gnsim => "\x{22E7}", + precnsim => "\x{22E8}", + succnsim => "\x{22E9}", + ntriangleleft => "\x{22EA}", + ntriangleright => "\x{22EB}", + ntrianglelefteq => "\x{22EC}", + ntrianglerighteq => "\x{22ED}", + vdots => "\x{22EE}", + cdots => "\x{22EF}", + ddots => "\x{22F1}", + lceil => "\x{2308}", + rceil => "\x{2309}", + lfloor => "\x{230A}", + rfloor => "\x{230B}", + Box => "\x{25A1}", + spadesuit => "\x{2660}", + heartsuit => "\x{2661}", + diamondsuit => "\x{2662}", + clubsuit => "\x{2663}", + flat => "\x{266D}", + natural => "\x{266E}", + sharp => "\x{266F}", + tone5 => "\x{02E5}", + tone4 => "\x{02E6}", + tone3 => "\x{02E7}", + tone2 => "\x{02E8}", + tone1 => "\x{02E9}" +); + +our %SYMBOLS_R = reverse %SYMBOLS; + +our %DINGS = ( + '21' => "\x{2701}", + '22' => "\x{2702}", + '23' => "\x{2703}", + '24' => "\x{2704}", + '25' => "\x{260E}", + '26' => "\x{2706}", + '27' => "\x{2707}", + '28' => "\x{2708}", + '29' => "\x{2709}", + '2A' => "\x{261B}", + '2B' => "\x{261E}", + '2C' => "\x{270C}", + '2D' => "\x{270D}", + '2E' => "\x{270E}", + '2F' => "\x{270F}", + '30' => "\x{2710}", + '31' => "\x{2711}", + '32' => "\x{2712}", + '33' => "\x{2713}", + '34' => "\x{2714}", + '35' => "\x{2715}", + '36' => "\x{2716}", + '37' => "\x{2717}", + '38' => "\x{2718}", + '39' => "\x{2719}", + '3A' => "\x{271A}", + '3B' => "\x{271B}", + '3C' => "\x{271C}", + '3D' => "\x{271D}", + '3E' => "\x{271E}", + '3F' => "\x{271F}", + '40' => "\x{2720}", + '41' => "\x{2721}", + '42' => "\x{2722}", + '43' => "\x{2723}", + '44' => "\x{2724}", + '45' => "\x{2725}", + '46' => "\x{2726}", + '47' => "\x{2727}", + '48' => "\x{2605}", + '49' => "\x{2729}", + '4A' => "\x{272A}", + '4B' => "\x{272B}", + '4C' => "\x{272C}", + '4D' => "\x{272D}", + '4E' => "\x{272E}", + '4F' => "\x{272F}", + '50' => "\x{2730}", + '51' => "\x{2731}", + '52' => "\x{2732}", + '53' => "\x{2733}", + '54' => "\x{2734}", + '55' => "\x{2735}", + '56' => "\x{2736}", + '57' => "\x{2737}", + '58' => "\x{2738}", + '59' => "\x{2739}", + '5A' => "\x{273A}", + '5B' => "\x{273B}", + '5C' => "\x{273C}", + '5D' => "\x{273D}", + '5E' => "\x{273E}", + '5F' => "\x{273F}", + '60' => "\x{2740}", + '61' => "\x{2741}", + '62' => "\x{2742}", + '63' => "\x{2743}", + '64' => "\x{2744}", + '65' => "\x{2745}", + '66' => "\x{2746}", + '67' => "\x{2747}", + '68' => "\x{2748}", + '69' => "\x{2749}", + '6A' => "\x{274A}", + '6B' => "\x{274B}", + '6C' => "\x{25CF}", + '6D' => "\x{274D}", + '6E' => "\x{25A0}", + '6F' => "\x{274F}", + '70' => "\x{2750}", + '71' => "\x{2751}", + '72' => "\x{2752}", + '73' => "\x{25B2}", + '74' => "\x{25BC}", + '75' => "\x{25C6}", + '76' => "\x{2756}", + '77' => "\x{25D7}", + '78' => "\x{2758}", + '79' => "\x{2759}", + '7A' => "\x{275A}", + '7B' => "\x{275B}", + '7C' => "\x{275C}", + '7D' => "\x{275D}", + '7E' => "\x{275E}", + 'A1' => "\x{2761}", + 'A2' => "\x{2762}", + 'A3' => "\x{2763}", + 'A4' => "\x{2764}", + 'A5' => "\x{2765}", + 'A6' => "\x{2766}", + 'A7' => "\x{2767}", + 'A9' => "\x{2666}", + 'AA' => "\x{2665}", + 'AC' => "\x{2460}", + 'AD' => "\x{2461}", + 'AE' => "\x{2462}", + 'AF' => "\x{2463}", + 'B0' => "\x{2464}", + 'B1' => "\x{2465}", + 'B2' => "\x{2466}", + 'B3' => "\x{2467}", + 'B4' => "\x{2468}", + 'B5' => "\x{2469}", + 'B6' => "\x{2776}", + 'B7' => "\x{2777}", + 'B8' => "\x{2778}", + 'B9' => "\x{2779}", + 'BA' => "\x{277A}", + 'BB' => "\x{277B}", + 'BC' => "\x{277C}", + 'BD' => "\x{277D}", + 'BE' => "\x{277E}", + 'BF' => "\x{277F}", + 'C0' => "\x{2780}", + 'C1' => "\x{2781}", + 'C2' => "\x{2782}", + 'C3' => "\x{2783}", + 'C4' => "\x{2784}", + 'C5' => "\x{2785}", + 'C6' => "\x{2786}", + 'C7' => "\x{2787}", + 'C8' => "\x{2788}", + 'C9' => "\x{2789}", + 'CA' => "\x{278A}", + 'CB' => "\x{278B}", + 'CC' => "\x{278C}", + 'CD' => "\x{278D}", + 'CE' => "\x{278E}", + 'CF' => "\x{278F}", + 'D0' => "\x{2790}", + 'D1' => "\x{2791}", + 'D2' => "\x{2792}", + 'D3' => "\x{2793}", + 'D4' => "\x{2794}", + 'D6' => "\x{2194}", + 'D7' => "\x{2195}", + 'D8' => "\x{2798}", + 'D9' => "\x{2799}", + 'DA' => "\x{279A}", + 'DB' => "\x{279B}", + 'DC' => "\x{279C}", + 'DD' => "\x{279D}", + 'DE' => "\x{279E}", + 'DF' => "\x{279F}", + 'E0' => "\x{27A0}", + 'E1' => "\x{27A1}", + 'E2' => "\x{27A2}", + 'E3' => "\x{27A3}", + 'E4' => "\x{27A4}", + 'E5' => "\x{27A5}", + 'E6' => "\x{27A6}", + 'E7' => "\x{27A7}", + 'E8' => "\x{27A8}", + 'E9' => "\x{27A9}", + 'EA' => "\x{27AA}", + 'EB' => "\x{27AB}", + 'EC' => "\x{27AC}", + 'ED' => "\x{27AD}", + 'EE' => "\x{27AE}", + 'EF' => "\x{27AF}", + 'F1' => "\x{27B1}", + 'F2' => "\x{27B2}", + 'F3' => "\x{27B3}", + 'F4' => "\x{27B4}", + 'F5' => "\x{27B5}", + 'F6' => "\x{27B6}", + 'F7' => "\x{27B7}", + 'F8' => "\x{27B8}", + 'F9' => "\x{27B9}", + 'FA' => "\x{27BA}", + 'FB' => "\x{27BB}", + 'FC' => "\x{27BC}", + 'FD' => "\x{27BD}", + 'FE' => "\x{27BE}" +); + +our %DINGS_R = reverse %DINGS; + +our %GREEK = ( + alpha => "\x{3b1}", + beta => "\x{3b2}", + gamma => "\x{3b3}", + delta => "\x{3b4}", + varepsilon => "\x{3b5}", + zeta => "\x{3b6}", + eta => "\x{3b7}", + vartheta => "\x{3b8}", + iota => "\x{3b9}", + kappa => "\x{3ba}", + lambda => "\x{3bb}", + mu => "\x{3bc}", + nu => "\x{3bd}", + xi => "\x{3be}", + omicron => "\x{3bf}", + pi => "\x{3c0}", + varrho => "\x{3c1}", + varsigma => "\x{3c2}", + sigma => "\x{3c3}", + tau => "\x{3c4}", + upsilon => "\x{3c5}", + varphi => "\x{3c6}", + chi => "\x{3c7}", + psi => "\x{3c8}", + omega => "\x{3c9}", + Alpha => "\x{391}", + Beta => "\x{392}", + Gamma => "\x{393}", + Delta => "\x{394}", + Epsilon => "\x{395}", + Zeta => "\x{396}", + Eta => "\x{397}", + Theta => "\x{398}", + Iota => "\x{399}", + Kappa => "\x{39a}", + Lambda => "\x{39b}", + Mu => "\x{39c}", + Nu => "\x{39d}", + Xi => "\x{39e}", + Omicron => "\x{39f}", + Pi => "\x{3a0}", + Rho => "\x{3a1}", + Sigma => "\x{3a3}", + Tau => "\x{3a4}", + Upsilon => "\x{3a5}", + Phi => "\x{3a6}", + Chi => "\x{3a7}", + Psi => "\x{3a8}", + Omega => "\x{3a9}" +); + +our %GREEK_R = reverse %GREEK; + +# Things we don't want to change when encoding as this would break LaTeX +our %ENCODE_EXCLUDE_R = ( + chr(0x22) => 1, # \textquotedbl + chr(0x23) => 1, # \texthash + chr(0x24) => 1, # \textdollar + chr(0x25) => 1, # \textpercent + chr(0x26) => 1, # \textampersand + chr(0x27) => 1, # \textquotesingle + chr(0x2a) => 1, # \textasteriskcentered + chr(0x3c) => 1, # \textless + chr(0x3d) => 1, # \textequals + chr(0x3e) => 1, # \textgreater + chr(0x5c) => 1, # \textbackslash + chr(0x5e) => 1, # \textasciicircum + chr(0x5f) => 1, # \textunderscore + chr(0x60) => 1, # \textasciigrave + chr(0x67) => 1, # \textg + chr(0x7b) => 1, # \textbraceleft + chr(0x7c) => 1, # \textbar + chr(0x7d) => 1, # \textbraceright + chr(0x7e) => 1, # \textasciitilde + chr(0xa0) => 1, # \nobreakspace + chr(0xa3) => 1, # \textsterling + chr(0xb1) => 1, # \pm + chr(0xb5) => 1, # \mu + chr(0xb6) => 1, # \P + ); + +our $ACCENTS_RE = qr{[\^\.`'"~=]}; +our $ACCENTS_RE_R = qr{[\x{300}-\x{304}\x{307}\x{308}]}; + +our $DIAC_RE_BASE = join('|', keys %DIACRITICS); +$DIAC_RE_BASE = qr{$DIAC_RE_BASE}; +our $DIAC_RE_BASE_R = join('|', keys %DIACRITICS_R); +$DIAC_RE_BASE_R = qr{$DIAC_RE_BASE_R}; + +our $DIAC_RE_EXTRA = join('|', sort {length $b <=> length $a} keys %DIACRITICSEXTRA); +$DIAC_RE_EXTRA = qr{$DIAC_RE_EXTRA|$DIAC_RE_BASE}; +our $DIAC_RE_EXTRA_R = join('|', sort {length $b <=> length $a} keys %DIACRITICSEXTRA_R); +$DIAC_RE_EXTRA_R = qr{$DIAC_RE_EXTRA_R|$DIAC_RE_BASE_R}; + +our $NEG_SYMB_RE = join('|', sort keys %NEGATEDSYMBOLS); +$NEG_SYMB_RE = qr{$NEG_SYMB_RE}; +our $NEG_SYMB_RE_R = join('|', sort keys %NEGATEDSYMBOLS_R); +$NEG_SYMB_RE_R = qr{$NEG_SYMB_RE_R}; + +our $SUPER_RE; +my @_ss = keys %SUPERSCRIPTS; +$SUPER_RE = join('|', map { /[\+\-\)\(]/ ? '\\' . $_ : $_ } @_ss); +$SUPER_RE = qr{$SUPER_RE}; +our $SUPER_RE_R; +my @_ss_r = keys %SUPERSCRIPTS_R; +$SUPER_RE_R = join('|', map { /[\+\-\)\(]/ ? '\\' . $_ : $_ } @_ss_r); +$SUPER_RE_R = qr{$SUPER_RE_R}; + +our $SUPERCMD_RE = join('|', keys %CMDSUPERSCRIPTS); +$SUPERCMD_RE = qr{$SUPERCMD_RE}; +our $SUPERCMD_RE_R = join('|', keys %CMDSUPERSCRIPTS_R); +$SUPERCMD_RE_R = qr{$SUPERCMD_RE_R}; + +our $DINGS_RE_R = join('|', keys %DINGS_R); +$DINGS_RE_R = qr{$DINGS_RE_R}; + + +=head1 AUTHOR + +François Charette, C<< <firmicus at gmx.net> >> + +=head1 BUGS + +Please report any bugs or feature requests to C<bug-latex-decode at +rt.cpan.org>, or through the web interface at +L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=LaTeX-Decode>. I will be +notified, and then you'll automatically be notified of progress on your bug as +I make changes. + +=head1 NOTICE + +This module is currently distributed with biber, but it is not unlikely that it +will eventually make its way to CPAN. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2010 François Charette, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=4 shiftwidth=4 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Output/BBL.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Output/BBL.pm new file mode 100644 index 00000000000..c6f33f7ae0e --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Output/BBL.pm @@ -0,0 +1,501 @@ +package Biber::Output::BBL; +#use feature 'unicode_strings'; +use base 'Biber::Output::Base'; + +use Biber::Config; +use Biber::Constants; +use Biber::Entry; +use Biber::Utils; +use IO::File; +use Log::Log4perl qw( :no_extra_logdie_message ); +my $logger = Log::Log4perl::get_logger('main'); + +=encoding utf-8 + +=head1 NAME + +Biber::Output::BBL - class for Biber output of .bbl + +=cut + +=head2 new + + Initialize a Biber::Output::BBL object + +=cut + +sub new { + my $class = shift; + my $self = $class->SUPER::new($obj); + my $ctrlver = Biber::Config->getblxoption('controlversion'); + my $beta = $Biber::BETA_VERSION ? ' (beta)' : ''; + + my $BBLHEAD = <<EOF; +% \$ biblatex auxiliary file \$ +% \$ biblatex version $ctrlver \$ +% \$ biber version $Biber::VERSION$beta \$ +% Do not modify the above lines! +% +% This is an auxiliary file used by the 'biblatex' package. +% This file may safely be deleted. It will be recreated by +% biber or bibtex as required. +% +\\begingroup +\\makeatletter +\\\@ifundefined{ver\@biblatex.sty} + {\\\@latex\@error + {Missing 'biblatex' package} + {The bibliography requires the 'biblatex' package.} + \\aftergroup\\endinput} + {} +\\endgroup + +EOF + + $self->set_output_head($BBLHEAD); + return $self; +} + +=head2 set_output_target_file + + Set the output target file of a Biber::Output::BBL object + A convenience around set_output_target so we can keep track of the + filename + +=cut + +sub set_output_target_file { + my $self = shift; + my $bblfile = shift; + $self->{output_target_file} = $bblfile; + my $enc_out; + if (Biber::Config->getoption('bblencoding')) { + $enc_out = ':encoding(' . Biber::Config->getoption('bblencoding') . ')'; + } + my $BBLFILE = IO::File->new($bblfile, ">$enc_out") or $logger->logdie("Failed to open $bblfile : $!"); + $self->set_output_target($BBLFILE); +} + +=head2 _printfield + + Add the .bbl for a text field to the output accumulator. + +=cut + +sub _printfield { + my ($self, $field, $str) = @_; + my $field_type = 'field'; + # crossref and xref are of type 'strng' in the .bbl + if (lc($field) eq 'crossref' or + lc($field) eq 'xref') { + $field_type = 'strng'; + } + if (Biber::Config->getoption('wraplines')) { + ## 12 is the length of ' \field{}{}' or ' \strng{}{}' + if ( 12 + length($field) + length($str) > 2*$Text::Wrap::columns ) { + return " \\${field_type}{$field}{%\n" . wrap(' ', ' ', $str) . "%\n }\n"; + } + elsif ( 12 + length($field) + length($str) > $Text::Wrap::columns ) { + return wrap(' ', ' ', "\\${field_type}{$field}{$str}" ) . "\n"; + } + else { + return " \\${field_type}{$field}{$str}\n"; + } + } + else { + return " \\${field_type}{$field}{$str}\n"; + } + return; +} + +=head2 set_output_undefkey + + Set the .bbl output for an undefined key + +=cut + +sub set_output_undefkey { + my $self = shift; + my $key = shift; # undefined key + my $section = shift; # Section object the entry occurs in + my $acc = ''; + my $secnum = $section->number; + + $acc .= " \\missing{$key}\n"; + + # Create an index by keyname for easy retrieval + $self->{output_data}{ENTRIES}{$secnum}{index}{lc($key)} = \$acc; + + return; +} + + +=head2 set_output_entry + + Set the .bbl output for an entry. This is the meat of + the .bbl output + +=cut + +sub set_output_entry { + my $self = shift; + my $be = shift; # Biber::Entry object + my $section = shift; # Section object the entry occurs in + my $struc = shift; # Structure object + my $acc = ''; + my $opts = ''; + my $citekey; # entry key in original form (case) from citation + my $secnum = $section->number; + + if ( $be->get_field('citekey') ) { + $citekey = $be->get_field('citekey'); + } + + if ($be->field_exists('options')) { + $opts = $be->get_field('options'); + } + + $acc .= " \\entry{$citekey}{" . $be->get_field('entrytype') . "}{$opts}\n"; + + # Generate set information + if ( $be->get_field('entrytype') eq 'set' ) { # Set parents get \set entry ... + $acc .= " \\set{" . $be->get_field('entryset') . "}\n"; + } + else { # Everything else that isn't a set parent ... + if (my $es = $be->get_field('entryset')) { # ... gets a \inset if it's a set member + $acc .= " \\inset{$es}\n"; + } + } + + # Output name fields + + # first output copy in labelname + # This is essentially doing the same thing twice but in the future, + # labelname will have different things attached than the raw name + my $lnn = $be->get_field('labelnamename'); # save name of labelname field + my $name_others_deleted = ''; + if (my $ln = $be->get_field('labelname')) { + if ( $ln->last_element->get_namestring eq 'others' ) { + $acc .= " \\true{morelabelname}\n"; + $ln->del_last_element; + # record that we have deleted "others" from labelname field + # we will need this below + $name_others_deleted = $lnn; + } + my $total = $ln->count_elements; + $acc .= " \\name{labelname}{$total}{%\n"; + foreach my $n (@{$ln->names}) { + $acc .= $n->name_to_bbl; + } + $acc .= " }\n"; + } + + # then names themselves + foreach my $namefield (@{$struc->get_field_type('name')}) { + next if $struc->is_field_type('skipout', $namefield); + if ( my $nf = $be->get_field($namefield) ) { + # If this name is labelname, we've already deleted the "others" + # so just add the boolean + if ($name_others_deleted eq $namefield) { + $acc .= " \\true{more$namefield}\n"; + } + # otherwise delete and add the boolean + elsif ($nf->last_element->get_namestring eq 'others') { + $acc .= " \\true{more$namefield}\n"; + $nf->del_last_element; + } + my $total = $nf->count_elements; + $acc .= " \\name{$namefield}{$total}{%\n"; + foreach my $n (@{$nf->names}) { + $acc .= $n->name_to_bbl; + } + $acc .= " }\n"; + } + } + + # Output list fields + foreach my $listfield (@{$struc->get_field_type('list')}) { + if (my $lf = $be->get_field($listfield)) { + if ( $be->get_field($listfield)->[-1] eq 'others' ) { + $acc .= " \\true{more$listfield}\n"; + pop @$lf; # remove the last element in the array + }; + my $total = $#$lf + 1; + $acc .= " \\list{$listfield}{$total}{%\n"; + foreach my $f (@$lf) { + $acc .= " {$f}%\n"; + } + $acc .= " }\n"; + } + } + + my $namehash = $be->get_field('namehash'); + $acc .= " \\strng{namehash}{$namehash}\n"; + my $fullhash = $be->get_field('fullhash'); + $acc .= " \\strng{fullhash}{$fullhash}\n"; + + if ( Biber::Config->getblxoption('labelalpha', $be->get_field('entrytype')) ) { + # Might not have been set due to skiplab/dataonly + if (my $label = $be->get_field('labelalpha')) { + $acc .= " \\field{labelalpha}{$label}\n"; + } + } + + # This is special, we have to put a marker for sortinit and then replace this string + # on output as it can vary between lists + $acc .= " <BDS>SORTINIT</BDS>\n"; + + # The labelyear option determines whether "extrayear" is output + if ( Biber::Config->getblxoption('labelyear', $be->get_field('entrytype'))) { + # Might not have been set due to skiplab/dataonly + if (my $nameyear_extrayear = $be->get_field('nameyear_extrayear')) { + if ( Biber::Config->get_seen_nameyear_extrayear($nameyear_extrayear) > 1) { + $acc .= " <BDS>EXTRAYEAR</BDS>\n"; + } + } + if (my $ly = $be->get_field('labelyear')) { + $acc .= " \\field{labelyear}{$ly}\n"; + } + } + + # The labelalpha option determines whether "extraalpha" is output + if ( Biber::Config->getblxoption('labelalpha', $be->get_field('entrytype'))) { + # Might not have been set due to skiplab/dataonly + if (my $nameyear_extraalpha = $be->get_field('nameyear_extraalpha')) { + if ( Biber::Config->get_seen_nameyear_extraalpha($nameyear_extraalpha) > 1) { + $acc .= " <BDS>EXTRAALPHA</BDS>\n"; + } + } + } + + if ( Biber::Config->getblxoption('labelnumber', $be->get_field('entrytype')) ) { + if (my $sh = $be->get_field('shorthand')) { + $acc .= " \\field{labelnumber}{$sh}\n"; + } + elsif (my $lnum = $be->get_field('labelnumber')) { + $acc .= " \\field{labelnumber}{$lnum}\n"; + } + } + + if (my $unopt = Biber::Config->getblxoption('uniquename', $be->get_field('entrytype'))) { + my $lname = $be->get_field('labelnamename'); + my $name; + my $lastname; + my $nameinitstr; + my $un; + + if ($lname) { + $name = $be->get_field($lname)->nth_element(1); + $lastname = $name->get_lastname; + $nameinitstr = $name->get_nameinitstring; + } + # uniquename is requested but there is no labelname or there are more than two names in + # labelname + if ($be->get_field('ignoreuniquename')) { + $un = '0'; + } + # If there is one entry (hash) for the lastname, then it's unique + elsif (Biber::Config->get_numofuniquenames($lastname) == 1 ) { + $un = '0'; + } + # Otherwise, if there is one entry (hash) for the lastname plus initials, + # then it needs the initials to make it unique + elsif (Biber::Config->get_numofuniquenames($nameinitstr) == 1 ) { + $un = '1'; + } + # Otherwise the name needs to be full to make it unique + # but restricted to uniquename biblatex option value just in case + # this is inits only (1); + else { + $un = $unopt; + } + $acc .= " \\count{uniquename}{$un}\n"; + } + + # skiplab entries don't have a seennamehash count so this gives an error + # unless we check for this + if ( Biber::Config->getblxoption('singletitle', $be->get_field('entrytype')) + and (not Biber::Config->get_seennamehash($be->get_field('fullhash')) or + Biber::Config->get_seennamehash($be->get_field('fullhash')) < 2 )) + { + $acc .= " \\true{singletitle}\n"; + } + + foreach my $lfield (@{$struc->get_field_type('literal')}) { + next if $struc->is_field_type('skipout', $lfield); + if ( ($struc->is_field_type('nullok', $lfield) and + $be->field_exists($lfield)) or + $be->get_field($lfield) ) { + # we skip outputting the crossref or xref when the parent is not cited + # (biblatex manual, section 2.23) + # sets are a special case so always output crossref/xref for them since their + # children will always be in the .bbl otherwise they make no sense. + unless ( $be->get_field('entrytype') eq 'set') { + next if ($lfield eq 'crossref' and + not $section->has_citekey($be->get_field('crossref'))); + next if ($lfield eq 'xref' and + not $section->has_citekey($be->get_field('xref'))); + } + $acc .= $self->_printfield( $lfield, $be->get_field($lfield) ); + } + } + + foreach my $rfield (@{$struc->get_field_type('range')}) { + if ( my $rf = $be->get_field($rfield) ) { + # range fields are an array ref of two-element array refs [range_start, range_end] + # range_end can be be empty for open-ended range or undef + my @pr; + foreach my $f (@$rf) { + if (defined($f->[1])) { + push @pr, $f->[0] . '\bibrangedash' . ($f->[1] ? ' ' . $f->[1] : ''); + } + else { + push @pr, $f->[0]; + } + } + my $bbl_rf = join(', ', @pr); + $acc .= " \\field{$rfield}{$bbl_rf}\n"; + } + } + + foreach my $vfield (@{$struc->get_field_type('verbatim')}) { + if ( my $vf = $be->get_field($vfield) ) { + $acc .= " \\verb{$vfield}\n"; + $acc .= " \\verb $vf\n \\endverb\n"; + } + } + if ( my $k = $be->get_field('keywords') ) { + $acc .= " \\keyw{$k}\n"; + } + + # Append any warnings to the entry, if any + if ( my $w = $be->get_field('warnings')) { + foreach my $warning (@$w) { + $acc .= " \\warn{\\item $warning}\n"; + } + } + + $acc .= " \\endentry\n\n"; + + # Create an index by keyname for easy retrieval + $self->{output_data}{ENTRIES}{$secnum}{index}{lc($citekey)} = \$acc; + + return; +} + + +=head2 output + + BBL output method - this takes care to output entries in the explicit order + derived from the virtual order of the citekeys after sortkey sorting. + +=cut + +sub output { + my $self = shift; + my $data = $self->{output_data}; + my $target = $self->{output_target}; + my $target_string = "Target"; # Default + if ($self->{output_target_file}) { + $target_string = $self->{output_target_file}; + } + + # for debugging mainly + unless ($target) { + $target = new IO::File '>-'; + } + + $logger->debug('Preparing final output using class ' . __PACKAGE__ . '...'); + + $logger->info("Writing '$target_string' with encoding '" . Biber::Config->getoption('bblencoding') . "'"); + + print $target $data->{HEAD} or $logger->logdie("Failure to write head to $target_string: $!"); + + foreach my $secnum (sort keys %{$data->{ENTRIES}}) { + $logger->debug("Writing entries for section $secnum"); + + print $target "\n\\refsection{$secnum}\n"; + my $section = $self->get_output_section($secnum); + + # This sort is cosmetic, just to order the lists in a predictable way in the .bbl + foreach my $list (sort {$a->get_label cmp $b->get_label} @{$section->get_lists}) { + my $listlabel = $list->get_label; + my $listtype = $list->get_type; + $logger->debug("Writing entries in list '$listlabel'"); + + # Remove most of this conditional when biblatex supports lists + if ($listlabel eq 'SHORTHANDS') { + print $target " \\lossort\n"; + } + else { + print $target "\n \\sortlist{$listlabel}\n" unless ($listlabel eq 'MAIN'); + } + + # The order of this array is the sorted order + foreach my $k ($list->get_keys) { + $logger->debug("Writing entry for key '$k'"); + if ($listtype eq 'entry') { + my $entry = $data->{ENTRIES}{$secnum}{index}{lc($k)}; + + # Instantiate any dynamic, list specific entry information + my $entry_string = $list->instantiate_entry($entry, $k); + + # If requested to convert UTF-8 to macros ... + if (Biber::Config->getoption('bblsafechars')) { + $entry_string = latex_recode_output($entry_string); + } + + print $target $entry_string or $logger->logdie("Failure to write list element to $target_string: $!"); + } + elsif ($listtype eq 'shorthand') { + print $target " \\key{$k}\n" or $logger->logdie("Failure to write list element to $target_string: $!"); + } + } + + # Remove most of this conditional when biblatex supports lists + if ($listlabel eq 'SHORTHANDS') { + print $target " \\endlossort\n\n"; + } + else { + print $target "\n \\endsortlist\n\n" unless ($listlabel eq 'MAIN'); + } + } + + print $target "\\endrefsection\n" + } + + print $target $data->{TAIL} or $logger->logdie("Failure to write tail to $target_string: $!"); + + $logger->info("Output to $target_string"); + close $target or $logger->logdie("Failure to close $target_string: $!"); + return; +} + + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: + diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Output/Base.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Output/Base.pm new file mode 100644 index 00000000000..84f33ee1b84 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Output/Base.pm @@ -0,0 +1,334 @@ +package Biber::Output::Base; +#use feature 'unicode_strings'; + +use Biber::Entry; +use IO::File; +use Log::Log4perl qw( :no_extra_logdie_message ); +my $logger = Log::Log4perl::get_logger('main'); + +=encoding utf-8 + +=head1 NAME + +Biber::Output::Base - base class for Biber output modules. + +=cut + +=head2 new + + Initialize a Biber::Output::Base object + +=cut + +sub new { + my $class = shift; + my $obj = shift; + my $self; + if (defined($obj) and ref($obj) eq 'HASH') { + $self = bless $obj, $class; + } + else { + $self = bless {}, $class; + } + return $self; +} + +=head2 set_output_target_file + + Set the output target file of a Biber::Output::Base object + A convenience around set_output_target so we can keep track of the + filename + +=cut + +sub set_output_target_file { + my $self = shift; + my $file = shift; + $self->{output_target_file} = $file; + my $enc_out; + if (Biber::Config->getoption('bblencoding')) { + $enc_out = ':encoding(' . Biber::Config->getoption('bblencoding') . ')'; + } + my $TARGET = IO::File->new($file, ">$enc_out") or $logger->logdie("Failed to open $file : $!"); + $self->set_output_target($TARGET); +} + + +=head2 set_output_target + + Set the output target of a Biber::Output::Base object + +=cut + +sub set_output_target { + my $self = shift; + my $target = shift; + $logger->logdie('Output target must be a IO::Handle object!') unless $target->isa('IO::Handle'); + $self->{output_target} = $target; + return; +} + +=head2 set_output_head + + Set the output head of a Biber::Output::Base object + $data could be anything - the caller is expected to know. + +=cut + +sub set_output_head { + my $self = shift; + my $data = shift; + $self->{output_data}{HEAD} = $data; + return; +} + +=head2 set_output_tail + + Set the output tail of a Biber::Output::Base object + $data could be anything - the caller is expected to know. + +=cut + +sub set_output_tail { + my $self = shift; + my $data = shift; + $self->{output_data}{TAIL} = $data; + return; +} + + +=head2 get_output_head + + Get the output head of a Biber::Output object + $data could be anything - the caller is expected to know. + Mainly used in debugging + +=cut + +sub get_output_head { + my $self = shift; + return $self->{output_data}{HEAD}; +} + +=head2 get_output_tail + + Get the output tail of a Biber::Output object + $data could be anything - the caller is expected to know. + Mainly used in debugging + +=cut + +sub get_output_tail { + my $self = shift; + return $self->{output_data}{TAIL}; +} + + +=head2 add_output_head + + Add to the head output data of a Biber::Output::Base object + The base class method just does a string append + +=cut + +sub add_output_head { + my $self = shift; + my $data = shift; + $self->{output_data}{HEAD} .= $data; + return; +} + +=head2 add_output_tail + + Add to the tail output data of a Biber::Output::Base object + The base class method just does a string append + +=cut + +sub add_output_tail { + my $self = shift; + my $data = shift; + $self->{output_data}{TAIL} .= $data; + return; +} + + +=head2 set_output_section + + Records the section object in the output object + We need some information from this when writing the .bbl + +=cut + +sub set_output_section { + my $self = shift; + my $secnum = shift; + my $section = shift; + $self->{section}{$secnum} = $section; + return; +} + +=head2 get_output_section + + Retrieve the output section object + +=cut + +sub get_output_section { + my $self = shift; + my $secnum = shift; + return $self->{section}{$secnum}; +} + + +=head2 get_output_entries + + Get the sorted order output data for all entries in a list as array ref + +=cut + +sub get_output_entries { + my $self = shift; + my $section = shift; + my $list = shift; + return [ map {$self->{output_data}{ENTRIES}{$section}{index}{$_}} @{$list->get_keys}]; +} + +=head2 get_output_entry + + Get the output data for a specific entry. + Used really only in tests as it instantiates list dynamic information so + we can see it in tests + +=cut + +sub get_output_entry { + my $self = shift; + my $list = shift; + my $key = shift; + my $section = shift; + $section = '0' if not defined($section); # default - mainly for tests + # Force a return of undef if there is no output for this key to avoid + # dereferencing errors in tests + my $out = $self->{output_data}{ENTRIES}{$section}{index}{lc($key)}; + my $out_string = $list->instantiate_entry($out, $key); + return $out ? $out_string : undef; +} + +=head2 set_los + + Set the output list of shorthands for a section + +=cut + +sub set_los { + my $self = shift; + my $shs = shift; + my $section = shift; + $self->{output_data}{LOS}{$section} = $shs; + return; +} + +=head2 get_los + + Get the output list of shorthands for a section as an array + +=cut + +sub get_los { + my $self = shift; + my $section = shift; + return @{$self->{output_data}{LOS}{$section}} +} + + +=head2 set_output_entry + + Add an entry output to a Biber::Output::Base object + The base class method just does a dump + +=cut + +sub set_output_entry { + my $self = shift; + my $entry = shift; + my $section = shift; + my $struc = shift; + $self->{output_data}{ENTRIES}{$section}{index}{lc($entry->get_field('citekey'))} = $entry->dump; + return; +} + +=head2 output + + Generic base output method + +=cut + +sub output { + my $self = shift; + my $data = $self->{output_data}; + my $target = $self->{output_target}; + my $target_string = "Target"; # Default + if ($self->{output_target_file}) { + $target_string = $self->{output_target_file}; + } + + $logger->debug('Preparing final output using class ' . __PACKAGE__ . '...'); + + $logger->info("Writing '$target_string' with encoding '" . Biber::Config->getoption('bblencoding') . "'"); + + print $target $data->{HEAD} or $logger->logdie("Failure to write head to $target_string: $!"); + + foreach my $secnum (sort keys %{$data->{ENTRIES}}) { + print $target "SECTION: $secnum\n\n"; + foreach my $list (@{$self->get_output_section($secnum)->get_lists}) { + my $listlabel = $list->get_label; + my $listtype = $list->get_type; + print $target " LIST: $listlabel\n\n"; + foreach my $k ($list->get_keys) { + if ($listtype eq 'entry') { + my $entry_string = $data->{ENTRIES}{$secnum}{index}{$k}; + print $target $entry_string or $logger->logdie("Failure to write entry '$k' to $target_string: $!"); + } + elsif ($listtype eq 'shorthand') { + next if Biber::Config->getblxoption('skiplos', $section->bibentry($k), $k); + print $target $k or $logger->logdie("Failure to write list element to $target_string: $!"); + } + } + } + } + + print $target $data->{TAIL} or $logger->logdie("Failure to write tail to $target_string: $!"); + + $logger->info("Output to $target_string"); + close $target or $logger->logdie("Failure to close $target_string: $!"); + return; +} + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: + diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Output/Test.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Output/Test.pm new file mode 100644 index 00000000000..e554ccca3b8 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Output/Test.pm @@ -0,0 +1,367 @@ +package Biber::Output::Test; +#use feature 'unicode_strings'; +use base 'Biber::Output::Base'; + +use Biber::Config; +use Biber::Constants; +use Biber::Entry; +use Biber::Utils; +use IO::File; +use Log::Log4perl qw( :no_extra_logdie_message ); +my $logger = Log::Log4perl::get_logger('main'); + +=encoding utf-8 + +=head1 NAME + +Biber::Output::Test - Output class for loopback testing +Essentially, this outputs to a string so we can look at it internally in tests + +=cut + + +=head2 _printfield + + Add the .bbl for a text field to the output accumulator. + +=cut + +sub _printfield { + my ($self, $field, $str) = @_; + if (Biber::Config->getoption('wraplines')) { + ## 12 is the length of ' \field{}{}' + if ( 12 + length($field) + length($str) > 2*$Text::Wrap::columns ) { + return " \\field{$field}{%\n" . wrap(' ', ' ', $str) . "%\n }\n"; + } + elsif ( 12 + length($field) + length($str) > $Text::Wrap::columns ) { + return wrap(' ', ' ', "\\field{$field}{$str}" ) . "\n"; + } + else { + return " \\field{$field}{$str}\n"; + } + } + else { + return " \\field{$field}{$str}\n"; + } + return; +} + +=head2 set_output_entry + + Set the .bbl output for an entry. This is the meat of + the .bbl output + +=cut + +sub set_output_entry { + my $self = shift; + my $be = shift; # Biber::Entry object + my $section = shift; # Section the entry occurs in + my $struc = shift; # Structure object + my $acc = ''; + my $opts = ''; + my $citekey; # entry key forced to case of any citations(s) which reference it + my $secnum = $section->number; + + if ( $be->get_field('citekey') ) { + $citekey = $be->get_field('citekey'); + } + + if ( $be->field_exists('options') ) { + $opts = $be->get_field('options'); + } + + $acc .= "% sortstring = " . $be->get_field('sortstring') . "\n" + if (Biber::Config->getoption('debug') || Biber::Config->getblxoption('debug')); + + $acc .= " \\entry{$citekey}{" . $be->get_field('entrytype') . "}{$opts}\n"; + + # Generate set information + if ( $be->get_field('entrytype') eq 'set' ) { # Set parents get \set entry ... + $acc .= " \\set{" . $be->get_field('entryset') . "}\n"; + } + else { # Everything else that isn't a set parent ... + if (my $es = $be->get_field('entryset')) { # ... gets a \inset if it's a set member + $acc .= " \\inset{$es}\n"; + } + } + + # Output name fields + + # first output copy in labelname + # This is essentially doing the same thing twice but in the future, + # labelname will have different things attached than the raw name + my $lnn = $be->get_field('labelnamename'); # save name of labelname field + my $name_others_deleted = ''; + if (my $ln = $be->get_field('labelname')) { + if ( $ln->last_element->get_namestring eq 'others' ) { + $acc .= " \\true{morelabelname}\n"; + $ln->del_last_element; + # record that we have deleted "others" from labelname field + # we will need this below + $name_others_deleted = $lnn; + } + my $total = $ln->count_elements; + $acc .= " \\name{labelname}{$total}{%\n"; + foreach my $n (@{$ln->names}) { + $acc .= $n->name_to_bbl; + } + $acc .= " }\n"; + } + + # then names themselves + foreach my $namefield (@{$struc->get_field_type('name')}) { + next if $struc->is_field_type('skipout', $namefield); + if ( my $nf = $be->get_field($namefield) ) { + # If this name is labelname, we've already deleted the "others" + # so just add the boolean + if ($name_others_deleted eq $namefield) { + $acc .= " \\true{more$namefield}\n"; + } + # otherwise delete and add the boolean + elsif ($nf->last_element->get_namestring eq 'others') { + $acc .= " \\true{more$namefield}\n"; + $nf->del_last_element; + } + my $total = $nf->count_elements; + $acc .= " \\name{$namefield}{$total}{%\n"; + foreach my $n (@{$nf->names}) { + $acc .= $n->name_to_bbl; + } + $acc .= " }\n"; + } + } + + foreach my $listfield (@{$struc->get_field_type('list')}) { + if ( my $lf = $be->get_field($listfield) ) { + if ( $be->get_field($listfield)->[-1] eq 'others' ) { + $acc .= " \\true{more$listfield}\n"; + pop @$lf; # remove the last element in the array + }; + my $total = $#$lf + 1; + $acc .= " \\list{$listfield}{$total}{%\n"; + foreach my $f (@$lf) { + $acc .= " {$f}%\n"; + } + $acc .= " }\n"; + } + } + + my $namehash = $be->get_field('namehash'); + $acc .= " \\strng{namehash}{$namehash}\n"; + my $fullhash = $be->get_field('fullhash'); + $acc .= " \\strng{fullhash}{$fullhash}\n"; + + if ( Biber::Config->getblxoption('labelalpha', $be->get_field('entrytype')) ) { + # Might not have been set due to skiplab/dataonly + if (my $label = $be->get_field('labelalpha')) { + $acc .= " \\field{labelalpha}{$label}\n"; + } + } + + # This is special, we have to put a marker for sortinit and then replace this string + # on output as it can vary between lists + $acc .= " <BDS>SORTINIT</BDS>\n"; + + # The labelyear option determines whether "extrayear" is output + # Skip generating extrayear for entries with "skiplab" set + if ( Biber::Config->getblxoption('labelyear', $be->get_field('entrytype'))) { + # Might not have been set due to skiplab/dataonly + if (my $ey = $be->get_field('extrayear')) { + my $nameyear_extrayear = $be->get_field('nameyear_extrayear'); + if ( Biber::Config->get_seen_nameyear_extrayear($nameyear_extrayear) > 1) { + $acc .= " \\field{extrayear}{$ey}\n"; + } + } + if (my $ly = $be->get_field('labelyear')) { + $acc .= " \\field{labelyear}{$ly}\n"; + } + } + + # The labelalpha option determines whether "extraalpha" is output + # Skip generating extraalpha for entries with "skiplab" set + if ( Biber::Config->getblxoption('labelalpha', $be->get_field('entrytype'))) { + # Might not have been set due to skiplab/dataonly + if (my $ea = $be->get_field('extraalpha')) { + my $nameyear_extraalpha = $be->get_field('nameyear_extraalpha'); + if ( Biber::Config->get_seen_nameyear_extraalpha($nameyear_extraalpha) > 1) { + $acc .= " \\field{extraalpha}{$ea}\n"; + } + } + } + + if ( Biber::Config->getblxoption('labelnumber', $be->get_field('entrytype')) ) { + if (my $sh = $be->get_field('shorthand')) { + $acc .= " \\field{labelnumber}{$sh}\n"; + } + elsif (my $ln = $be->get_field('labelnumber')) { + $acc .= " \\field{labelnumber}{$ln}\n"; + } + } + + if (my $unopt = Biber::Config->getblxoption('uniquename', $be->get_field('entrytype'))) { + my $lname = $be->get_field('labelnamename'); + my $name; + my $lastname; + my $nameinitstr; + my $un; + + if ($lname) { + $name = $be->get_field($lname)->nth_element(1); + $lastname = $name->get_lastname; + $nameinitstr = $name->get_nameinitstring; + } + # uniquename is requested but there is no labelname or there are more than two names in + # labelname + if ($be->get_field('ignoreuniquename')) { + $un = '0'; + } + # If there is one entry (hash) for the lastname, then it's unique + elsif (Biber::Config->get_numofuniquenames($lastname) == 1 ) { + $un = '0'; + } + # Otherwise, if there is one entry (hash) for the lastname plus initials, + # the it needs the initials to make it unique + elsif (Biber::Config->get_numofuniquenames($nameinitstr) == 1 ) { + $un = '1'; + } + # Otherwise the name needs to be full to make it unique + # but restricted to uniquename biblatex option value just in case + # this is inits only (1); + else { + $un = $unopt; + } + $acc .= " \\count{uniquename}{$un}\n"; + } + + if ( Biber::Config->getblxoption('singletitle', $be->get_field('entrytype')) + and Biber::Config->get_seennamehash($be->get_field('fullhash')) < 2 ) + { + $acc .= " \\true{singletitle}\n"; + } + + foreach my $lfield (@{$struc->get_field_type('literal')}) { + next if $struc->is_field_type('skipout', $lfield); + if ( ($struc->is_field_type('nullok', $lfield) and + $be->field_exists($lfield)) or + $be->get_field($lfield) ) { + # we skip outputting the crossref or xref when the parent is not cited + # (biblatex manual, section 2.23) + # sets are a special case so always output crossref/xref for them since their + # children will always be in the .bbl otherwise they make no sense. + unless ( $be->get_field('entrytype') eq 'set') { + next if ($lfield eq 'crossref' and + not $section->has_citekey($be->get_field('crossref'))); + next if ($lfield eq 'xref' and + not $section->has_citekey($be->get_field('xref'))); + } + + $acc .= $self->_printfield( $lfield, $be->get_field($lfield) ); + } + } + + foreach my $rfield (@{$struc->get_field_type('range')}) { + if ( my $rf = $be->get_field($rfield)) { + $rf =~ s/[-–]+/\\bibrangedash /g; + $acc .= " \\field{$rfield}{$rf}\n"; + } + } + + foreach my $vfield (@{$struc->get_field_type('verbatim')}) { + if ( my $rf = $be->get_field($vfield) ) { + $acc .= " \\verb{$vfield}\n"; + $acc .= " \\verb $rf\n \\endverb\n"; + } + } + if ( my $k = $be->get_field('keywords') ) { + $acc .= " \\keyw{$k}\n"; + } + + # Append any warnings to the entry, if any + if (my $w = $be->get_field('warnings')) { + foreach my $warning (@$w) { + $acc .= " \\warn{\\item $warning}\n"; + } + } + + $acc .= " \\endentry\n\n"; + + # Create an index by keyname for easy retrieval + $self->{output_data}{ENTRIES}{$secnum}{index}{lc($citekey)} = \$acc; + return; +} + +=head2 output + + BBL output method - this takes care to output entries in the explicit order + derived from the virtual order of the auxcitekeys after sortkey sorting. + +=cut + +sub output { + my $self = shift; + my $data = $self->{output_data}; + my $target = $self->{output_target}; + + $logger->info("Writing output with encoding '" . Biber::Config->getoption('bblencoding') . "'"); + + foreach my $secnum (sort keys %{$data->{ENTRIES}}) { + my $section = $self->get_output_section($secnum); + foreach my $list (@{$section->get_lists}) { + my $listlabel = $list->get_label; + my $listtype = $list->get_type; + foreach my $k ($list->get_keys) { + if ($listtype eq 'entry') { + my $entry = $data->{ENTRIES}{$secnum}{index}{lc($k)}; + + # Instantiate any dynamic, list specific entry information + my $entry_string = $list->instantiate_entry($entry, $k); + + # If requested to convert UTF-8 to macros ... + if (Biber::Config->getoption('bblsafechars')) { + $logger->info('Converting UTF-8 to TeX macros on output to .bbl'); + require Biber::LaTeX::Recode; + $entry_string = Biber::LaTeX::Recode::latex_encode($entry_string, + scheme => Biber::Config->getoption('bblsafecharsset')); + } + print $target $entry_string; + } + elsif ($listtype eq 'shorthand') { + next if Biber::Config->getblxoption('skiplos', $section->bibentry($k), $k); + print $target $k; + } + } + } + } + close $target; + return; +} + + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: + diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Section.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Section.pm new file mode 100644 index 00000000000..237f2d9fbfa --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Section.pm @@ -0,0 +1,452 @@ +package Biber::Section; +#use feature 'unicode_strings'; + +use Biber::Entries; +use Biber::Utils; +use List::Util qw( first ); + +=encoding utf-8 + +=head1 NAME + +Biber::Section + +=head2 new + + Initialize a Biber::Section object + +=cut + +sub new { + my ($class, %params) = @_; + my $self = bless {%params}, $class; + $self->{bibentries} = new Biber::Entries; + $self->{allkeys} = 0; + $self->{citekeys} = []; + $self->{sortcache} = []; + $self->{dkeys} = {}; + $self->{orig_order_citekeys} = []; + $self->{undef_citekeys} = []; + return $self; +} + +=head2 allkeys + + Sets flag to say citekey '*' occurred in citekeys + +=cut + +sub allkeys { + my $self = shift; + $self->{allkeys} = 1; + return; +} + +=head2 is_allkeys + + Checks flag which says citekey '*' occurred in citekeys + +=cut + +sub is_allkeys { + my $self = shift; + return $self->{allkeys}; +} + + +=head2 bibentry + + Returns a Biber::Entry object for the given citation key + +=cut + +sub bibentry { + my $self = shift; + my $key = shift; + $key = lc($key); + return $self->bibentries->entry($key); +} + +=head2 bibentries + + Return Biber::Entries object for this section + +=cut + +sub bibentries { + my $self = shift; + return $self->{bibentries}; +} + +=head2 del_bibentries + + Delete all Biber::Entry objects from the Biber::Section object + +=cut + +sub del_bibentries { + my $self = shift; + $self->{bibentries} = new Biber::Entries; + return; +} + + +=head2 set_citekeys + + Sets the citekeys in a Biber::Section object + +=cut + +sub set_citekeys { + my $self = shift; + my $keys = shift; + $self->{citekeys} = $keys; + return; +} + +=head2 set_orig_order_citekeys + + Sets the original order of citekeys in a Biber::Section object + +=cut + +sub set_orig_order_citekeys { + my $self = shift; + my $keys = shift; + $self->{orig_order_citekeys} = $keys; + return; +} + + +=head2 get_citekeys + + Gets the citekeys of a Biber::Section object + Returns a normal array + +=cut + +sub get_citekeys { + my $self = shift; + return @{$self->{citekeys}}; +} + +=head2 get_static_citekeys + + Gets the citekeys of a Biber::Section object + excluding dynamic set entry keys + Returns a normal array + +=cut + +sub get_static_citekeys { + my $self = shift; + return reduce_array($self->{citekeys}, $self->dynamic_set_keys); +} + + +=head2 get_undef_citekeys + + Gets the list of undefined citekeys of a Biber::Section object + Returns a normal array + +=cut + +sub get_undef_citekeys { + my $self = shift; + return @{$self->{undef_citekeys}}; +} + +=head2 get_orig_order_citekeys + + Gets the citekeys of a Biber::Section object in their original order + This is just to ensure we have a method that will return this, just in + case we mess about with the order at some point. This is needed by + citeorder sorting. + +=cut + +sub get_orig_order_citekeys { + my $self = shift; + return @{$self->{orig_order_citekeys}}; +} + +=head2 has_citekey + + Returns true when $key is in the Biber::Section object + +=cut + +sub has_citekey { + my $self = shift; + my $key = shift; + return defined ( first { lc($_) eq lc($key) } $self->get_citekeys ) ? 1 : 0; +} + + + +=head2 del_citekey + + Deletes a citekey from a Biber::Section object + +=cut + +sub del_citekey { + my $self = shift; + my $key = shift; + return unless $self->has_citekey($key); + $self->{citekeys} = [ grep {$_ ne $key} @{$self->{citekeys}} ]; + $self->{orig_order_citekeys} = [ grep {$_ ne $key} @{$self->{orig_order_citekeys}} ]; + return; +} + +=head2 del_citekeys + + Deletes al citekeys from a Biber::Section object + +=cut + +sub del_citekeys { + my $self = shift; + $self->{citekeys} = [ ]; + $self->{orig_order_citekeys} = [ ]; + return; +} + + +=head2 set_dynamic_set + + Record a mapping of dynamic key to member keys + +=cut + +sub set_dynamic_set { + my $self = shift; + my $dkey = shift; + my @members = @_; + $self->{dkeys}{$dkey} = \@members; + return; +} + +=head2 get_dynamic_set + + Retrieve member keys for a dynamic set key + Check on has reference returning anything stop spurious warnings + about empty dereference in return. + +=cut + +sub get_dynamic_set { + my $self = shift; + my $dkey = shift; + if (my $set_members = $self->{dkeys}{$dkey}) { + return @$set_members; + } + else { + return (); + } +} + +=head2 dynamic_set_keys + + Retrieve all dynamic set keys + +=cut + +sub dynamic_set_keys { + my $self = shift; + return [keys %{$self->{dkeys}}]; +} + + +=head2 add_citekeys + + Adds citekeys to the Biber::Section object + +=cut + +sub add_citekeys { + my $self = shift; + my @keys = @_; + foreach my $key (@keys) { + next if $self->has_citekey($key); + push @{$self->{citekeys}}, $key; + push @{$self->{orig_order_citekeys}}, $key; + } + return; +} + +=head2 add_undef_citekey + + Adds a citekey to the Biber::Section object as an undefined + key. This allows us to output this information to the .bbl and + so biblatex can do better reporting to external utils like latexmk + +=cut + +sub add_undef_citekey { + my $self = shift; + my $key = shift; + push @{$self->{undef_citekeys}}, $key; + return; +} + + +=head2 add_datasource + + Adds a data source to a section + +=cut + +sub add_datasource { + my $self = shift; + my $source = shift; + push @{$self->{datasources}}, $source; + return; +} + +=head2 set_datasources + + Sets the data sources for a section + +=cut + +sub set_datasources { + my $self = shift; + my $sources = shift; + $self->{datasources} = $sources; + return; +} + + +=head2 get_datasources + + Gets an array of data sources for this section + +=cut + +sub get_datasources { + my $self = shift; + if (exists($self->{datasources})) { + return $self->{datasources}; + } + else { + return undef; + } +} + +=head2 add_list + + Adds a section list to this section + +=cut + +sub add_list { + my $self = shift; + my $list = shift; + push @{$self->{lists}}, $list; + return; +} + +=head2 get_lists + + Returns an array ref of all section lists + +=cut + +sub get_lists { + my $self = shift; + return $self->{lists}; +} + +=head2 get_list + + Returns a specific list by label + +=cut + +sub get_list { + my $self = shift; + my $label = shift; + foreach my $list (@{$self->{lists}}) { + return $list if ($list->get_label eq $label); + } + return undef; +} + +=head2 add_sort_cache + + Adds a scheme/keys pair to the sort cache: + [$scheme, $keys, $sortinitdata, $extraalphadata, $extrayeardata ] + +=cut + +sub add_sort_cache { + my $self = shift; + my $cacheitem = shift; + push @{$self->{sortcache}}, $cacheitem; + return; +} + + +=head2 get_sort_cache + + Retrieves the sort cache + +=cut + +sub get_sort_cache { + my $self = shift; + return $self->{sortcache}; +} + +=head2 reset_sort_cache + + Reset the sort cache + +=cut + +sub reset_sort_cache { + my $self = shift; + $self->{sortcache} = []; + return; +} + + + +=head2 number + + Gets the section number of a Biber::Section object + +=cut + +sub number { + my $self = shift; + return $self->{number}; +} + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Section/List.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Section/List.pm new file mode 100644 index 00000000000..bc3f996b70d --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Section/List.pm @@ -0,0 +1,368 @@ +package Biber::Section::List; +#use feature 'unicode_strings'; +use Biber::Utils; +use List::Util qw( first ); + +=encoding utf-8 + +=head1 NAME + +Biber::Section::List + +=head2 new + + Initialize a Biber::Section::List object + +=cut + +sub new { + my ($class, %params) = @_; + my $self = bless {%params}, $class; + return $self; +} + +=head2 set_label + + Sets the label of a section list + +=cut + +sub set_label { + my $self = shift; + my $label = shift; + $self->{label} = lc($label); + return; +} + +=head2 get_label + + Gets the label of a section list + +=cut + +sub get_label { + my $self = shift; + return $self->{label}; +} + +=head2 set_type + + Sets the type of a section list + +=cut + +sub set_type { + my $self = shift; + my $type = shift; + $self->{type} = lc($type); + return; +} + +=head2 get_type + + Gets the type of a section list + +=cut + +sub get_type { + my $self = shift; + return $self->{type}; +} + +=head2 get_listdata + + Gets all of the list metadata + +=cut + +sub get_listdata { + my $self = shift; + return [ $self->{sortscheme}, + $self->{keys}, + $self->{sortinitdata}, + $self->{extraalphadata}, + $self->{extrayeardata} ]; +} + +=head2 set_extrayeardata + + Saves extrayear field data for a key + +=cut + +sub set_extrayeardata { + my $self = shift; + my $key = shift; + my $ed = shift; + return unless defined($key); + $self->{extrayeardata}{lc($key)} = $ed; + return; +} + +=head2 get_extrayeardata + + Gets the extrayear field data for a key + +=cut + +sub get_extrayeardata { + my $self = shift; + my $key = shift; + return unless defined($key); + return $self->{extrayeardata}{lc($key)}; +} + +=head2 set_extraalphadata + + Saves extrayear field data for a key + +=cut + +sub set_extraalphadata { + my $self = shift; + my $key = shift; + my $ed = shift; + return unless defined($key); + $self->{extraalphadata}{lc($key)} = $ed; + return; +} + +=head2 get_extraalphadata + + Gets the extraalpha field data for a key + +=cut + +sub get_extraalphadata { + my $self = shift; + my $key = shift; + return unless defined($key); + return $self->{extraalphadata}{lc($key)}; +} + +=head2 set_sortdata + + Saves sorting data in a list for a key + +=cut + +sub set_sortdata { + my $self = shift; + my $key = shift; + my $sd = shift; + return unless defined($key); + $self->{sortdata}{lc($key)} = $sd; + return; +} + +=head2 get_sortdata + + Gets the sorting data in a list for a key + +=cut + +sub get_sortdata { + my $self = shift; + my $key = shift; + return unless defined($key); + return $self->{sortdata}{lc($key)}; +} + + +=head2 set_sortinitdata + + Saves sortinit data in a list for a key + +=cut + +sub set_sortinitdata { + my $self = shift; + my $key = shift; + my $sid = shift; + return unless defined($key); + $self->{sortinitdata}{lc($key)} = $sid; + return; +} + + +=head2 get_sortinitdata + + Gets the sortinit data in a list for a key + +=cut + +sub get_sortinitdata { + my $self = shift; + my $key = shift; + return unless defined($key); + return $self->{sortinitdata}{lc($key)}; +} + + +=head2 set_sortscheme + + Sets the sortscheme of a list + +=cut + +sub set_sortscheme { + my $self = shift; + my $sortscheme = shift; + $self->{sortscheme} = $sortscheme; + return; +} + +=head2 get_sortscheme + + Gets the sortscheme of a list + +=cut + +sub get_sortscheme { + my $self = shift; + return $self->{sortscheme}; +} + + +=head2 add_filter + + Adds a filter to a list object + +=cut + +sub add_filter { + my $self = shift; + my ($type, $values) = @_; + # Disjunctive filters are not simple values + if ($type eq 'orfilter') { + $self->{filters}{$type} = $values; + } + else { + $self->{filters}{$type} = [ split(/\s*,\s*/,$values) ]; + } + return; +} + +=head2 get_filter + + Gets a specific filter from a list object + +=cut + +sub get_filter { + my $self = shift; + my $type = shift; + return $self->{filters}{$type}; +} + +=head2 get_filters + + Gets all filters for a list object + +=cut + +sub get_filters { + my $self = shift; + return $self->{filters}; +} + + +=head2 set_keys + + Sets the keys for the list + +=cut + +sub set_keys { + my $self = shift; + my $keys = shift; + $self->{keys} = $keys; + return; +} + +=head2 get_keys + + Gets the keys for the list + +=cut + +sub get_keys { + my $self = shift; + return @{$self->{keys}}; +} + +=head2 instantiate_entry + + Do any dynamic information replacement for information + which varies in an entry between lists. This is information which + needs to be output to the .bbl for an entry but which is a property + of the sorting list and not the entry per se so it can't be stored + statically in the entry and must be pulled from the specific list + when outputting the entry. + + Currently this means: + + * sortinit + * extrayear + * extraalpha + +=cut + +sub instantiate_entry { + my $self = shift; + my $entry = shift; + my $key = shift; + return '' unless $entry; + + my $entry_string = $$entry; + + my $sid = $self->get_sortinitdata($key); + if (defined($sid)) { + my $si = "\\field{sortinit}{$sid}"; + $entry_string =~ s|<BDS>SORTINIT</BDS>|$si|gxms; + } + + my $eys; + # Might not be set due to skip + if (my $ey = $self->get_extrayeardata($key)) { + $eys = " \\field{extrayear}{$ey}\n"; + } + $entry_string =~ s|^\s*<BDS>EXTRAYEAR</BDS>\n|$eys|gxms; + + my $eas; + # Might not be set due to skip + if (my $ea = $self->get_extraalphadata($key)) { + $eas = " \\field{extraalpha}{$ea}\n"; + } + $entry_string =~ s|^\s*<BDS>EXTRAALPHA</BDS>\n|$eas|gxms; + + return $entry_string; +} + + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Sections.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Sections.pm new file mode 100644 index 00000000000..17e5f792b7d --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Sections.pm @@ -0,0 +1,114 @@ +package Biber::Sections; +#use feature 'unicode_strings'; + +=encoding utf-8 + +=head1 NAME + +Biber::Sections + +=head2 new + + Initialize a Biber::Sections object + +=cut + +sub new { + my ($class) = @_; + my $self = bless {}, $class; + return $self; +} + +=head2 get_num_sections + + Gets the number of Biber::Section objects + +=cut + +sub get_num_sections { + my $self = shift; + my @keys = keys %$self; + return $#keys + 1; +} + + +=head2 get_section + + Gets a Biber::Section by number from the Biber::Sections object + +=cut + +sub get_section { + my $self = shift; + my $number = shift; + return $self->{$number}; +} + +=head2 get_sections + + Gets an sorted array ref of all Biber::Section objects + +=cut + +sub get_sections { + my $self = shift; + return [ sort {$a->number <=> $b->number} values %$self ]; +} + + +=head2 add_section + + Adds a Biber::Section to the Biber::Sections object + +=cut + +sub add_section { + my $self = shift; + my $section = shift; + my $number = $section->number; + $self->{$number} = $section; + return; +} + +=head2 delete_section + + Deletes a section + Mainly used in test scripts + +=cut + +sub delete_section { + my $self = shift; + my $section = shift; + my $number = $section->number; + delete $self->{$number}; + return; +} + + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Structure.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Structure.pm new file mode 100644 index 00000000000..362f8d45574 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Structure.pm @@ -0,0 +1,526 @@ +package Biber::Structure; +#use feature 'unicode_strings'; + +use List::Util qw( first ); +use Biber::Utils; +use Biber::Constants; +use Data::Dump qw( pp ); +use Date::Simple; + +=encoding utf-8 + +=head1 NAME + +Biber::Structure + + +=cut + +my $logger = Log::Log4perl::get_logger('main'); + + +=head2 new + + Initialize a Biber::Structure object + +=cut + +sub new { + my $class = shift; + my $struc = shift; + my $self; + if (defined($struc) and ref($struc) eq 'HASH') { + $self = bless $struc, $class; + } + else { + $self = bless {}, $class; + } + + # Pull out legal entrytypes, fields and constraints and make lookup hash + # for quick tests later + + # field datatypes + my ($nullok, $skipout, @name, @list, @literal, @date, @integer, @range, @verbatim, @key); + + # Create data for field types, including any aliases which might be + # needed when reading the bib data. + foreach my $f (@{$struc->{fields}{field}}) { + if ($f->{fieldtype} eq 'list' and $f->{datatype} eq 'name') { + push @name, $f->{content}; + } + elsif ($f->{fieldtype} eq 'list' and $f->{datatype} eq 'literal') { + push @list, $f->{content}; + } + elsif ($f->{fieldtype} eq 'list' and $f->{datatype} eq 'key') { + push @list, $f->{content}; + } + elsif ($f->{fieldtype} eq 'field' and $f->{datatype} eq 'literal') { + push @literal, $f->{content}; + } + elsif ($f->{fieldtype} eq 'field' and $f->{datatype} eq 'date') { + push @date, $f->{content}; + } + elsif ($f->{fieldtype} eq 'field' and $f->{datatype} eq 'integer') { + push @integer, $f->{content}; + } + elsif ($f->{fieldtype} eq 'field' and $f->{datatype} eq 'range') { + push @range, $f->{content}; + } + elsif ($f->{fieldtype} eq 'field' and $f->{datatype} eq 'verbatim') { + push @verbatim, $f->{content}; + } + elsif ($f->{fieldtype} eq 'field' and $f->{datatype} eq 'key') { + push @key, $f->{content}; + } + + # check null_ok + if ($f->{nullok}) { + $nullok->{$f->{content}} = 1; + } + # check skips - fields we dont' want to output to BBL + if ($f->{skip_output}) { + $skipout->{$f->{content}} = 1; + } + } + + # Store as lookup tables for speed and multiple re-use + $self->{fields}{nullok} = $nullok; + $self->{fields}{skipout} = $skipout; + $self->{fields}{complex} = { map {$_ => 1} (@name, @list, @range, @date) }; + $self->{fields}{literal} = { map {$_ => 1} (@literal, @key, @integer) }; + $self->{fields}{name} = { map {$_ => 1} @name }; + $self->{fields}{list} = { map {$_ => 1} @list }; + $self->{fields}{verbatim} = { map {$_ => 1} @verbatim }; + $self->{fields}{range} = { map {$_ => 1} @range }; + $self->{fields}{date} = { map {$_ => 1} @date }; + + my $leg_ents; + my $ets = [ sort map {$_->{content}} @{$struc->{entrytypes}{entrytype}} ]; + + foreach my $es (@$ets) { + + # fields for entrytypes + my $lfs; + foreach my $ef (@{$struc->{entryfields}}) { + # Found a section describing legal fields for entrytype + if (grep {($_->{content} eq $es) or ($_->{content} eq 'ALL')} @{$ef->{entrytype}}) { + foreach my $f (@{$ef->{field}}) { + $lfs->{$f->{content}} = 1; + } + } + } + + # constraints + my $constraints; + foreach my $cd (@{$struc->{constraints}}) { + # Found a section describing constraints for entrytype + if (grep {($_->{content} eq $es) or ($_->{content} eq 'ALL')} @{$cd->{entrytype}}) { + foreach my $c (@{$cd->{constraint}}) { + if ($c->{type} eq 'mandatory') { + # field + foreach my $f (@{$c->{field}}) { + push @{$constraints->{mandatory}}, $f->{content}; + } + # xor set of fields + # [ XOR, field1, field2, ... , fieldn ] + foreach my $fxor (@{$c->{fieldxor}}) { + my $xorset; + foreach my $f (@{$fxor->{field}}) { + if ($f->{coerce}) { + # put the default override element at the front and flag it + unshift @$xorset, $f->{content}; + } + else { + push @$xorset, $f->{content}; + } + } + unshift @$xorset, 'XOR'; + push @{$constraints->{mandatory}}, $xorset; + } + # or set of fields + # [ OR, field1, field2, ... , fieldn ] + foreach my $for (@{$c->{fieldor}}) { + my $orset; + foreach my $f (@{$for->{field}}) { + push @$orset, $f->{content}; + } + unshift @$orset, 'OR'; + push @{$constraints->{mandatory}}, $orset; + } + } + # Conditional constraints + # [ ANTECEDENT_QUANTIFIER + # [ ANTECEDENT LIST ] + # CONSEQUENT_QUANTIFIER + # [ CONSEQUENT LIST ] + # ] + elsif ($c->{type} eq 'conditional') { + my $cond; + $cond->[0] = $c->{antecedent}{quant}; + $cond->[1] = [ map { $_->{content} } @{$c->{antecedent}{field}} ]; + $cond->[2] = $c->{consequent}{quant}; + $cond->[3] = [ map { $_->{content} } @{$c->{consequent}{field}} ]; + push @{$constraints->{conditional}}, $cond; + } + # data constraints + elsif ($c->{type} eq 'data') { + my $data; + $data->{fields} = [ map { $_->{content} } @{$c->{field}} ]; + $data->{datatype} = $c->{datatype}; + $data->{rangemin} = $c->{rangemin}; + $data->{rangemax} = $c->{rangemax}; + push @{$constraints->{data}}, $data; + } + } + } + } + $leg_ents->{$es}{legal_fields} = $lfs; + $leg_ents->{$es}{constraints} = $constraints; + } + $self->{legal_entrytypes} = $leg_ents; + + # date types + my $dts; + foreach my $dt (@{$struc->{datetypes}{datetype}}) { + push @$dts, $dt->{content}; + } + + $self->{legal_datetypes} = $dts; + + return $self; +} + + +=head2 is_entrytype + + Returns boolean to say if an entrytype is a legal entrytype + +=cut + +sub is_entrytype { + my $self = shift; + my $type = shift; + return $self->{legal_entrytypes}{$type} ? 1 : 0; +} + +=head2 is_field_for_entrytype + + Returns boolean to say if a field is legal for an entrytype + +=cut + +sub is_field_for_entrytype { + my $self = shift; + my ($type, $field) = @_; + if ($self->{legal_entrytypes}{ALL}{legal_fields}{$field} or + $self->{legal_entrytypes}{$type}{legal_fields}{$field} or + $self->{legal_entrytypes}{$type}{legal_fields}{ALL}) { + return 1; + } + else { + return 0; + } +} + + +=head2 get_field_type + + Retrieve fields of a certain biblatex type from structure + Return in sorted order so that bbl order doesn't change when changing + .bcf. This really messes up tests otherwise. + +=cut + +sub get_field_type { + my $self = shift; + my $type = shift; + return $self->{fields}{$type} ? [ sort keys %{$self->{fields}{$type}} ] : ''; +} + +=head2 is_field_type + + Returns boolean depending on whether a field is a certain biblatex type + +=cut + +sub is_field_type { + my $self = shift; + my ($type, $field) = @_; + return $self->{fields}{$type}{$field} // 0; +} + + +=head2 check_mandatory_constraints + + Checks constraints of type "mandatory" on entry and + returns an arry of warnings, if any + +=cut + +sub check_mandatory_constraints { + my $self = shift; + my $be = shift; + my @warnings; + my $et = $be->get_field('entrytype'); + my $citekey = $be->get_field('dskey'); + foreach my $c ((@{$self->{legal_entrytypes}{ALL}{constraints}{mandatory}}, + @{$self->{legal_entrytypes}{$et}{constraints}{mandatory}})) { + if (ref($c) eq 'ARRAY') { + # Exactly one of a set is mandatory + if ($c->[0] eq 'XOR') { + my @fs = @$c[1,-1]; # Lose the first element which is the 'XOR' + my $flag = 0; + my $xorflag = 0; + foreach my $of (@fs) { + if ($be->field_exists($of)) { + if ($xorflag) { + push @warnings, "Mandatory fields - only one of '" . join(', ', @fs) . "' must be defined in entry '$citekey' ignoring field '$of'"; + $be->del_field($of); + } + $flag = 1; + $xorflag = 1; + } + } + unless ($flag) { + push @warnings, "Missing mandatory field - one of '" . join(', ', @fs) . "' must be defined in entry '$citekey'"; + } + } + # One or more of a set is mandatory + elsif ($c->[0] eq 'OR') { + my @fs = @$c[1,-1]; # Lose the first element which is the 'OR' + my $flag = 0; + foreach my $of (@fs) { + if ($be->field_exists($of)) { + $flag = 1; + last; + } + } + unless ($flag) { + push @warnings, "Missing mandatory field - one of '" . join(', ', @fs) . "' must be defined in entry '$citekey'"; + } + } + } + # Simple mandatory field + else { + unless ($be->field_exists($c)) { + push @warnings, "Missing mandatory field '$c' in entry '$citekey'"; + } + } + } + return @warnings; +} + +=head2 check_conditional_constraints + + Checks constraints of type "conditional" on entry and + returns an arry of warnings, if any + +=cut + +sub check_conditional_constraints { + my $self = shift; + my $be = shift; + my @warnings; + my $et = $be->get_field('entrytype'); + my $citekey = $be->get_field('dskey'); + + foreach my $c ((@{$self->{legal_entrytypes}{ALL}{constraints}{conditional}}, + @{$self->{legal_entrytypes}{$et}{constraints}{conditional}})) { + my $aq = $c->[0]; # Antecedent quantifier + my $afs = $c->[1]; # Antecedent fields + my $cq = $c->[2]; # Consequent quantifier + my $cfs = $c->[3]; # Consequent fields + my @actual_afs = (grep {$be->field_exists($_)} @$afs); # antecedent fields in entry + # check antecedent + if ($aq eq 'all') { + next unless $#$afs == $#actual_afs; # ALL -> ? not satisfied + } + elsif ($aq eq 'none') { + next if @actual_afs; # NONE -> ? not satisfied + } + elsif ($aq eq 'one') { + next unless @actual_afs; # ONE -> ? not satisfied + } + + # check consequent + my @actual_cfs = (grep {$be->field_exists($_)} @$cfs); + if ($cq eq 'all') { + unless ($#$cfs == $#actual_cfs) { # ? -> ALL not satisfied + push @warnings, "Constraint violation - $cq of fields (" . + join(', ', @$cfs) . + ") must exist when $aq of fields (" . join(', ', @$afs). ") exist"; + } + } + elsif ($cq eq 'none') { + if (@actual_cfs) { # ? -> NONE not satisfied + push @warnings, "Constraint violation - $cq of fields (" . + join(', ', @actual_cfs) . + ") must exist when $aq of fields (" . join(', ', @$afs). ") exist. Ignoring them."; + # delete the offending fields + foreach my $f (@actual_cfs) { + $be->del_field($f); + } + } + } + elsif ($cq eq 'one') { + unless (@actual_cfs) { # ? -> ONE not satisfied + push @warnings, "Constraint violation - $cq of fields (" . + join(', ', @$cfs) . + ") must exist when $aq of fields (" . join(', ', @$afs). ") exist"; + } + } + } + return @warnings; +} + +=head2 check_data_constraints + + Checks constraints of type "data" on entry and + returns an arry of warnings, if any + +=cut + +sub check_data_constraints { + my $self = shift; + my $be = shift; + my @warnings; + my $et = $be->get_field('entrytype'); + my $citekey = $be->get_field('dskey'); + foreach my $c ((@{$self->{legal_entrytypes}{ALL}{constraints}{data}}, + @{$self->{legal_entrytypes}{$et}{constraints}{data}})) { + if ($c->{datatype} eq 'integer') { + my $dt = $STRUCTURE_DATATYPES{$c->{datatype}}; + foreach my $f (@{$c->{fields}}) { + if (my $fv = $be->get_field($f)) { + unless ( $fv =~ /$dt/ ) { + push @warnings, "Invalid format (integer) of field '$f' - ignoring field in entry '$citekey'"; + $be->del_field($f); + next; + } + if (my $fmin = $c->{rangemin}) { + unless ($fv >= $fmin) { + push @warnings, "Invalid value of field '$f' must be '>=$fmin' - ignoring field in entry '$citekey'"; + $be->del_field($f); + next; + } + } + if (my $fmax = $c->{rangemax}) { + unless ($fv <= $fmax) { + push @warnings, "Invalid value of field '$f' must be '<=$fmax' - ignoring field in entry '$citekey'"; + $be->del_field($f); + next; + } + } + } + } + } + } + return @warnings; +} + +=head2 check_date_components + + Perform content validation checks on date components by trying to + instantiate a Date::Simple object. + +=cut + +sub check_date_components { + my $self = shift; + my $be = shift; + my @warnings; + my $et = $be->get_field('entrytype'); + my $citekey = $be->get_field('dskey'); + + foreach my $f (@{$self->{legal_datetypes}}) { + my ($d) = $f =~ m/\A(.*)date\z/xms; + # Don't bother unless this type of date is defined (has a year) + next unless $be->get_datafield($d . 'year'); + + # When checking date components not split from date fields, have ignore the value + # of an explicit YEAR field as it is allowed to be an arbitrary string + # so we just set it to any valid value for the test + my $byc; + my $byc_d; # Display value for errors so as not to confuse people + if ($d eq '' and not $be->get_field('datesplit')) { + $byc = '1900'; # Any valid value is fine + $byc_d = 'YYYY'; + } + else { + $byc = $be->get_datafield($d . 'year') + } + + # Begin date + if ($byc) { + my $bm = $be->get_datafield($d . 'month') || 'MM'; + my $bmc = $bm eq 'MM' ? '01' : $bm; + my $bd = $be->get_datafield($d . 'day') || 'DD'; + my $bdc = $bd eq 'DD' ? '01' : $bd; + $logger->debug("Checking '${d}date' date value '$byc/$bmc/$bdc' for key '$citekey'"); + unless (Date::Simple->new("$byc$bmc$bdc")) { + push @warnings, "Invalid date value '" . + ($byc_d || $byc) . + "/$bm/$bd' - ignoring its components in entry '$citekey'"; + $be->del_datafield($d . 'year'); + $be->del_datafield($d . 'month'); + $be->del_datafield($d . 'day'); + next; + } + } + # End date + # defined and some value - end*year can be empty but defined in which case, + # we don't need to validate + if (my $eyc = $be->get_datafield($d . 'endyear')) { + my $em = $be->get_datafield($d . 'endmonth') || 'MM'; + my $emc = $em eq 'MM' ? '01' : $em; + my $ed = $be->get_datafield($d . 'endday') || 'DD'; + my $edc = $ed eq 'DD' ? '01' : $ed; + $logger->debug("Checking '${d}date' date value '$eyc/$emc/$edc' for key '$citekey'"); + unless (Date::Simple->new("$eyc$emc$edc")) { + push @warnings, "Invalid date value '$eyc/$em/$ed' - ignoring its components in entry '$citekey'"; + $be->del_datafield($d . 'endyear'); + $be->del_datafield($d . 'endmonth'); + $be->del_datafield($d . 'endday'); + next; + } + } + } + return @warnings; +} + +=head2 dump + + Dump Biber::Structure object + +=cut + +sub dump { + my $self = shift; + return pp($self); +} + +=head1 AUTHORS + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + + +1; diff --git a/Master/texmf-dist/source/bibtex/biber/lib/Biber/Utils.pm b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Utils.pm new file mode 100644 index 00000000000..d4b9f85f3a1 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/lib/Biber/Utils.pm @@ -0,0 +1,564 @@ +package Biber::Utils; +#use feature 'unicode_strings'; + +use strict; +use warnings; +use Carp; +use Encode; +use File::Find; +use File::Spec; +use IPC::Cmd qw( can_run run ); +use List::Util qw( first ); +use Biber::Constants; +use Biber::LaTeX::Recode; +use Biber::Entry::Name; +use Regexp::Common qw( balanced ); +use re 'eval'; +use base 'Exporter'; +use Log::Log4perl qw(:no_extra_logdie_message); + +my $logger = Log::Log4perl::get_logger('main'); + +=encoding utf-8 + +=head1 NAME + +Biber::Utils - Various utility subs used in Biber + +=cut + +=head1 EXPORT + +All functions are exported by default. + +=cut + +our @EXPORT = qw{ locate_biber_file makenameid stringify_hash + normalise_string normalise_string_lite normalise_string_underscore normalise_string_sort + reduce_array remove_outer add_outer ucinit strip_nosort + is_def is_undef is_def_and_notnull is_def_and_null + is_undef_or_null is_notnull is_null normalise_utf8}; + +=head1 FUNCTIONS + +=head2 locate_biber_file + + Searches for a file by + + For the exact path if the filename is absolute + In the output_directory, if defined + Relative to the current directory + In the same directory as the control file + Using kpsewhich, if available + +=cut + +sub locate_biber_file { + my $filename = shift; + my $filenamepath = $filename; # default if nothing else below applies + my $outfile; + # If output_directory is set, perhaps the file can be found there so + # construct a path to test later + if (my $outdir = Biber::Config->getoption('output_directory')) { + $outfile = File::Spec->catfile($outdir, $filename); + } + + # Filename is absolute + if (File::Spec->file_name_is_absolute($filename) and -e $filename) { + return $filename; + } + + # File is output_directory + if (defined($outfile) and -e $outfile) { + return $outfile; + } + + # File is relative to cwd + if (-e $filename) { + return $filename; + } + + # File is where control file lives + if (my $cfp = Biber::Config->get_ctrlfile_path) { + my ($ctlvolume, $ctldir, undef) = File::Spec->splitpath($cfp); + if ($ctlvolume) { # add vol sep for windows if volume is set and there isn't one + $ctlvolume .= ':' unless $ctlvolume =~ /:\z/; + } + if ($ctldir) { # add path sep if there isn't one + $ctldir .= '/' unless $ctldir =~ /\/\z/; + } + + my $path = "$ctlvolume$ctldir$filename"; + + return $path if -e $path; + } + + # File is in kpse path + if (can_run('kpsewhich')) { + my $found; + scalar run( command => [ 'kpsewhich', $filename ], + verbose => 0, + buffer => \$found ); + if ($found) { + chomp $found; + # filename can be UTF-8 and run() isn't clever with UTF-8 + return decode_utf8($found); + } + } + return undef; +} + +=head2 makenameid + +Given a Biber::Names object, return an underscore normalised +concatenation of all of the full name strings. + +=cut + +sub makenameid { + my $names = shift; + my @namestrings; + foreach my $name (@{$names->names}) { + push @namestrings, $name->get_namestring; + } + my $tmp = join ' ', @namestrings; + return normalise_string_underscore($tmp); +} + +=head2 latex_recode_output + + Tries to convert UTF-8 to TeX macros in passes string + +=cut + +sub latex_recode_output { + my $string = shift; + $logger->info('Converting UTF-8 to TeX macros on output to .bbl'); + require Biber::LaTeX::Recode; + return Biber::LaTeX::Recode::latex_encode($string, + scheme => Biber::Config->getoption('bblsafecharsset')); +}; + +=head2 strip_nosort + +Removes elements which are not to be used in sorting a name from a string + +=cut + +sub strip_nosort { + my $string = shift; + my $fieldname = shift; + return '' unless $string; # Sanitise missing data + my $nosort = Biber::Config->getoption('nosort'); + # Strip user-defined REs from string + my $restrings; + # Specific fieldnames override types + if (exists($nosort->{$fieldname})) { + $restrings = $nosort->{$fieldname}; + } + else { # types + foreach my $ns (keys %$nosort) { + next unless $ns =~ /\Atype_/xms; + if ($NOSORT_TYPES{$ns}{$fieldname}) { + $restrings = $nosort->{$ns}; + } + } + } + # If no nosort to do, just return string + return $string unless $restrings; + # Config::General can't force arrays per option and don't want to set this globally + $restrings = [ $restrings ] unless ref($restrings) eq 'ARRAY'; + foreach my $re (@$restrings) { + $re = qr/$re/; + $string =~ s/$re//gxms; + } + return $string; +} + +=head2 normalise_string_sort + +Removes LaTeX macros, and all punctuation, symbols, separators and control characters, +as well as leading and trailing whitespace for sorting strings. +It also decodes LaTeX character macros into Unicode as this is always safe when +normalising strings for sorting since they don't appear in the output. + +=cut + +sub normalise_string_sort { + my $str = shift; + my $fieldname = shift; + return '' unless $str; # Sanitise missing data + # First strip nosort REs + $str = strip_nosort($str, $fieldname); + # First replace ties with spaces or they will be lost + $str =~ s/([^\\])~/$1 /g; # Foo~Bar -> Foo Bar + # Replace LaTeX chars by Unicode for sorting + # Don't bother if output is UTF-8 as in this case, we've already decoded everthing + # before we read the file (see Biber.pm) + unless (Biber::Config->getoption('bblencoding') eq 'UTF-8') { + $str = latex_decode($str, strip_outer_braces => 1, + scheme => Biber::Config->getoption('decodecharsset')); + } + return normalise_string_common($str); +} + +=head2 normalise_string + +Removes LaTeX macros, and all punctuation, symbols, separators and control characters, +as well as leading and trailing whitespace for sorting strings. +Only decodes LaTeX character macros into Unicode if output is UTF-8 + +=cut + +sub normalise_string { + my $str = shift; + return '' unless $str; # Sanitise missing data + # First replace ties with spaces or they will be lost + $str =~ s/([^\\])~/$1 /g; # Foo~Bar -> Foo Bar + if (Biber::Config->getoption('bblencoding') eq 'UTF-8') { + $str = latex_decode($str, strip_outer_braces => 1, + scheme => Biber::Config->getoption('decodecharsset')); + } + return normalise_string_common($str); +} + +=head2 normalise_string_common + + Common bit for normalisation + +=cut + +sub normalise_string_common { + my $str = shift; + $str =~ s/\\[A-Za-z]+//g; # remove latex macros (assuming they have only ASCII letters) + $str =~ s/[\p{P}\p{S}\p{C}]+//g; # remove punctuation, symbols, separator and control + $str =~ s/^\s+//; # Remove leading spaces + $str =~ s/\s+$//; # Remove trailing spaces + $str =~ s/\s+/ /g; # collapse spaces + return $str; +} + +=head2 normalise_string_lite + + Removes LaTeX macros + +=cut + +sub normalise_string_lite { + my $str = shift; + return '' unless $str; # Sanitise missing data + # First replace ties with spaces or they will be lost + $str =~ s/\\\p{L}+\s*//g; # remove tex macros + $str =~ s/\\[^\p{L}]+\s*//g; # remove accent macros like \"a + $str =~ s/[{}]//g; # Remove any brackets left + $str =~ s/~//g; + $str =~ s/\.//g; + $str =~ s/\s+//g; + return $str; +} + +=head2 normalise_string_underscore + +Like normalise_string, but also substitutes ~ and whitespace with underscore. + +=cut + +sub normalise_string_underscore { + my $str = shift; + return '' unless $str; # Sanitise missing data + $str =~ s/([^\\])~/$1 /g; # Foo~Bar -> Foo Bar + $str = normalise_string($str); + $str =~ s/\s+/_/g; + return $str; +} + +=head2 reduce_array + +reduce_array(\@a, \@b) returns all elements in @a that are not in @b + +=cut + +sub reduce_array { + my ($a, $b) = @_; + my %countb = (); + foreach my $elem (@$b) { + $countb{$elem}++; + } + my @result; + foreach my $elem (@$a) { + push @result, $elem unless $countb{$elem}; + } + return @result; +} + +=head2 remove_outer + + Remove surrounding curly brackets: + '{string}' -> 'string' + +=cut + +sub remove_outer { + my $str = shift; + $str =~ s/^{(.+)}$/$1/; + return $str; +} + +=head2 add_outer + + Add surrounding curly brackets: + 'string' -> '{string}' + +=cut + +sub add_outer { + my $str = shift; + return '{' . $str . '}'; +} + + +=head2 ucinit + + upper case of initial letters in a string + +=cut + +sub ucinit { + my $str = shift; + $str = lc($str); + $str =~ s/\b(\p{Ll})/\u$1/g; + return $str; +} + +=head2 is_undef + + Checks for undefness of arbitrary things, including + composite method chain calls which don't reliably work + with defined() (see perldoc for defined()) + This works because we are just testing the value passed + to this sub. So, for example, this is randomly unreliable + even if the resulting value of the arg to defined() is "undef": + + defined($thing->method($arg)->method) + + wheras: + + is_undef($thing->method($arg)->method) + + works since we only test the return value of all the methods + with defined() + +=cut + +sub is_undef { + my $val = shift; + return defined($val) ? 0 : 1; +} + +=head2 is_def + + Checks for definedness in the same way as is_undef() + +=cut + +sub is_def { + my $val = shift; + return defined($val) ? 1 : 0; +} + +=head2 is_undef_or_null + + Checks for undef or nullness (see is_undef() above) + +=cut + +sub is_undef_or_null { + my $val = shift; + return 1 if is_undef($val); + return $val ? 0 : 1; +} + +=head2 is_def_and_notnull + + Checks for def and unnullness (see is_undef() above) + +=cut + +sub is_def_and_notnull { + my $arg = shift; + if (defined($arg) and is_notnull($arg)) { + return 1; + } + else { + return 0; + } +} + +=head2 is_def_and_null + + Checks for def and nullness (see is_undef() above) + +=cut + +sub is_def_and_null { + my $arg = shift; + if (defined($arg) and is_null($arg)) { + return 1; + } + else { + return 0; + } +} + +=head2 is_null + + Checks for nullness + +=cut + +sub is_null { + my $arg = shift; + return is_notnull($arg) ? 0 : 1; +} + +=head2 is_notnull + + Checks for notnullness + +=cut + +sub is_notnull { + my $arg = shift; + return undef unless defined($arg); + my $st = is_notnull_scalar($arg); + if (defined($st) and $st) { return 1; } + my $at = is_notnull_array($arg); + if (defined($at) and $at) { return 1; } + my $ht = is_notnull_hash($arg); + if (defined($ht) and $ht) { return 1; } + my $ot = is_notnull_object($arg); + if (defined($ot) and $ot) { return 1; } + return 0; +} + +=head2 is_notnull_scalar + + Checks for notnullness of a scalar + +=cut + +sub is_notnull_scalar { + my $arg = shift; + unless (ref \$arg eq 'SCALAR') { + return undef; + } + return $arg ne '' ? 1 : 0; +} + +=head2 is_notnull_array + + Checks for notnullness of an array (passed by ref) + +=cut + +sub is_notnull_array { + my $arg = shift; + unless (ref $arg eq 'ARRAY') { + return undef; + } + my @arr = @$arg; + return $#arr > -1 ? 1 : 0; +} + +=head2 is_notnull_hash + + Checks for notnullness of an hash (passed by ref) + +=cut + +sub is_notnull_hash { + my $arg = shift; + unless (ref $arg eq 'HASH') { + return undef; + } + my @arr = keys %$arg; + return $#arr > -1 ? 1 : 0; +} + +=head2 is_notnull_object + + Checks for notnullness of an object (passed by ref) + +=cut + +sub is_notnull_object { + my $arg = shift; + unless (ref($arg) =~ m/\ABiber::/xms) { + return undef; + } + return $arg->notnull ? 1 : 0; +} + + +=head2 stringify_hash + + Turns a hash into a string of keys and values + +=cut + +sub stringify_hash { + my $hashref = shift; + my $string; + while (my ($k,$v) = each %{$hashref}) { + $string .= "$k => $v, "; + } + # Take off the trailing comma and space + chop $string; + chop $string; + return $string; +} + +=head2 normalise_utf8 + + Normalise any UTF-8 encoding string immediately to exactly what we want + We want the strict perl utf8 "UTF-8" + +=cut + +sub normalise_utf8 { + if (defined(Biber::Config->getoption('bibencoding')) and + Biber::Config->getoption('bibencoding') =~ m/\Autf-?8\z/xmsi) { + Biber::Config->setoption('bibencoding', 'UTF-8'); + } + if (defined(Biber::Config->getoption('bblencoding')) and + Biber::Config->getoption('bblencoding') =~ m/\Autf-?8\z/xmsi) { + Biber::Config->setoption('bblencoding', 'UTF-8'); + } +} + +=head1 AUTHOR + +François Charette, C<< <firmicus at gmx.net> >> +Philip Kime C<< <philip at kime.org.uk> >> + +=head1 BUGS + +Please report any bugs or feature requests on our sourceforge tracker at +L<https://sourceforge.net/tracker2/?func=browse&group_id=228270>. + +=head1 COPYRIGHT & LICENSE + +Copyright 2009-2011 François Charette and Philip Kime, all rights reserved. + +This module is free software. You can redistribute it and/or +modify it under the terms of the Artistic License 2.0. + +This program is distributed in the hope that it will be useful, +but without any warranty; without even the implied warranty of +merchantability or fitness for a particular purpose. + +=cut + +1; + +# vim: set tabstop=2 shiftwidth=2 expandtab: diff --git a/Master/texmf-dist/source/bibtex/biber/t/00-options.t b/Master/texmf-dist/source/bibtex/biber/t/00-options.t new file mode 100755 index 00000000000..d9212b93e38 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/00-options.t @@ -0,0 +1,102 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8' ; + +use Test::More tests => 7; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('options.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('sortlocale', 'C'); + +# Biblatex options +Biber::Config->setblxoption('labelyearspec', [ 'year' ]); + +# Now generate the information +$biber->prepare; +my $out = $biber->get_output_obj; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $bibentries = $section->bibentries; + +my $dmv = [ + [ + {'presort' => {}}, + {'mm' => {}}, + ], + [ + {'sortkey' => {'final' => 1}} + ], + [ + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {'volume' => {}}, + {'0000' => {}} + ] + ]; + +my $bln = [ 'author', 'editor' ]; + +my $l1 = q| \entry{L1}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Oxford}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{sortinit}{D} + \field{labelyear}{1998} + \count{uniquename}{0} + \field{day}{05} + \field{month}{04} + \field{origday}{30} + \field{origmonth}{10} + \field{origyear}{1985} + \field{title}{Title 1} + \field{year}{1998} + \endentry + +|; + +ok(Biber::Config->getblxoption('uniquename') == 1, "Single-valued option") ; +is_deeply(Biber::Config->getblxoption('labelnamespec'), [ 'author' ], "Multi-valued options"); +ok(Biber::Config->getoption('mincrossrefs') == 88, "Setting Biber options via control file"); +ok(Biber::Config->getblxoption('useprefix', 'book') == 1 , "Per-type single-valued options"); +is_deeply(Biber::Config->getblxoption('labelnamespec', 'book'), $bln, "Per-type multi-valued options"); +is($bibentries->entry('l1')->get_field('labelyearname'), 'year', 'Global labelyear setting' ) ; +is( $out->get_output_entry($main,'l1'), $l1, 'Global labelyear setting - labelyear should be YEAR') ; + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/01-names-biblatexml.t b/Master/texmf-dist/source/bibtex/biber/t/01-names-biblatexml.t new file mode 100755 index 00000000000..249bc2e9841 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/01-names-biblatexml.t @@ -0,0 +1,82 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +#use Test::More skip_all => 'bltxml not working yet'; +use Test::More tests => 1; + +use Biber; +use Biber::Input::file::bibtex; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('names-biblatexml.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('sortlocale', 'C'); + +# Now generate the information +$biber->prepare; +my $out = $biber->get_output_obj; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $bibentries = $section->bibentries; + +my $l1 = q| \entry{BulgakovRozenfeld:1983}{book}{} + \name{labelname}{3}{% + {{Булгаков}{Б.}{Павел~Георгиевич}{П.}{}{}{}{}}% + {{Розенфельд}{Ð .}{БориÑ~Ðбрамович}{Б.~B.}{Билл}{д.}{}{}{}{}}% + {{Ðхмедов}{Ð.}{Ðшраф~Ðхмедович}{Ð.~Ð.}{}{}{}{}}% + } + \name{author}{3}{% + {{Булгаков}{Б.}{Павел~Георгиевич}{П.}{}{}{}{}}% + {{Розенфельд}{Ð .}{БориÑ~Ðбрамович}{Б.~B.}{Билл}{д.}{}{}{}{}}% + {{Ðхмедов}{Ð.}{Ðшраф~Ðхмедович}{Ð.~Ð.}{}{}{}{}}% + } + \list{language}{1}{% + {Russian}% + } + \list{location}{1}{% + {МоÑква}% + } + \list{publisher}{1}{% + {Ðаука}% + } + \strng{namehash}{БПРБBдÐÐÐ1} + \strng{fullhash}{БПРБBдÐÐÐ1} + \field{sortinit}{Б} + \field{labelyear}{1983} + \field{eventday}{16} + \field{eventendday}{17} + \field{eventendmonth}{05} + \field{eventendyear}{1990} + \field{eventmonth}{05} + \field{eventyear}{1990} + \field{origday}{02} + \field{origmonth}{04} + \field{origyear}{1985} + \field{pagetotal}{240} + \field{series}{Ðаучно-биографичеÑÐºÐ°Ñ Ð»Ð¸Ñ‚ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°} + \field{title}{Mukhammad al-Khorezmi. Ca. 783 – ca. 850} + \field{urlday}{01} + \field{urlendyear}{} + \field{urlmonth}{07} + \field{urlyear}{1991} + \field{year}{1983} + \endentry + +|; + +is( $out->get_output_entry($main, 'bulgakovrozenfeld:1983'), $l1, 'Basic BibLaTeXML test - 1') ; + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/01-names.t b/Master/texmf-dist/source/bibtex/biber/t/01-names.t new file mode 100755 index 00000000000..22808d39c58 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/01-names.t @@ -0,0 +1,780 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 47; + +use Biber; +use Biber::Input::file::bibtex; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('names.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('sortlocale', 'C'); + +# Now generate the information +$biber->prepare; +my $out = $biber->get_output_obj; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $bibentries = $section->bibentries; + +my $name1 = + { firstname => "John", + firstname_i => "J.", + firstname_it => "J", + lastname => "Doe", + lastname_i => "D.", + lastname_it => "D", + nameinitstring => "Doe_J", + namestring => "Doe, John", + prefix => undef, + prefix_i => undef, + prefix_it => undef, + strip => { firstname => 0, lastname => 0, prefix => undef, suffix => undef }, + suffix => undef, + suffix_i => undef, + suffix_it => undef}; +my $name2 = + { firstname => "John", + firstname_i => "J.", + firstname_it => "J", + lastname => "Doe", + lastname_i => "D.", + lastname_it => "D", + nameinitstring => "Doe_J_J", + namestring => "Doe, Jr, John", + prefix => undef, + prefix_i => undef, + prefix_it => undef, + strip => { firstname => 0, lastname => 0, prefix => undef, suffix => 0 }, + suffix => "Jr", + suffix_i => "J.", + suffix_it => "J" } ; + + + +my $name3 = + { firstname => "Johann~Gottfried", + firstname_i => "J.~G.", + firstname_it => "JG", + lastname => "Berlichingen zu~Hornberg", + lastname_i => "B.~z.~H.", + lastname_it => "BzH", + nameinitstring => "v_Berlichingen_zu_Hornberg_JG", + namestring => "von Berlichingen zu Hornberg, Johann Gottfried", + prefix => "von", + prefix_i => "v.", + prefix_it => "v", + strip => { firstname => 0, lastname => 0, prefix => 0, suffix => undef }, + suffix => undef, + suffix_i => undef, + suffix_it => undef}; + +my $name4 = + { firstname => "Johann~Gottfried", + firstname_i => "J.~G.", + firstname_it => "JG", + lastname => "Berlichingen zu~Hornberg", + lastname_i => "B.~z.~H.", + lastname_it => "BzH", + nameinitstring => "Berlichingen_zu_Hornberg_JG", + namestring => "von Berlichingen zu Hornberg, Johann Gottfried", + prefix => "von", + prefix_i => "v.", + prefix_it => "v", + strip => { firstname => 0, lastname => 0, prefix => 0, suffix => undef }, + suffix => undef, + suffix_i => undef, + suffix_it => undef}; + + +my $name5 = + { firstname => undef, + firstname_i => undef, + firstname_it => undef, + lastname => "Robert and Sons, Inc.", + lastname_i => "R.", + lastname_it => "R", + nameinitstring => "{Robert_and_Sons,_Inc.}", + namestring => "Robert and Sons, Inc.", + prefix => undef, + prefix_i => undef, + prefix_it => undef, + strip => { firstname => undef, lastname => 1, prefix => undef, suffix => undef }, + suffix => undef, + suffix_i => undef, + suffix_it => undef}; + + +my $name6 = + { firstname => 'Ê¿AbdallÄh', + firstname_i => 'A.', + firstname_it => 'A', + lastname => 'al-á¹¢Äliḥ', + lastname_i => 'á¹¢.', + lastname_it => 'á¹¢', + prefix => undef, + prefix_i => undef, + prefix_it => undef, + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 0, lastname => 0, prefix => undef, suffix => undef }, + namestring => 'al-á¹¢Äliḥ, Ê¿AbdallÄh', + nameinitstring => 'al-á¹¢Äliḥ_A' } ; + + +my $name7 = + { firstname => 'Jean Charles~Gabriel', + firstname_i => 'J.~C.~G.', + firstname_it => 'JCG', + lastname_i => 'V.~P.', + lastname_it => 'VP', + lastname => 'Vallée~Poussin', + prefix => 'de~la', + prefix_i => 'd.~l.', + prefix_it => 'dl', + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 0, lastname => 0, prefix => 0, suffix => undef }, + namestring => 'de la Vallée Poussin, Jean Charles Gabriel', + nameinitstring => 'dl_Vallée_Poussin_JCG' } ; +my $name8 = + { firstname => 'Jean Charles Gabriel', + firstname_i => 'J.', + firstname_it => 'J', + lastname => 'Vallée~Poussin', + lastname_i => 'V.~P.', + lastname_it => 'VP', + prefix => 'de~la', + prefix_i => 'd.~l.', + prefix_it => 'dl', + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 1, lastname => 0, prefix => 0, suffix => undef }, + namestring => 'de la Vallée Poussin, Jean Charles Gabriel', + nameinitstring => 'Vallée_Poussin_J' } ; +my $name9 = + { firstname => 'Jean Charles Gabriel {de la}~Vallée', + firstname_i => 'J.~C. G. d.~V.', + firstname_it => 'JCGdV', + lastname => 'Poussin', + lastname_i => 'P.', + lastname_it => 'P', + prefix => undef, + prefix_i => undef, + prefix_it => undef, + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 0, lastname => 0, prefix => undef, suffix => undef }, + namestring => 'Poussin, Jean Charles Gabriel {de la} Vallée', + nameinitstring => 'Poussin_JCGdV' } ; +my $name10 = + { firstname => 'Jean Charles~Gabriel', + firstname_i => 'J.~C.~G.', + firstname_it => 'JCG', + lastname => 'Vallée Poussin', + lastname_i => 'V.', + lastname_it => 'V', + prefix => 'de~la', + prefix_i => 'd.~l.', + prefix_it => 'dl', + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 0, lastname => 1, prefix => 0, suffix => undef }, + namestring => 'de la Vallée Poussin, Jean Charles Gabriel', + nameinitstring => '{Vallée_Poussin}_JCG' } ; +my $name11 = + { firstname => 'Jean Charles Gabriel', + firstname_i => 'J.', + firstname_it => 'J', + lastname => 'Vallée Poussin', + lastname_i => 'V.', + lastname_it => 'V', + prefix => 'de~la', + prefix_i => 'd.~l.', + prefix_it => 'dl', + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 1, lastname => 1, prefix => 0, suffix => undef }, + namestring => 'de la Vallée Poussin, Jean Charles Gabriel', + nameinitstring => '{Vallée_Poussin}_J' } ; + +my $name12 = + { firstname => 'Jean Charles~Gabriel', + firstname_i => 'J.~C.~G.', + firstname_it => 'JCG', + lastname => 'Poussin', + lastname_i => 'P.', + lastname_it => 'P', + prefix => undef, + prefix_i => undef, + prefix_it => undef, + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 0, lastname => 0, prefix => undef, suffix => undef }, + namestring => 'Poussin, Jean Charles Gabriel', + nameinitstring => 'Poussin_JCG' } ; +my $name13 = + { firstname => 'Jean~Charles', + firstname_i => 'J.~C.', + firstname_it => 'JC', + lastname => 'Poussin Lecoq', + lastname_i => 'P.', + lastname_it => 'P', + prefix => undef, + prefix_i => undef, + prefix_it => undef, + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 0, lastname => 1, prefix => undef, suffix => undef }, + namestring => 'Poussin Lecoq, Jean Charles', + nameinitstring => '{Poussin_Lecoq}_JC' } ; +my $name14 = + { firstname => 'J.~C.~G.', + firstname_i => 'J.~C.~G.', + firstname_it => 'JCG', + lastname => 'Vallée~Poussin', + lastname_i => 'V.~P.', + lastname_it => 'VP', + prefix => 'de~la', + prefix_i => 'd.~l.', + prefix_it => 'dl', + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 0, lastname => 0, prefix => 0, suffix => undef }, + namestring => 'de la Vallée Poussin, J. C. G.', + nameinitstring => 'dl_Vallée_Poussin_JCG' } ; + +my $name15 = + { firstname => 'E.~S.', + firstname_i => 'E.~S.', + firstname_it => 'ES', + lastname => 'El-{M}allah', + lastname_i => 'M.', + lastname_it => 'M', + prefix => undef, + prefix_i => undef, + prefix_it => undef, + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 0, lastname => 0, prefix => undef, suffix => undef }, + namestring => 'El-{M}allah, E. S.', + nameinitstring => 'El-{M}allah_ES' } ; + + +my $name16 = + { firstname => 'E.~S.', + firstname_i => 'E.~S.', + firstname_it => 'ES', + lastname => '{K}ent-{B}oswell', + lastname_i => 'K.-B.', + lastname_it => 'KB', + prefix => undef, + prefix_i => undef, + prefix_it => undef, + suffix => undef, + suffix_i => undef, + suffix_it => undef, + strip => { firstname => 0, lastname => 0, prefix => undef, suffix => undef }, + namestring => '{K}ent-{B}oswell, E. S.', + nameinitstring => '{K}ent-{B}oswell_ES' } ; + + +my $l1 = q| \entry{L1}{book}{} + \name{labelname}{1}{% + {{Adler}{A.}{Alfred}{A.}{}{}{}{}}% + } + \name{author}{1}{% + {{Adler}{A.}{Alfred}{A.}{}{}{}{}}% + } + \strng{namehash}{AA1} + \strng{fullhash}{AA1} + \field{sortinit}{A} + \endentry + +|; + +my $l2 = q| \entry{L2}{book}{} + \name{labelname}{1}{% + {{Bull}{B.}{Bertie~B.}{B.~B.}{}{}{}{}}% + } + \name{author}{1}{% + {{Bull}{B.}{Bertie~B.}{B.~B.}{}{}{}{}}% + } + \strng{namehash}{BBB1} + \strng{fullhash}{BBB1} + \field{sortinit}{B} + \endentry + +|; + +my $l3 = q| \entry{L3}{book}{} + \name{labelname}{1}{% + {{Crop}{C.}{C.~Z.}{C.~Z.}{}{}{}{}}% + } + \name{author}{1}{% + {{Crop}{C.}{C.~Z.}{C.~Z.}{}{}{}{}}% + } + \strng{namehash}{CCZ1} + \strng{fullhash}{CCZ1} + \field{sortinit}{C} + \endentry + +|; + +my $l4 = q| \entry{L4}{book}{} + \name{labelname}{1}{% + {{Decket}{D.}{Derek~D}{D.~D.}{}{}{}{}}% + } + \name{author}{1}{% + {{Decket}{D.}{Derek~D}{D.~D.}{}{}{}{}}% + } + \strng{namehash}{DDD1} + \strng{fullhash}{DDD1} + \field{sortinit}{D} + \endentry + +|; + +my $l5 = q| \entry{L5}{book}{} + \name{labelname}{1}{% + {{Eel}{E.}{Egbert}{E.}{von}{v.}{}{}}% + } + \name{author}{1}{% + {{Eel}{E.}{Egbert}{E.}{von}{v.}{}{}}% + } + \strng{namehash}{vEE1} + \strng{fullhash}{vEE1} + \field{sortinit}{v} + \endentry + +|; + +my $l6 = q| \entry{L6}{book}{} + \name{labelname}{1}{% + {{Frome}{F.}{Francis}{F.}{van~der~valt}{v.~d.~v.}{}{}}% + } + \name{author}{1}{% + {{Frome}{F.}{Francis}{F.}{van~der~valt}{v.~d.~v.}{}{}}% + } + \strng{namehash}{vdvFF1} + \strng{fullhash}{vdvFF1} + \field{sortinit}{v} + \endentry + +|; + +my $l7 = q| \entry{L7}{book}{} + \name{labelname}{1}{% + {{Gloom}{G.}{Gregory~R.}{G.~R.}{van}{v.}{}{}}% + } + \name{author}{1}{% + {{Gloom}{G.}{Gregory~R.}{G.~R.}{van}{v.}{}{}}% + } + \strng{namehash}{vGGR1} + \strng{fullhash}{vGGR1} + \field{sortinit}{v} + \endentry + +|; + +my $l8 = q| \entry{L8}{book}{} + \name{labelname}{1}{% + {{Henkel}{H.}{Henry~F.}{H.~F.}{van}{v.}{}{}}% + } + \name{author}{1}{% + {{Henkel}{H.}{Henry~F.}{H.~F.}{van}{v.}{}{}}% + } + \strng{namehash}{vHHF1} + \strng{fullhash}{vHHF1} + \field{sortinit}{v} + \endentry + +|; + +my $l9 = q| \entry{L9}{book}{} + \name{labelname}{1}{% + {{{Iliad Ipswich}}{I.}{Ian}{I.}{}{}{}{}}% + } + \name{author}{1}{% + {{{Iliad Ipswich}}{I.}{Ian}{I.}{}{}{}{}}% + } + \strng{namehash}{II1} + \strng{fullhash}{II1} + \field{sortinit}{I} + \endentry + +|; + + +my $l10 = q| \entry{L10}{book}{} + \name{labelname}{1}{% + {{Jolly}{J.}{James}{J.}{}{}{III}{I.}}% + } + \name{author}{1}{% + {{Jolly}{J.}{James}{J.}{}{}{III}{I.}}% + } + \strng{namehash}{JIJ1} + \strng{fullhash}{JIJ1} + \field{sortinit}{J} + \endentry + +|; + + +my $l10a = q| \entry{L10a}{book}{} + \name{labelname}{1}{% + {{Pimentel}{P.}{Joseph~J.}{J.~J.}{}{}{Jr.}{J.}}% + } + \name{author}{1}{% + {{Pimentel}{P.}{Joseph~J.}{J.~J.}{}{}{Jr.}{J.}}% + } + \strng{namehash}{PJJJ1} + \strng{fullhash}{PJJJ1} + \field{sortinit}{P} + \endentry + +|; + + +my $l11 = q| \entry{L11}{book}{} + \name{labelname}{1}{% + {{Kluster}{K.}{Kevin}{K.}{van}{v.}{Jr.}{J.}}% + } + \name{author}{1}{% + {{Kluster}{K.}{Kevin}{K.}{van}{v.}{Jr.}{J.}}% + } + \strng{namehash}{vKJK1} + \strng{fullhash}{vKJK1} + \field{sortinit}{v} + \endentry + +|; + +my $l12 = q| \entry{L12}{book}{} + \name{labelname}{1}{% + {{Vall{\'e}e~Poussin}{V.~P.}{Charles Louis Xavier~Joseph}{C.~L. X.~J.}{de~la}{d.~l.}{}{}}% + } + \name{author}{1}{% + {{Vall{\'e}e~Poussin}{V.~P.}{Charles Louis Xavier~Joseph}{C.~L. X.~J.}{de~la}{d.~l.}{}{}}% + } + \strng{namehash}{dlVPCLXJ1} + \strng{fullhash}{dlVPCLXJ1} + \field{sortinit}{d} + \endentry + +|; + +my $l13 = q| \entry{L13}{book}{} + \name{labelname}{1}{% + {{Van de~Graaff}{V.~d.~G.}{R.~J.}{R.~J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Van de~Graaff}{V.~d.~G.}{R.~J.}{R.~J.}{}{}{}{}}% + } + \strng{namehash}{VdGRJ1} + \strng{fullhash}{VdGRJ1} + \field{sortinit}{V} + \endentry + +|; + +my $l14 = q| \entry{L14}{book}{} + \name{labelname}{1}{% + {{St~John-Mollusc}{S.~J.-M.}{Oliver}{O.}{}{}{}{}}% + } + \name{author}{1}{% + {{St~John-Mollusc}{S.~J.-M.}{Oliver}{O.}{}{}{}{}}% + } + \strng{namehash}{SJMO1} + \strng{fullhash}{SJMO1} + \field{sortinit}{S} + \endentry + +|; + +my $l15 = q| \entry{L15}{book}{} + \name{labelname}{1}{% + {{Gompel}{G.}{Roger~P.{\,}G.}{R.~P.}{van}{v.}{}{}}% + } + \name{author}{1}{% + {{Gompel}{G.}{Roger~P.{\,}G.}{R.~P.}{van}{v.}{}{}}% + } + \strng{namehash}{vGRP1} + \strng{fullhash}{vGRP1} + \field{sortinit}{v} + \endentry + +|; + +my $l16 = q| \entry{L16}{book}{} + \name{labelname}{1}{% + {{Gompel}{G.}{Roger~{P.\,G.}}{R.~P.}{van}{v.}{}{}}% + } + \name{author}{1}{% + {{Gompel}{G.}{Roger~{P.\,G.}}{R.~P.}{van}{v.}{}{}}% + } + \strng{namehash}{vGRP1} + \strng{fullhash}{vGRP1} + \field{sortinit}{v} + \endentry + +|; + +my $l17 = q| \entry{L17}{book}{} + \name{labelname}{1}{% + {{Lovecraft}{L.}{Bill~H.{\,}P.}{B.~H.}{}{}{}{}}% + } + \name{author}{1}{% + {{Lovecraft}{L.}{Bill~H.{\,}P.}{B.~H.}{}{}{}{}}% + } + \strng{namehash}{LBH1} + \strng{fullhash}{LBH1} + \field{sortinit}{L} + \endentry + +|; + +my $l18 = q| \entry{L18}{book}{} + \name{labelname}{1}{% + {{Lovecraft}{L.}{Bill~{H.\,P.}}{B.~H.}{}{}{}{}}% + } + \name{author}{1}{% + {{Lovecraft}{L.}{Bill~{H.\,P.}}{B.~H.}{}{}{}{}}% + } + \strng{namehash}{LBH1} + \strng{fullhash}{LBH1} + \field{sortinit}{L} + \endentry + +|; + +my $l19 = q| \entry{L19}{book}{} + \name{labelname}{1}{% + {{Mustermann}{M.}{Klaus-Peter}{K.-P.}{}{}{}{}}% + } + \name{author}{1}{% + {{Mustermann}{M.}{Klaus-Peter}{K.-P.}{}{}{}{}}% + } + \strng{namehash}{MKP1} + \strng{fullhash}{MKP1} + \field{sortinit}{M} + \endentry + +|; + +my $l20 = q| \entry{L20}{book}{} + \name{labelname}{1}{% + {{Ford}{F.}{{John Henry}}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Ford}{F.}{{John Henry}}{J.}{}{}{}{}}% + } + \strng{namehash}{FJ1} + \strng{fullhash}{FJ1} + \field{sortinit}{F} + \endentry + +|; + +my $l21 = q| \entry{L21}{book}{} + \name{labelname}{1}{% + {{Smith}{S.}{{\v S}omeone}{{\v S}.}{}{}{}{}}% + } + \name{author}{1}{% + {{Smith}{S.}{{\v S}omeone}{{\v S}.}{}{}{}{}}% + } + \strng{namehash}{SS1} + \strng{fullhash}{SS1} + \field{sortinit}{S} + \endentry + +|; + +my $l22 = q| \entry{L22}{book}{} + \name{labelname}{1}{% + {{{\v S}mith}{{\v S}.}{Someone}{S.}{}{}{}{}}% + } + \name{author}{1}{% + {{{\v S}mith}{{\v S}.}{Someone}{S.}{}{}{}{}}% + } + \strng{namehash}{SS1} + \strng{fullhash}{SS1} + \field{sortinit}{\v{S}} + \endentry + +|; + + +my $l23 = q| \entry{L23}{book}{} + \name{labelname}{1}{% + {{Smith}{S.}{Å omeone}{Å .}{}{}{}{}}% + } + \name{author}{1}{% + {{Smith}{S.}{Å omeone}{Å .}{}{}{}{}}% + } + \strng{namehash}{SÅ 1} + \strng{fullhash}{SÅ 1} + \field{sortinit}{S} + \endentry + +|; + +my $l24 = q| \entry{L24}{book}{} + \name{labelname}{1}{% + {{Å mith}{Å .}{Someone}{S.}{}{}{}{}}% + } + \name{author}{1}{% + {{Å mith}{Å .}{Someone}{S.}{}{}{}{}}% + } + \strng{namehash}{Å S1} + \strng{fullhash}{Å S1} + \field{sortinit}{Å } + \endentry + +|; + +my $l25 = q| \entry{L25}{book}{} + \name{labelname}{1}{% + {{{American Psychological Association, Task Force on the Sexualization of Girls}}{A.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{{American Psychological Association, Task Force on the Sexualization of Girls}}{A.}{}{}{}{}{}{}}% + } + \strng{namehash}{A1} + \strng{fullhash}{A1} + \field{sortinit}{A} + \endentry + +|; + +my $l26 = q| \entry{L26}{book}{} + \name{labelname}{1}{% + {{{Sci-Art Publishers}}{S.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{{Sci-Art Publishers}}{S.}{}{}{}{}{}{}}% + } + \strng{namehash}{S1} + \strng{fullhash}{S1} + \field{sortinit}{S} + \endentry + +|; + +# Malformed anyway but a decent test +my $l28 = q| \entry{L28}{book}{} + \strng{namehash}{1} + \strng{fullhash}{1} + \field{sortinit}{0} + \warn{\item Name "Deux et al.,, O." is malformed (consecutive commas): skipping name} + \endentry + +|; + + +my $l29 = q| \entry{L29}{book}{} + \name{labelname}{1}{% + {{{U.S. Department of Health and Human Services, National Institute of Mental Health, National Heart, Lung and Blood Institute}}{U.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{{U.S. Department of Health and Human Services, National Institute of Mental Health, National Heart, Lung and Blood Institute}}{U.}{}{}{}{}{}{}}% + } + \strng{namehash}{U1} + \strng{fullhash}{U1} + \field{sortinit}{U} + \endentry + +|; + + +is_deeply(Biber::Input::file::bibtex::parsename('John Doe', 'author'), $name1, 'parsename 1'); +is_deeply(Biber::Input::file::bibtex::parsename('Doe, Jr, John', 'author'), $name2, 'parsename 2'); +is_deeply(Biber::Input::file::bibtex::parsename('von Berlichingen zu Hornberg, Johann Gottfried', 'author', {useprefix => 1}), $name3, 'parsename 3') ; +is_deeply(Biber::Input::file::bibtex::parsename('von Berlichingen zu Hornberg, Johann Gottfried', 'author', {useprefix => 0}), $name4, 'parsename 4') ; +is_deeply(Biber::Input::file::bibtex::parsename('{Robert and Sons, Inc.}', 'author'), $name5, 'parsename 5') ; +is_deeply(Biber::Input::file::bibtex::parsename('al-á¹¢Äliḥ, Ê¿AbdallÄh', 'author'), $name6, 'parsename 6') ; +is_deeply(Biber::Input::file::bibtex::parsename('Jean Charles Gabriel de la Vallée Poussin', 'author', {useprefix => 1}), $name7, 'parsename 7'); +is_deeply(Biber::Input::file::bibtex::parsename('{Jean Charles Gabriel} de la Vallée Poussin', 'author'), $name8, 'parsename 8'); +is_deeply(Biber::Input::file::bibtex::parsename('Jean Charles Gabriel {de la} Vallée Poussin', 'author'), $name9, 'parsename 9'); +is_deeply(Biber::Input::file::bibtex::parsename('Jean Charles Gabriel de la {Vallée Poussin}', 'author'), $name10, 'parsename 10'); +is_deeply(Biber::Input::file::bibtex::parsename('{Jean Charles Gabriel} de la {Vallée Poussin}', 'author'), $name11, 'parsename 11'); +is_deeply(Biber::Input::file::bibtex::parsename('Jean Charles Gabriel Poussin', 'author'), $name12, 'parsename 12'); +is_deeply(Biber::Input::file::bibtex::parsename('Jean Charles {Poussin Lecoq}', 'author'), $name13, 'parsename 13'); +is_deeply(Biber::Input::file::bibtex::parsename('J. C. G. de la Vallée Poussin', 'author', {useprefix => 1}), $name14, 'parsename 14'); +is_deeply(Biber::Input::file::bibtex::parsename('E. S. El-{M}allah', 'author'), $name15, 'parsename 15'); +is_deeply(Biber::Input::file::bibtex::parsename('E. S. {K}ent-{B}oswell', 'author'), $name16, 'parsename 16'); + +is( $out->get_output_entry($main,'l1'), $l1, 'First Last') ; +is( $out->get_output_entry($main,'l2'), $l2, 'First Initial. Last') ; +is( $out->get_output_entry($main,'l3'), $l3, 'Initial. Initial. Last') ; +is( $out->get_output_entry($main,'l4'), $l4, 'First Initial Last') ; +is( $out->get_output_entry($main,'l5'), $l5, 'First prefix Last') ; +is( $out->get_output_entry($main,'l6'), $l6, 'First prefix prefix Last') ; +is( $out->get_output_entry($main,'l7'), $l7, 'First Initial. prefix Last') ; +is( $out->get_output_entry($main,'l8'), $l8, 'First Initial prefix Last') ; +is( $out->get_output_entry($main,'l9'), $l9, 'First {Last Last}') ; +is( $out->get_output_entry($main,'l10'), $l10, 'Last, Suffix, First') ; +is( $out->get_output_entry($main,'l10a'), $l10a, 'Last, Suffix, First Initial.') ; +is( $out->get_output_entry($main,'l11'), $l11, 'prefix Last, Suffix, First') ; +is( $out->get_output_entry($main,'l13'), $l13, 'Last Last Last, Initial. Initial.'); +is( $out->get_output_entry($main,'l14'), $l14, 'Last Last-Last, First'); +is( $out->get_output_entry($main,'l15'), $l15, 'First F.{\,}F. Last'); +is( $out->get_output_entry($main,'l16'), $l16, 'First {F.\,F.} Last'); +is( $out->get_output_entry($main,'l17'), $l17, 'Last, First {F.\,F.}'); +is( $out->get_output_entry($main,'l18'), $l18, 'Last, First F.{\,}F.'); +is( $out->get_output_entry($main,'l19'), $l19, 'Firstname with hyphen'); +is( $out->get_output_entry($main,'l20'), $l20, 'Protected dual first name'); +is( $out->get_output_entry($main,'l23'), $l23, 'Unicode firstname'); +is( $out->get_output_entry($main,'l24'), $l24, 'Unicode lastname'); +is( $out->get_output_entry($main,'l25'), $l25, 'Single string name'); +is( $out->get_output_entry($main,'l26'), $l26, 'Hyphen at brace level <> 0'); +is($section->bibentry('l27')->get_field('author')->count_elements, 1, 'Bad name with 3 commas'); +is( $out->get_output_entry($main,'l28'), $l28, 'Bad name with consecutive commas'); +is( $out->get_output_entry($main,'l29'), $l29, 'Escaped name with 3 commas'); + +# A few tests depend set to non UTF-8 output +# Have to use a new biber object when trying to change encoding as this isn't +# dealt with in ->prepare +$biber->parse_ctrlfile('names.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Biber options +Biber::Config->setoption('bblencoding', 'latin1'); + +# Now generate the information +$biber->prepare; +$out = $biber->get_output_obj; +$section = $biber->sections->get_section(0); +$main = $section->get_list('MAIN'); +$bibentries = $section->bibentries; + +is($bibentries->entry('l21')->get_field($bibentries->entry('l21')->get_field('labelnamename'))->nth_element(1)->get_firstname_it, '{\v S}', 'Terseinitials 1'); +is( $out->get_output_entry($main,'l12'), $l12, 'First First First First prefix prefix Last Last') ; +is( $out->get_output_entry($main,'l21'), $l21, 'LaTeX encoded unicode firstname'); +is( $out->get_output_entry($main,'l22'), $l22, 'LaTeX encoded unicode lastname'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/01-utils.t b/Master/texmf-dist/source/bibtex/biber/t/01-utils.t new file mode 100755 index 00000000000..4ab07225158 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/01-utils.t @@ -0,0 +1,83 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8' ; + +use Test::More tests => 19; +use Biber; +use Biber::Entry::Name; +use Biber::Entry::Names; +use Biber::Utils; +use Biber::LaTeX::Recode; +use Log::Log4perl qw(:easy); +use IPC::Cmd qw( can_run run ); +use Cwd; +my $cwd = getcwd; + +Log::Log4perl->easy_init($ERROR); +my $biber = Biber->new(noconf => 1); + +# File locating +# Using File::Spec->canonpath() to normalise path separators so these tests work +# on Windows/non-Windows +# Absolute path +is(File::Spec->canonpath(locate_biber_file("$cwd/t/tdata/general1.bcf")), File::Spec->canonpath("$cwd/t/tdata/general1.bcf"), 'File location - 1'); +# Relative path +is(File::Spec->canonpath(locate_biber_file('t/tdata/general1.bcf')), File::Spec->canonpath('t/tdata/general1.bcf'), 'File location - 2'); +# Same place as control file +Biber::Config->set_ctrlfile_path('t/tdata/general1.bcf'); +is(File::Spec->canonpath(locate_biber_file('t/tdata/examples.bib')), File::Spec->canonpath('t/tdata/examples.bib'), 'File location - 3'); + +SKIP: { + skip "No LaTeX installation", 1 unless can_run('kpsewhich'); + # using kpsewhich + like(File::Spec->canonpath(locate_biber_file('biblatex-examples.bib')), qr|[/\\]bibtex[/\\]bib[/\\]biblatex[/\\]biblatex-examples\.bib\z|, 'File location - 4'); + } + +# In output_directory +Biber::Config->setoption('output_directory', 't/tdata'); +is(File::Spec->canonpath(locate_biber_file('general1.bcf')), File::Spec->canonpath("t/tdata/general1.bcf"), 'File location - 5'); + +# String normalising +is( normalise_string('"a, b–c: d" ', 1), 'a bc d', 'normalise_string' ); + +Biber::Config->setoption('bblencoding', 'latin1'); +is( normalise_string_underscore('\c Se\x{c}\"ok-\foo{a}, N\`i\~no + $§+ :-) ', 1), 'Secoka_Nino', 'normalise_string_underscore 1' ); + +Biber::Config->setoption('bblencoding', 'UTF-8'); +is( normalise_string_underscore('\c Se\x{c}\"ok-\foo{a}, N\`i\~no + $§+ :-) ', 0), 'Åžecöka_Nìño', 'normalise_string_underscore 2' ); + +is( normalise_string_underscore('{Foo de Bar, Graf Ludwig}', 1), 'Foo_de_Bar_Graf_Ludwig', 'normalise_string_underscore 2'); + +# LaTeX decoding +is( latex_decode('Mu\d{h}ammad ibn M\=us\=a al-Khw\=arizm\={\i}'), 'Muḥammad ibn MÅ«sÄ al-KhwÄrizmÄ«', 'latex decode 1'); +is( latex_decode('\alpha'), '\alpha', 'latex decode 2'); # no greek decoding by default +is( latex_decode('\alpha', scheme => 'full'), 'α', 'Latex decode 3'); # greek decoding with "full" + +# LaTeX encoding +is( latex_encode('Muḥammad ibn MÅ«sÄ al-KhwÄrizmÄ«'), 'Mu\d{h}ammad ibn M\={u}s\={a} al-Khw\={a}rizm\={\i}', 'latex encode 1'); +is( latex_encode('α'), 'α', 'latex encode 2'); # no greek encoding by default +is( latex_encode('α', scheme => 'full'), '{$\alpha$}', 'latex encode 3'); # greek encoding with "full" + +my $names = bless [ + (bless { namestring => '\"Askdjksdj, Bsadk Cklsjd', nameinitstring => '\"Askdjksdj, BC' }, 'Biber::Entry::Name'), + (bless { namestring => 'von Ãœsakdjskd, Vsajd W\`asdjh', nameinitstring => 'v Ãœsakdjskd, VW'}, 'Biber::Entry::Name'), + (bless { namestring => 'Xaskldjdd, Yajs\x{d}ajks~Z.', nameinitstring => 'Xaskldjdd, YZ'}, 'Biber::Entry::Name'), + (bless { namestring => 'Maksjdakj, Nsjahdajsdhj', nameinitstring => 'Maksjdakj, N' }, 'Biber::Entry::Name') +], 'Biber::Entry::Names'; + +is( makenameid($names), 'Äskdjksdj_Bsadk_Cklsjd_von_Ãœsakdjskd_Vsajd_Wà sdjh_Xaskldjdd_Yajsdajks_Z_Maksjdakj_Nsjahdajsdhj', 'makenameid' ); + +my @arrayA = qw/ a b c d e f c /; +my @arrayB = qw/ c e /; +my @AminusB = reduce_array(\@arrayA, \@arrayB); +my @AminusBexpected = qw/ a b d f /; + +is_deeply(\@AminusB, \@AminusBexpected, 'reduce_array') ; + +is(remove_outer('{Some string}'), 'Some string', 'remove_outer') ; + +is( normalise_string_lite('Ä.~{\c{C}}.~{\c S}.'), 'ÄCS', 'normalise_string_lite' ) ; + diff --git a/Master/texmf-dist/source/bibtex/biber/t/03-basic-misc.t b/Master/texmf-dist/source/bibtex/biber/t/03-basic-misc.t new file mode 100755 index 00000000000..e33e8951945 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/03-basic-misc.t @@ -0,0 +1,241 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 15; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile("general2.bcf"); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); + +# Now generate the information +$biber->prepare; +my $out = $biber->get_output_obj; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my @keys = sort $section->get_citekeys; +my @citedkeys = sort qw{ murray t1 kant:ku kant:kpv t2 shore}; + +my @allkeys = sort qw{ stdmodel aristotle:poetics vazques-de-parga t1 +gonzalez averroes/bland laufenberg westfahl:frontier knuth:ct:a kastenholz +averroes/hannes iliad luzzatto malinowski sorace knuth:ct:d britannica +nietzsche:historie stdmodel:weinberg knuth:ct:b baez/article knuth:ct:e itzhaki +jaffe padhye cicero stdmodel:salam reese averroes/hercz murray shore +aristotle:physics massa aristotle:anima gillies set kowalik gaonkar springer +geer hammond wormanx westfahl:space worman set:herrmann augustine gerhardt +piccato hasan hyman stdmodel:glashow stdmodel:ps_sc kant:kpv companion almendro +sigfridsson ctan baez/online aristotle:rhetoric pimentel00 pines knuth:ct:c moraux cms +angenendt angenendtsk loh markey cotton vangennepx kant:ku nussbaum nietzsche:ksa1 +vangennep knuth:ct angenendtsa spiegelberg bertram brandt set:aksin chiu nietzsche:ksa +set:yoon maron coleridge tvonb t2 } ; + +is_deeply( \@keys, \@citedkeys, 'citekeys 1') ; +is_deeply( [ $section->get_list('SHORTHANDS')->get_keys ], [ 'kant:kpv', 'kant:ku' ], 'shorthands' ) ; + +# reset some options and re-generate information + +# Have to do a citekey deletion as we are not re-reading the .bcf which would do it for us +# Otherwise, we have citekeys and allkeys which confuses fetch_data() +$section->del_citekeys; +$section->allkeys; +$biber->prepare; +$section = $biber->sections->get_section(0); +my $bibentries = $section->bibentries; + +$out = $biber->get_output_obj; + +@keys = sort $section->get_citekeys; + +is_deeply( \@keys, \@allkeys, 'citekeys 2') ; + +my $murray1 = q| \entry{murray}{article}{} + \name{labelname}{14}{% + {{Hostetler}{H}{Michael~J.}{MJ}{}{}{}{}}% + {{Wingate}{W}{Julia~E.}{JE}{}{}{}{}}% + {{Zhong}{Z}{Chuan-Jian}{CJ}{}{}{}{}}% + {{Harris}{H}{Jay~E.}{JE}{}{}{}{}}% + {{Vachet}{V}{Richard~W.}{RW}{}{}{}{}}% + {{Clark}{C}{Michael~R.}{MR}{}{}{}{}}% + {{Londono}{L}{J.~David}{JD}{}{}{}{}}% + {{Green}{G}{Stephen~J.}{SJ}{}{}{}{}}% + {{Stokes}{S}{Jennifer~J.}{JJ}{}{}{}{}}% + {{Wignall}{W}{George~D.}{GD}{}{}{}{}}% + {{Glish}{G}{Gary~L.}{GL}{}{}{}{}}% + {{Porter}{P}{Marc~D.}{MD}{}{}{}{}}% + {{Evans}{E}{Neal~D.}{ND}{}{}{}{}}% + {{Murray}{M}{Royce~W.}{RW}{}{}{}{}}% + } + \name{author}{14}{% + {{Hostetler}{H}{Michael~J.}{MJ}{}{}{}{}}% + {{Wingate}{W}{Julia~E.}{JE}{}{}{}{}}% + {{Zhong}{Z}{Chuan-Jian}{CJ}{}{}{}{}}% + {{Harris}{H}{Jay~E.}{JE}{}{}{}{}}% + {{Vachet}{V}{Richard~W.}{RW}{}{}{}{}}% + {{Clark}{C}{Michael~R.}{MR}{}{}{}{}}% + {{Londono}{L}{J.~David}{JD}{}{}{}{}}% + {{Green}{G}{Stephen~J.}{SJ}{}{}{}{}}% + {{Stokes}{S}{Jennifer~J.}{JJ}{}{}{}{}}% + {{Wignall}{W}{George~D.}{GD}{}{}{}{}}% + {{Glish}{G}{Gary~L.}{GL}{}{}{}{}}% + {{Porter}{P}{Marc~D.}{MD}{}{}{}{}}% + {{Evans}{E}{Neal~D.}{ND}{}{}{}{}}% + {{Murray}{M}{Royce~W.}{RW}{}{}{}{}}% + } + \strng{namehash}{HMJ+1} + \strng{fullhash}{HMJWJEZCJHJEVRWCMRLJDGSJSJJWGDGGLPMDENDMRW1} + \field{labelalpha}{Hos\textbf{+}98} + \field{sortinit}{H} + \count{uniquename}{0} + \true{singletitle} + \field{annotation}{An \texttt{article} entry with \arabic{author} authors. By default, long author and editor lists are automatically truncated. This is configurable} + \field{hyphenation}{american} + \field{indextitle}{Alkanethiolate gold cluster molecules} + \field{journaltitle}{Langmuir} + \field{number}{1} + \field{shorttitle}{Alkanethiolate gold cluster molecules} + \field{subtitle}{Core and monolayer properties as a function of core size} + \field{title}{Alkanethiolate gold cluster molecules with core diameters from 1.5 to 5.2~nm} + \field{volume}{14} + \field{year}{1998} + \field{pages}{17\bibrangedash 30} + \endentry + +|; + +my $murray2 = q| \entry{murray}{article}{} + \name{labelname}{14}{% + {{Hostetler}{H}{Michael~J.}{MJ}{}{}{}{}}% + {{Wingate}{W}{Julia~E.}{JE}{}{}{}{}}% + {{Zhong}{Z}{Chuan-Jian}{CJ}{}{}{}{}}% + {{Harris}{H}{Jay~E.}{JE}{}{}{}{}}% + {{Vachet}{V}{Richard~W.}{RW}{}{}{}{}}% + {{Clark}{C}{Michael~R.}{MR}{}{}{}{}}% + {{Londono}{L}{J.~David}{JD}{}{}{}{}}% + {{Green}{G}{Stephen~J.}{SJ}{}{}{}{}}% + {{Stokes}{S}{Jennifer~J.}{JJ}{}{}{}{}}% + {{Wignall}{W}{George~D.}{GD}{}{}{}{}}% + {{Glish}{G}{Gary~L.}{GL}{}{}{}{}}% + {{Porter}{P}{Marc~D.}{MD}{}{}{}{}}% + {{Evans}{E}{Neal~D.}{ND}{}{}{}{}}% + {{Murray}{M}{Royce~W.}{RW}{}{}{}{}}% + } + \name{author}{14}{% + {{Hostetler}{H}{Michael~J.}{MJ}{}{}{}{}}% + {{Wingate}{W}{Julia~E.}{JE}{}{}{}{}}% + {{Zhong}{Z}{Chuan-Jian}{CJ}{}{}{}{}}% + {{Harris}{H}{Jay~E.}{JE}{}{}{}{}}% + {{Vachet}{V}{Richard~W.}{RW}{}{}{}{}}% + {{Clark}{C}{Michael~R.}{MR}{}{}{}{}}% + {{Londono}{L}{J.~David}{JD}{}{}{}{}}% + {{Green}{G}{Stephen~J.}{SJ}{}{}{}{}}% + {{Stokes}{S}{Jennifer~J.}{JJ}{}{}{}{}}% + {{Wignall}{W}{George~D.}{GD}{}{}{}{}}% + {{Glish}{G}{Gary~L.}{GL}{}{}{}{}}% + {{Porter}{P}{Marc~D.}{MD}{}{}{}{}}% + {{Evans}{E}{Neal~D.}{ND}{}{}{}{}}% + {{Murray}{M}{Royce~W.}{RW}{}{}{}{}}% + } + \strng{namehash}{HMJ+1} + \strng{fullhash}{HMJWJEZCJHJEVRWCMRLJDGSJSJJWGDGGLPMDENDMRW1} + \field{labelalpha}{Hos98} + \field{sortinit}{H} + \count{uniquename}{0} + \true{singletitle} + \field{annotation}{An \texttt{article} entry with \arabic{author} authors. By default, long author and editor lists are automatically truncated. This is configurable} + \field{hyphenation}{american} + \field{indextitle}{Alkanethiolate gold cluster molecules} + \field{journaltitle}{Langmuir} + \field{number}{1} + \field{shorttitle}{Alkanethiolate gold cluster molecules} + \field{subtitle}{Core and monolayer properties as a function of core size} + \field{title}{Alkanethiolate gold cluster molecules with core diameters from 1.5 to 5.2~nm} + \field{volume}{14} + \field{year}{1998} + \field{pages}{17\bibrangedash 30} + \endentry + +|; + +my $t1 = q| \entry{t1}{misc}{} + \name{labelname}{1}{% + {{Brown}{B}{Bill}{B}{}{}{}{}}% + } + \name{author}{1}{% + {{Brown}{B}{Bill}{B}{}{}{}{}}% + } + \strng{namehash}{BB1} + \strng{fullhash}{BB1} + \field{labelalpha}{Bro92} + \field{sortinit}{B} + \count{uniquename}{0} + \field{title}{Normal things {$^{3}$}} + \field{year}{1992} + \field{pages}{100\bibrangedash} + \keyw{primary, something,somethingelse} + \endentry + +|; + +my $t2 = q| \entry{t2}{misc}{} + \name{labelname}{1}{% + {{Brown}{B}{Bill}{B}{}{}{}{}}% + } + \name{author}{1}{% + {{Brown}{B}{Bill}{B}{}{}{}{}}% + } + \strng{namehash}{BB1} + \strng{fullhash}{BB1} + \field{labelalpha}{Bro94} + \field{sortinit}{B} + \count{uniquename}{0} + \field{title}{Signs of W$\frac{o}{a}$nder} + \field{year}{1994} + \field{pages}{100} + \endentry + +|; + + +my $Worman_N = [ 'WN1', 'WN2' ] ; +my $Gennep = [ 'vGA1', 'vGJ1' ] ; + +is( $out->get_output_entry($main,'t1'), $t1, 'bbl entry with maths in title 1' ) ; +is( $bibentries->entry('shore')->get_field('month'), '3', 'default bib month macros' ) ; +ok( $bibentries->entry('t1')->has_keyword('primary'), 'Keywords test - 1' ) ; +ok( $bibentries->entry('t1')->has_keyword('something'), 'Keywords test - 2' ) ; +ok( $bibentries->entry('t1')->has_keyword('somethingelse'), 'Keywords test - 3' ) ; +is( $out->get_output_entry($main,'t2'), $t2, 'bbl entry with maths in title 2' ) ; +is_deeply( Biber::Config->_get_uniquename('Worman_N'), $Worman_N, 'uniquename count 1') ; +is_deeply( Biber::Config->_get_uniquename('Gennep'), $Gennep, 'uniquename count 2') ; +is( $out->get_output_entry($main,'murray'), $murray1, 'bbl with > maxnames' ) ; +is( $out->get_output_entry($main,'missing1'), " \\missing{missing1}\n", 'missing citekey 1' ) ; +is( $out->get_output_entry($main,'missing2'), " \\missing{missing2}\n", 'missing citekey 2' ) ; + +Biber::Config->setblxoption('alphaothers', ''); +Biber::Config->setblxoption('sortalphaothers', ''); + +# Have to do a citekey deletion as we are not re-reading the .bcf which would do it for us +# Otherwise, we have citekeys and allkeys which confuses fetch_data() +$section->del_citekeys; +$biber->prepare ; +$section = $biber->sections->get_section(0); +$main = $section->get_list('MAIN'); +$out = $biber->get_output_obj; + +is( $out->get_output_entry($main,'murray'), $murray2, 'bbl with > maxnames, empty alphaothers' ) ; + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/05-extrayear.t b/Master/texmf-dist/source/bibtex/biber/t/05-extrayear.t new file mode 100755 index 00000000000..42aae41de62 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/05-extrayear.t @@ -0,0 +1,55 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 17; + +use Biber; +use Biber::Utils; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('extrayear.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('sortlocale', 'C'); + +# Biblatex options +Biber::Config->setblxoption('labelyear', [ 'year' ]); +Biber::Config->setblxoption('maxnames', 1); + +# Now generate the information +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $bibentries = $section->bibentries; + +is($main->get_extrayeardata('l1'), '1', 'Entry L1 - one name, first in 1995'); +is($main->get_extrayeardata('l2'), '2', 'Entry L2 - one name, second in 1995'); +is($main->get_extrayeardata('l3'), '3', 'Entry L3 - one name, third in 1995'); +is($main->get_extrayeardata('l4'), '1', 'Entry L4 - two names, first in 1995'); +is($main->get_extrayeardata('l5'), '2', 'Entry L5 - two names, second in 1995'); +is($main->get_extrayeardata('l6'), '1', 'Entry L6 - two names, first in 1996'); +is($main->get_extrayeardata('l7'), '2', 'Entry L7 - two names, second in 1996'); +ok(is_undef($main->get_extrayeardata('l8')), 'Entry L8 - one name, only in year'); +ok(is_undef($main->get_extrayeardata('l9')), 'Entry L9 - No name, same year as another with no name'); +ok(is_undef($main->get_extrayeardata('l10')), 'Entry L10 - No name, same year as another with no name'); +is($main->get_extrayeardata('companion1'), '1', 'Entry companion1 - names truncated to same as another entry in same year'); +is($main->get_extrayeardata('companion2'), '2', 'Entry companion2 - names truncated to same as another entry in same year'); +ok(is_undef($main->get_extrayeardata('companion3')), 'Entry companion3 - one name, same year as truncated names'); +ok(is_undef($main->get_extrayeardata('vangennep')), 'Entry vangennep - prefix makes it different'); +ok(is_undef($main->get_extrayeardata('gennep')), 'Entry gennep - different from prefix name'); +ok(is_undef($main->get_extrayeardata('ly1')), 'Date range means no extrayear - 1'); +ok(is_undef($main->get_extrayeardata('ly2')), 'Date range means no extrayear - 2'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/05-labelalpha.t b/Master/texmf-dist/source/bibtex/biber/t/05-labelalpha.t new file mode 100755 index 00000000000..4da1caf7197 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/05-labelalpha.t @@ -0,0 +1,157 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 70; + +use Biber; +use Biber::Utils; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('labelalpha.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('sortlocale', 'C'); + +# Biblatex options +Biber::Config->setblxoption('labelalpha', 1); +Biber::Config->setblxoption('maxnames', 1); +Biber::Config->setblxoption('labelyear', undef); + +# Now generate the information +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $bibentries = $section->bibentries; + +is($bibentries->entry('l1')->get_field('sortlabelalpha'), 'Doe95', 'maxnames=1 minnames=1 entry L1 labelalpha'); +ok(is_undef($main->get_extraalphadata('l1')), 'maxnames=1 minnames=1 entry L1 extraalpha'); +is($bibentries->entry('l2')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L2 labelalpha'); +is($main->get_extraalphadata('l2'), '1', 'maxnames=1 minnames=1 entry L2 extraalpha'); +is($bibentries->entry('l3')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L3 labelalpha'); +is($main->get_extraalphadata('l3'), '2', 'maxnames=1 minnames=1 entry L3 extraalpha'); +is($bibentries->entry('l4')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L4 labelalpha'); +is($main->get_extraalphadata('l4'), '3', 'maxnames=1 minnames=1 entry L4 extraalpha'); +is($bibentries->entry('l5')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L5 labelalpha'); +is($main->get_extraalphadata('l5'), '4', 'maxnames=1 minnames=1 entry L5 extraalpha'); +is($bibentries->entry('l6')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L6 labelalpha'); +is($main->get_extraalphadata('l6'), '5', 'maxnames=1 minnames=1 entry L6 extraalpha'); +is($bibentries->entry('l7')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L7 labelalpha'); +is($main->get_extraalphadata('l7'), '6', 'maxnames=1 minnames=1 entry L7 extraalpha'); +is($bibentries->entry('l8')->get_field('sortlabelalpha'), 'Sha85', 'maxnames=1 minnames=1 entry L8 labelalpha'); +ok(is_undef($main->get_extraalphadata('l8')), 'maxnames=1 minnames=1 entry L8 extraalpha'); +ok(is_undef($main->get_extraalphadata('l9')), 'L9 extraalpha unset due to shorthand'); +ok(is_undef($main->get_extraalphadata('l10')), 'L10 extraalpha unset due to shorthand'); +is($main->get_extraalphadata('knuth:ct'), '1', 'YEAR with range needs label differentiating from individual volumes - 1'); +is($main->get_extraalphadata('knuth:ct:a'), '2', 'YEAR with range needs label differentiating from individual volumes - 2'); +is($main->get_extraalphadata('knuth:ct:b'), '1', 'YEAR with range needs label differentiating from individual volumes - 3'); +is($main->get_extraalphadata('knuth:ct:c'), '2', 'YEAR with range needs label differentiating from individual volumes - 4'); + +# reset options and regenerate information +Biber::Config->setblxoption('maxnames', 2); +Biber::Config->setblxoption('minnames', 1); + +for (my $i=1; $i<9; $i++) { + $bibentries->entry("l$i")->del_field('sortlabelalpha'); + $bibentries->entry("l$i")->del_field('labelalpha'); + $main->set_extraalphadata("l$i",undef); +} + +$biber->prepare; +$section = $biber->sections->get_section(0); +$main = $section->get_list('MAIN'); +$bibentries = $section->bibentries; + +is($bibentries->entry('l1')->get_field('sortlabelalpha'), 'Doe95', 'maxnames=2 minnames=1 entry L1 labelalpha'); +ok(is_undef($main->get_extraalphadata('l1')), 'maxnames=2 minnames=1 entry L1 extraalpha'); +is($bibentries->entry('l2')->get_field('sortlabelalpha'), 'DA95', 'maxnames=2 minnames=1 entry L2 labelalpha'); +is($main->get_extraalphadata('l2'), '1', 'maxnames=2 minnames=1 entry L2 extraalpha'); +is($bibentries->entry('l3')->get_field('sortlabelalpha'), 'DA95', 'maxnames=2 minnames=1 entry L3 labelalpha'); +is($main->get_extraalphadata('l3'), '2', 'maxnames=2 minnames=1 entry L3 extraalpha'); +is($bibentries->entry('l4')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=2 minnames=1 entry L4 labelalpha'); +is($main->get_extraalphadata('l4'), '1', 'maxnames=2 minnames=1 entry L4 extraalpha'); +is($bibentries->entry('l5')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=2 minnames=1 entry L5 labelalpha'); +is($main->get_extraalphadata('l5'), '2', 'maxnames=2 minnames=1 entry L5 extraalpha'); +is($bibentries->entry('l6')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=2 minnames=1 entry L6 labelalpha'); +is($main->get_extraalphadata('l6'), '3', 'maxnames=2 minnames=1 entry L6 extraalpha'); +is($bibentries->entry('l7')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=2 minnames=1 entry L7 labelalpha'); +is($main->get_extraalphadata('l7'), '4', 'maxnames=2 minnames=1 entry L7 extraalpha'); +is($bibentries->entry('l8')->get_field('sortlabelalpha'), 'Sha85', 'maxnames=2 minnames=1 entry L8 labelalpha'); +ok(is_undef($main->get_extraalphadata('l8')), 'maxnames=2 minnames=1 entry L8 extraalpha'); + +# reset options and regenerate information +Biber::Config->setblxoption('maxnames', 2); +Biber::Config->setblxoption('minnames', 2); + +for (my $i=1; $i<9; $i++) { + $bibentries->entry("l$i")->del_field('sortlabelalpha'); + $bibentries->entry("l$i")->del_field('labelalpha'); + $main->set_extraalphadata("l$i", undef); +} + +$biber->prepare; +$section = $biber->sections->get_section(0); +$main = $section->get_list('MAIN'); +$bibentries = $section->bibentries; + +is($bibentries->entry('l1')->get_field('sortlabelalpha'), 'Doe95', 'maxnames=2 minnames=2 entry L1 labelalpha'); +ok(is_undef($main->get_extraalphadata('l1')), 'maxnames=2 minnames=2 entry L1 extraalpha'); +is($bibentries->entry('l2')->get_field('sortlabelalpha'), 'DA95', 'maxnames=2 minnames=2 entry L2 labelalpha'); +is($main->get_extraalphadata('l2'), '1', 'maxnames=2 minnames=2 entry L2 extraalpha'); +is($bibentries->entry('l3')->get_field('sortlabelalpha'), 'DA95', 'maxnames=2 minnames=2 entry L3 labelalpha'); +is($main->get_extraalphadata('l3'), '2', 'maxnames=2 minnames=2 entry L3 extraalpha'); +is($bibentries->entry('l4')->get_field('sortlabelalpha'), 'DA+95', 'maxnames=2 minnames=2 entry L4 labelalpha'); +is($main->get_extraalphadata('l4'), '1', 'maxnames=2 minnames=2 entry L4 extraalpha'); +is($bibentries->entry('l5')->get_field('sortlabelalpha'), 'DA+95', 'maxnames=2 minnames=2 entry L5 labelalpha'); +is($main->get_extraalphadata('l5'), '2', 'maxnames=2 minnames=2 entry L5 extraalpha'); +is($bibentries->entry('l6')->get_field('sortlabelalpha'), 'DS+95', 'maxnames=2 minnames=2 entry L6 labelalpha'); +is($main->get_extraalphadata('l6'), '1', 'maxnames=2 minnames=2 entry L6 extraalpha'); +is($bibentries->entry('l7')->get_field('sortlabelalpha'), 'DS+95', 'maxnames=2 minnames=2 entry L7 labelalpha'); +is($main->get_extraalphadata('l7'), '2', 'maxnames=2 minnames=2 entry L7 extraalpha'); +is($bibentries->entry('l8')->get_field('sortlabelalpha'), 'Sha85', 'maxnames=2 minnames=2 entry L8 labelalpha'); +ok(is_undef($main->get_extraalphadata('l8')), 'maxnames=2 minnames=2 entry L8 extraalpha'); + +# reset options and regenerate information +Biber::Config->setblxoption('maxnames', 3); +Biber::Config->setblxoption('minnames', 1); + +for (my $i=1; $i<9; $i++) { + $bibentries->entry("l$i")->del_field('sortlabelalpha'); + $bibentries->entry("l$i")->del_field('labelalpha'); + $main->set_extraalphadata("l$i", undef); +} + +$biber->prepare; +$section = $biber->sections->get_section(0); +$main = $section->get_list('MAIN'); +$bibentries = $section->bibentries; + +is($bibentries->entry('l1')->get_field('sortlabelalpha'), 'Doe95', 'maxnames=3 minnames=1 entry L1 labelalpha'); +ok(is_undef($main->get_extraalphadata('l1')), 'maxnames=3 minnames=1 entry L1 extraalpha'); +is($bibentries->entry('l2')->get_field('sortlabelalpha'), 'DA95', 'maxnames=3 minnames=1 entry L2 labelalpha'); +is($main->get_extraalphadata('l2'), '1', 'maxnames=3 minnames=1 entry L2 extraalpha'); +is($bibentries->entry('l3')->get_field('sortlabelalpha'), 'DA95', 'maxnames=3 minnames=1 entry L3 labelalpha'); +is($main->get_extraalphadata('l3'), '2', 'maxnames=3 minnames=1 entry L3 extraalpha'); +is($bibentries->entry('l4')->get_field('sortlabelalpha'), 'DAE95', 'maxnames=3 minnames=1 entry L4 labelalpha'); +is($main->get_extraalphadata('l4'), '1', 'maxnames=3 minnames=1 entry L4 extraalpha'); +is($bibentries->entry('l5')->get_field('sortlabelalpha'), 'DAE95', 'maxnames=3 minnames=1 entry L5 labelalpha'); +is($main->get_extraalphadata('l5'), '2', 'maxnames=3 minnames=1 entry L5 extraalpha'); +is($bibentries->entry('l6')->get_field('sortlabelalpha'), 'DSE95', 'maxnames=3 minnames=1 entry L6 labelalpha'); +ok(is_undef($main->get_extraalphadata('l6')), 'maxnames=3 minnames=1 entry L6 extraalpha'); +is($bibentries->entry('l7')->get_field('sortlabelalpha'), 'DSJ95', 'maxnames=3 minnames=1 entry L7 labelalpha'); +ok(is_undef($main->get_extraalphadata('l7')), 'maxnames=3 minnames=1 entry L7 extraalpha'); +is($bibentries->entry('l8')->get_field('sortlabelalpha'), 'Sha85', 'maxnames=3 minnames=1 entry L8 labelalpha'); +ok(is_undef($main->get_extraalphadata('l8')), 'maxnames=3 minnames=1 entry L8 extraalpha'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/05-sorting.t b/Master/texmf-dist/source/bibtex/biber/t/05-sorting.t new file mode 100755 index 00000000000..8378f5f280c --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/05-sorting.t @@ -0,0 +1,1382 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 40; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile("general1.bcf"); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('sortlocale', 'C'); + +my $yearoff1 = 'mm,,Knuth_Donald E,Computers Typesetting,1984,0000'; +my $yearoff2 = 'mm,,Knuth_Donald E,Computers Typesetting,198,0000'; +my $yearoff3 = 'mm,,Knuth_Donald E,Computers Typesetting,1984,0000'; +my $yearoff4 = 'mm,,Knuth_Donald E,Computers Typesetting,984,0000'; +my $yearoff5 = 'mm,,Knuth_Donald E,Computers Typesetting,1984,0000'; +my $yearoff6 = 'mm,,Knuth_Donald E,Computers Typesetting,1984,0000'; +my $yearoff7 = 'mm,,Knuth_Donald E,Computers Typesetting,198,0000'; +my $yearoff8 = 'mm,,Knuth_Donald E,Computers Typesetting,1984,0000'; +my $yearoff9 = 'mm,,Knuth_Donald E,Computers Typesetting,984,0000'; +my $vol1 = 'mm,,Glashow_Sheldon,Partial Symmetries of Weak Interactions,1961,2200'; +my $vol2 = 'mm,,Glashow_Sheldon,Partial Symmetries of Weak Interactions,1961,2200000'; +my $vol3 = 'mm,,Glashow_Sheldon,Partial Symmetries of Weak Interactions,1961,ÄÄÄ22'; +my $nty = 'mm,,Glashow_Sheldon,Partial Symmetries of Weak Interactions,1961,22'; +my $nyt = 'mm,,Glashow_Sheldon,1961,Partial Symmetries of Weak Interactions,22'; +my $nyvt = 'mm,,Glashow_Sheldon,1961,22,Partial Symmetries of Weak Interactions'; +my $anyt_la = 'mm,Gla61,,Glashow_Sheldon,1961,Partial Symmetries of Weak Interactions,0000'; +my $anyt = 'mm,,,Glashow_Sheldon,1961,Partial Symmetries of Weak Interactions,0000'; +my $anyvt_la = 'mm,Gla61,,Glashow_Sheldon,1961,0022,Partial Symmetries of Weak Interactions'; +my $anyvt_la2 = "mm,Hos+98,,Hostetler_Michael J+\x{10FFFD},1998,0014,Alkanethiolate gold cluster molecules with core diameters from 15 to 52 nm"; +my $anyvt_la3 = "mm,HW98,,Hostetler_Michael J+Wingate_Julia E+\x{10FFFD},1998,0014,Alkanethiolate gold cluster molecules with core diameters from 15 to 52 nm"; +my $anyvt_la4 = "mm,HW+98,,Hostetler_Michael J+Wingate_Julia E+\x{10FFFD},1998,0014,Alkanethiolate gold cluster molecules with core diameters from 15 to 52 nm"; +my $anyvt = 'mm,,,Glashow_Sheldon,1961,0022,Partial Symmetries of Weak Interactions'; +my $ynt = 'mm,,1961,Glashow_Sheldon,Partial Symmetries of Weak Interactions'; +my $ydnt = 'mm,,1961,Glashow_Sheldon,Partial Symmetries of Weak Interactions'; +my $debug = 'stdmodel'; +my $sk1 = 'mm,,AATESTKEY,AATESTKEY,AATESTKEY,AATESTKEY'; +my $ps_sc = 'zs,,Partial Symmetries of Weak Interactions,,Partial Symmetries of Weak Interactions,Partial Symmetries of Weak Interactions'; +my $noname = 'mm,,Partial Symmetries of Weak Interactions,Partial Symmetries of Weak Interactions,1961,22'; +my $citeorder = '0000001'; +my $lists1 = 'Marcel Dekker'; +my $lists2 = 'Chichester'; +my $lists3 = "IBM+\x{10FFFD}"; +my $lists4 = "IBM_HP+\x{10FFFD}"; +my $lists5 = 'IBM_HP_Sun_Sony'; +my $dates1 = '1979,01,0200000,1980,04,08,1924,06,07,1924,07,09,1924,0002,05,192,02,03,1979,03,04,79,03,03'; +my $edtypeclass1 = 'redactor,Jaffé_Philipp,Loewenfeld_Samuel+Kaltenbrunner_Ferdinand+Ewald_Paul'; +my $prefix1 = 'mm,,Luzzatto_Moshe Ḥayyim,,,Lashon laRamḥal uvo sheloshah ḥiburim,2000,0000'; +my $diacritic1 = 'mm,,Hasan_AlÄ«,alHasan_Ê¿AlÄ«,Hasan_AlÄ«,Some title,2000,0000'; + +# These have custom presort and also an exclusion on year and title set +my $useprefix1 = 'ww,,von_Bobble_Terrence,,,0000'; +my $useprefix2 = 'ww,,Bobble_Terrence_von,,,0000'; + +Biber::Config->setblxoption('useprefix', 1); + +# regenerate information +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $bibentries = $section->bibentries; +my $main = $section->get_list('MAIN'); + +is($main->get_sortdata('tvonb')->[0], $useprefix1, 'von with type-specific presort, exclusions and useprefix=true' ); + +Biber::Config->setblxoption('useprefix', 0); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('tvonb')->[0], $useprefix2, 'von with type-specific presort, exclusions and useprefix=false' ); + +my $S; + +# Testing nosort +$S = [ + [ + { + }, + { + 'presort' => {}} + ], + [ + {final => 1, + }, + { + 'sortkey' => {}} + ], + [ + { + }, + { + 'sortname' => {}}, + { + 'author' => {}}, + { + 'editor' => {}}, + { + 'translator' => {}}, + { + 'sorttitle' => {}}, + { + 'title' => {}} + ], + [ + { + }, + { + 'editor' => {}}, + ], + [ + { + }, + { + 'translator' => {}}, + ], + [ + { + }, + { + 'sorttitle' => {}}, + { + 'title' => {}} + ], + [ + { + }, + { + 'labelyear' => {}} + ], + [ + { + }, + { + 'volume' => {}}, + { + '0000' => {}} + ] + ]; +$main->set_sortscheme($S); +Biber::Config->setoption('nosort', { author => [ q/\A\p{L}{2}\p{Pd}/, q/[\x{2bf}\x{2018}]/ ], + translator => [ q/\A\p{L}{2}\p{Pd}/, q/[\x{2bf}\x{2018}]/ ], + # type_title should be not used as there is an + # explicit title nosort + type_title => q/\A.*/, + title => q/\A\p{L}{2}\p{Pd}/ + }); + +Biber::Config->setoption('sortcase', '1'); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('luzzatto')->[0], $prefix1, 'Title with nosort' ); +is($main->get_sortdata('hasan')->[0], $diacritic1, 'Name with nosort' ); + +# Testing editor roles +$S = [ + [ + {}, + { + 'editoratype' => {}}, + ], + [ + {}, + { + 'editor' => {}}, + ], + [ + {}, + { + 'editora' => {}}, + ], + ]; +$main->set_sortscheme($S); +Biber::Config->setoption('sortcase', 0); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('jaffe')->[0], $edtypeclass1, 'Editor type/class' ); + + +# Testing sorting using various date fields +$S = [ + [ + {}, + {'year' => {}}, + ], + [ + {}, + {'month' => {}}, + ], + [ + {}, + {'day' => {pad_side => 'right', + pad_width => 7}}, + ], + [ + {}, + {'endyear' => {}}, + ], + [ + {}, + {'endmonth' => {}}, + ], + [ + {}, + {'endday' => {}}, + ], + [ + {}, + {'origyear' => {'sort_direction' => 'descending'}} + ], + [ + {}, + {'origmonth' => {}} + ], + [ + {}, + {'origday' => {}} + ], + [ + {}, + {'origendyear' => {}} + ], + [ + {}, + {'origendmonth' => {}} + ], + [ + {}, + {'origendday' => {}} + ], + [ + {}, + {'eventendyear' => {}} + ], + [ + {}, + {'eventendmonth' => {pad_side => 'left', + pad_width => 4}} + ], + [ + {}, + {'eventendday' => {}} + ], + [ + {}, + {'eventyear' => {'substring_side' => 'left', + 'substring_width' => 3}} + ], + [ + {}, + {'eventmonth' => {}} + ], + [ + {}, + {'eventday' => {}} + ], + [ + {sort_direction => 'descending'}, + {'urlendyear' => {}} + ], + [ + {}, + {'urlendmonth' => {}} + ], + [ + {}, + {'urlendday' => {}} + ], + [ + {}, + {'urlyear' => {'substring_side' => 'right', + 'substring_width' => 2}} + ], + [ + {}, + {'urlmonth' => {}} + ], + [ + {}, + {'urlday' => {}} + ], + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('moraux')->[0], $dates1, 'Very contrived but thorough test of date sorting' ); + +# Testing max/minITEMS with sorting using list fields +# publisher +$S = [ + [ + {}, + {'publisher' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('augustine')->[0], $lists1, 'max/minitems test 1 (publisher)' ); + +# location +$S = [ + [ + {}, + {'location' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('cotton')->[0], $lists2, 'max/minitems test 2 (location)' ); + + +# institution +$S = [ + [ + {}, + {'institution' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('chiu')->[0], $lists3, 'max/minitems test 3 (institution)' ); + +# institution with minitems=2 +Biber::Config->setblxoption('minitems', 2); +$S = [ + [ + {}, + {'institution' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('chiu')->[0], $lists4, 'max/minitems test 4 (institution - minitems=2)' ); + +# institution with maxitems=4, minitems=3 +Biber::Config->setblxoption('maxitems', 4); +Biber::Config->setblxoption('minitems', 3); +$S = [ + [ + {}, + {'institution' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('chiu')->[0], $lists5, 'max/minitems test 5 (institution - maxitems=4/minitems=3)' ); + + + +# nty with implicit default left, 4-digit year sort +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'year' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('knuth:ct')->[0], $yearoff1, 'nty with default left offset, 4 digit year' ); + +# nty with left, 3-digit year sort, case sensitive +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'year' => {'substring_side' => 'left', + 'substring_width' => 3}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); +Biber::Config->setoption('sortcase', 1); +# regenerate information +$biber->prepare; + +is($main->get_sortdata('knuth:ct')->[0], $yearoff2, 'nty with left offset, 3 digit year, case sensitive' ); + + +# nty with left, 4-digit year sort, case sensitive +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'year' => {'substring_side' => 'left', + 'substring_width' => 4}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('knuth:ct')->[0], $yearoff3, 'nty with left offset, 4 digit year, case sensitive' ); + +# nty with right, 3-digit year sort +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'year' => {'substring_side' => 'right', + 'substring_width' => 3}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); +Biber::Config->setoption('sortcase', 0); +# regenerate information +$biber->prepare; + +is($main->get_sortdata('knuth:ct')->[0], $yearoff4, 'nty with right offset, 3 digit year' ); + +# nty with right, 4-digit year sort +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'year' => {'substring_side' => 'right', + 'substring_width' => 4}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('knuth:ct')->[0], $yearoff5, 'nty with right offset, 4 digit year' ); + +# ntyd with left, 4-digit year sort +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'year' => {'substring_side' => 'left', + 'substring_width' => 4, + 'sort_direction' => 'descending'}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('knuth:ct')->[0], $yearoff6, 'ntyd with left offset, 4 digit year' ); + +# ntyd with left, 3-digit year sort +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'year' => {'substring_side' => 'left', + 'substring_width' => 3, + 'sort_direction' => 'descending'}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('knuth:ct')->[0], $yearoff7, 'ntyd with left offset, 3 digit year' ); + +# ntyd with right, 4-digit year sort +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'year' => {'substring_side' => 'right', + 'substring_width' => 4, + 'sort_direction' => 'descending'}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('knuth:ct')->[0], $yearoff8, 'ntyd with right offset, 4 digit year' ); + +# ntyd with right, 3-digit year sort +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'year' => {'substring_side' => 'right', + 'substring_width' => 3, + 'sort_direction' => 'descending'}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('knuth:ct')->[0], $yearoff9, 'ntyd with right offset, 3 digit year' ); + +# nty with right-padded vol +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'volume' => {pad_side => 'right'}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $vol1, 'nty with right-padded vol' ); + +# nty with right-padded 7-char vol +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'volume' => {pad_side => 'right', + pad_width => 7}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $vol2, 'nty with right-padded 7-char vol' ); + +# nty with left-padded 5-char using Unicode "Ä" as pad_char vol +# Unicode char will be lowercase "Ä‘" in sortstring +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'volume' => {pad_side => 'left', + pad_width => 5, + pad_char => 'Ä'}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $vol3, 'nty with left-padded 5-char "a" pad char vol' ); + + +# nty +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $nty, 'basic nty sort' ); +is($main->get_sortdata('angenendtsk')->[0], $sk1, 'basic sortkey sort' ); + +# nyt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'labelname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $nyt, 'basic nyt sort' ); + +# nyvt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $nyvt, 'basic nyvt sort' ); + +# anyt with labelalpha +Biber::Config->setblxoption('labelalpha', 1); +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {}, + {'labelalpha' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $anyt_la, 'anyt sort (with labelalpha)' ); +Biber::Config->setblxoption('labelalpha', 0); +$bibentries->entry('stdmodel')->del_field('labelalpha'); +$bibentries->entry('stdmodel')->del_field('sortlabelalpha'); +$bibentries->entry('stdmodel:glashow')->del_field('labelalpha'); # it's a crossref so have to clear it here too +$bibentries->entry('stdmodel:glashow')->del_field('sortlabelalpha'); + +# anyt without labelalpha +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $anyt, 'anyt sort (without labelalpha)' ); + +# anyvt with labelalpha +Biber::Config->setblxoption('labelalpha',1); +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {}, + {'labelalpha' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'volume' => {pad_width => 4}}, + {'0000' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $anyvt_la, 'anyvt sort (with labelalpha)' ); +is($main->get_sortdata('murray')->[0], $anyvt_la2, 'anyvt sort (> maxnames=3 minnames=1, with labelalpha and alphaothers)' ); + +Biber::Config->setblxoption('maxnames', 2); +Biber::Config->setblxoption('minnames', 2); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('murray')->[0], $anyvt_la4, 'anyvt sort (> maxnames=2 minnames=2, with labelalpha and alphaothers)' ); + +Biber::Config->setblxoption('alphaothers', ''); +Biber::Config->setblxoption('sortalphaothers', ''); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('murray')->[0], $anyvt_la3, 'anyvt sort (> maxnames=2 minnames=2,with labelalpha and without alphaothers)' ); + +Biber::Config->setblxoption('labelalpha', 0); +$bibentries->entry('stdmodel')->del_field('labelalpha'); +$bibentries->entry('stdmodel')->del_field('sortlabelalpha'); +$bibentries->entry('stdmodel:glashow')->del_field('labelalpha'); # it's a crossref so have to clear it here too +$bibentries->entry('stdmodel:glashow')->del_field('sortlabelalpha'); +$bibentries->entry('murray')->del_field('labelalpha'); +$bibentries->entry('murray')->del_field('sortlabelalpha'); + +# anyvt without labelalpha + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $anyvt, 'anyvt sort (without labelalpha)' ); + +# ynt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'labelyear' => {}}, + {'9999' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $ynt, 'basic ynt sort' ); + +# ydnt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {sort_direction => 'descending'}, + {'sortyear' => {}}, + {'year' => {}}, + {'9999' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $ydnt, 'basic ydnt sort' ); +Biber::Config->setblxoption('labelalpha', 0); + +# debug +$S = [ + [ + {}, + {'entrykey' => {}}, + ], + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $debug, 'basic debug sort' ); + +# nty with use* all off +Biber::Config->setblxoption('useauthor', 0); +Biber::Config->setblxoption('useeditor', 0); +Biber::Config->setblxoption('usetranslator', 0); +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $noname, 'nty with use* all off' ); + + +# nty with modified presort and short_circuit at title +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {final => 1, + }, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; + +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel:ps_sc')->[0], $ps_sc, 'nty with modified presort and short-circuit title' ); + + +# citeorder sort + +$S = [ + [ + {}, + {'citeorder' => {}} + ] + ]; +$main->set_sortscheme($S); + +# regenerate information +$biber->prepare; + +is($main->get_sortdata('stdmodel')->[0], $citeorder, 'citeorder' ); + +unlink <*.utf8>; + + diff --git a/Master/texmf-dist/source/bibtex/biber/t/06-labelname.t b/Master/texmf-dist/source/bibtex/biber/t/06-labelname.t new file mode 100755 index 00000000000..7d59f54ed1e --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/06-labelname.t @@ -0,0 +1,41 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 3; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +Biber::Config->setoption('fastsort', 1); +$biber->parse_ctrlfile("general1.bcf"); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biblatex options +Biber::Config->setblxoption('labelnamespec', ['shortauthor', 'author', 'shorteditor', 'editor', 'translator']); +Biber::Config->setblxoption('labelnamespec', ['editor', 'translator'], 'PER_TYPE', 'book'); + +# Now generate the information +$biber->prepare; +my $bibentries = $biber->sections->get_section(0)->bibentries; + +my $sa = 'shortauthor'; +my $a = 'author'; +my $ted = 'editor'; + + +is($bibentries->entry('angenendtsa')->get_field('labelnamename'), $sa, 'global shortauthor' ); +is($bibentries->entry('stdmodel')->get_field('labelnamename'), $a, 'global author' ); +is($bibentries->entry('aristotle:anima')->get_field('labelnamename'), $ted, 'type-specific editor' ); + + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/07-bcfvalidation.t b/Master/texmf-dist/source/bibtex/biber/t/07-bcfvalidation.t new file mode 100755 index 00000000000..4bd9baad5bc --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/07-bcfvalidation.t @@ -0,0 +1,30 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 32; +use XML::LibXML; +use Biber; +chdir('t'); + +# Validate all .bcfs used in tests + +# Set up schema +my $CFxmlschema = XML::LibXML::RelaxNG->new(location => '../data/schemata/bcf.rng'); + +foreach my $bcf (<tdata/*.bcf>) { +# Set up XML parser + my $CFxmlparser = XML::LibXML->new(); + + # basic parse and XInclude processing + my $CFxp = $CFxmlparser->parse_file($bcf); + + # XPath context + my $CFxpc = XML::LibXML::XPathContext->new($CFxp); + $CFxpc->registerNs('bcf', 'https://sourceforge.net/projects/biblatex'); + + # Validate against schema. Dies if it fails. + $CFxmlschema->validate($CFxp); + is($@, '', "Validation of $bcf"); +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/10-configfile.t b/Master/texmf-dist/source/bibtex/biber/t/10-configfile.t new file mode 100755 index 00000000000..039cfbadd8d --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/10-configfile.t @@ -0,0 +1,26 @@ +use strict; +use warnings; + +use Test::More tests => 6; +use Biber; +use Cwd qw(getcwd); +use File::Spec; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); + +my $biberA = Biber->new( configfile => "t/tdata/biber2.conf" ); +is(Biber::Config->getoption('mincrossrefs'), 5); +my %colloptsA = ( level => 3, table => "/home/user/data/otherkeys.txt" ); +my %nosort = (author => [ q/\A\p{L}{2}\p{Pd}/, q/[\x{2bf}\x{2018}]/ ], + translator => q/[\x{2bf}\x{2018}]/ ); +is_deeply(Biber::Config->getoption('collate_options'), \%colloptsA); +is_deeply(Biber::Config->getoption('nosort'), \%nosort); + +chdir("t/tdata"); +my $cwdB = getcwd(); +my $biberB = Biber->new(configfile => "biber3.conf"); +is(Biber::Config->getcmdlineoption('configfile'), File::Spec->catfile("biber3.conf")); +is(Biber::Config->getoption('mincrossrefs'), 3); +my %colloptsB = ( level => 1, table => "/home/user/data/mykeys.txt" ); +is_deeply(Biber::Config->getoption('collate_options'), \%colloptsB); + diff --git a/Master/texmf-dist/source/bibtex/biber/t/10-sort-case.t b/Master/texmf-dist/source/bibtex/biber/t/10-sort-case.t new file mode 100755 index 00000000000..e5c75245304 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/10-sort-case.t @@ -0,0 +1,52 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 2; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; +my $S; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('sort-case.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests +Biber::Config->setoption('sortcase', 1); +Biber::Config->setoption('sortupper', 1); + +$S = [ + [ + {}, + {'author' => {}}, + ], + ]; +Biber::Config->setblxoption('sorting', {default => $S}); + +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); + +is_deeply([$main->get_keys], ['CS1','CS3','CS2'], 'U::C case - 1'); + +$biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('sort-case.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Global here is sortcase=0, sortupper=1 +# title is sortcase=1, sortupper=0 +# So, all names are the same and it depends on title +$biber->prepare; +$section = $biber->sections->get_section(0); +$section = $biber->sections->get_section(0); +$main = $section->get_list('MAIN'); +is_deeply([$main->get_keys], ['CS3','CS2','CS1'], 'U::C case - 2'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/10-sort-complex.t b/Master/texmf-dist/source/bibtex/biber/t/10-sort-complex.t new file mode 100755 index 00000000000..2f618e151fa --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/10-sort-complex.t @@ -0,0 +1,193 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 8; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('sort-complex.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); + +# Biblatex options +Biber::Config->setblxoption('labelalpha', 1); +Biber::Config->setblxoption('labelyear', undef); + +# Now generate the information +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $shs = $section->get_list('SHORTHANDS'); +my $out = $biber->get_output_obj; + +isa_ok($biber, "Biber"); + +my $sc = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'labelalpha' => {}}, + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'volume' => {pad_char => '0', + pad_side => 'left', + pad_width => '4'}}, + {'0000' => {}} + ], + ]; + +my $sc3 = q| \entry{L4}{book}{} + \true{morelabelname} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \true{moreauthor} + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {Another press}% + } + \strng{namehash}{DJo1} + \strng{fullhash}{DJo1} + \field{labelalpha}{Doe\textbf{+}95} + \field{sortinit}{D} + \field{extraalpha}{2} + \field{title}{Some title about sorting} + \field{year}{1995} + \endentry + +|; + +my $sc4 = q| \entry{L1}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{labelalpha}{Doe95} + \field{sortinit}{D} + \field{extraalpha}{1} + \field{title}{Algorithms For Sorting} + \field{year}{1995} + \endentry + +|; + +my $sc5 = q| \entry{L2}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{labelalpha}{Doe95} + \field{sortinit}{D} + \field{extraalpha}{3} + \field{title}{Sorting Algorithms} + \field{year}{1995} + \endentry + +|; + +my $sc6 = q| \entry{L3}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{labelalpha}{Doe95} + \field{sortinit}{D} + \field{extraalpha}{2} + \field{title}{More and More Algorithms} + \field{year}{1995} + \endentry + +|; + +is_deeply( $main->get_sortscheme , $sc, 'sort scheme'); +is( $out->get_output_entry($main,'l4'), $sc3, '\alphaothers set by "and others"'); +is( $out->get_output_entry($main,'l1'), $sc4, '2-pass - labelalpha after title'); +is( $out->get_output_entry($main,'l2'), $sc5, '2-pass - labelalpha after title'); +is( $out->get_output_entry($main,'l3'), $sc6, '2-pass - labelalpha after title'); +is_deeply([ $main->get_keys ], ['L5', 'L4', 'L1', 'L3', 'L2'], 'citeorder - 1'); + +# This should be the same as $main citeorder as both $main and $shs use same +# global sort spec. $shs should also get the keys from the sort cache as a result. +# Can't do the usual SHORTHAND filter on SHORTHAND field in .bcf as adding SHORTHAND +# fields to the entries changes the sort order of $main (as SHORTHAND overrides the default +# label) +is_deeply([ $shs->get_keys ], ['L5', 'L4', 'L1', 'L3', 'L2'], 'citeorder - 2'); + + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/10-sort-order.t b/Master/texmf-dist/source/bibtex/biber/t/10-sort-order.t new file mode 100755 index 00000000000..f412f23b65b --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/10-sort-order.t @@ -0,0 +1,518 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 13; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; +my $S; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('sort-order.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests +Biber::Config->setoption('fastsort', 1); + +# citeorder (sorting=none) +$S = [ + [ + {}, + {'citeorder' => {}} + ] + ]; +Biber::Config->setblxoption('sorting', {default => $S}); +Biber::Config->setblxoption('labelyear', undef); + +# (re)generate informtion based on option settings +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); + +is_deeply([ $main->get_keys ], ['L2','L1B','L1','L4','L3','L5','L1A','L7','L8','L6','L9'], 'citeorder'); + +# nty +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}}, + {'0000' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; + +$main->set_sortscheme($S); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([ $main->get_keys ], ['L5','L1A','L1','L1B','L2','L3','L4','L8','L7','L6','L9'], 'nty'); + +# nyt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}}, + {'0000' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ] + ]; + +$main->set_sortscheme($S); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L5','L1A','L1','L1B','L2','L3','L4','L8','L7','L6','L9'], 'nyt'); + +# nyvt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}}, + {'0000' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ] + ]; + + +$main->set_sortscheme($S); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L5','L1','L1A','L1B','L2','L3','L4','L8','L7','L6','L9'], 'nyvt'); + +# nyvt with volume padding +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}}, + {'0000' => {}} + ], + [ + {}, + {'volume' => {pad_side => 'right'}}, + {'0000' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ] + ]; + + +$main->set_sortscheme($S); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L5','L1A','L1','L1B','L2','L3','L4','L8','L7','L6','L9'], 'nyvt with volume padding'); + +# ynt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}}, + {'9999' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + ]; + +$main->set_sortscheme($S); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L3','L1B','L1A','L1','L4','L2','L8','L7','L6','L9','L5'], 'ynt'); + +# ynt with year substring +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {'substring_side' => 'left', + 'substring_width' => 3}}, + {'9999' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + ]; + +$main->set_sortscheme($S); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L3','L1B','L1A','L1','L2','L4','L8','L7','L6','L9','L5'], 'ynt with year substring'); + +# ydnt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {sort_direction => 'descending'}, + {'sortyear' => {}}, + {'year' => {}}, + {'9999' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + ]; + +$main->set_sortscheme($S); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +# This is correct as "aaaaaa" sorts before all years when descending +is_deeply([$main->get_keys], ['L5','L9','L6','L7','L8','L2','L4','L1A','L1','L1B','L3'], 'ydnt'); + +# anyt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {}, + {'labelalpha' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}}, + {'0000' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'0000' => {}} + ] + ]; + +$main->set_sortscheme($S); +Biber::Config->setblxoption('labelalpha', 1); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L1B','L1A','L1','L2','L3','L4','L5','L8','L7','L6','L9'], 'anyt'); + +Biber::Config->setblxoption('labelalpha', 0); + +# anyvt +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {}, + {'labelalpha' => {}} + ], + [ + {final => 1, + }, + {'sortkey' => {}} + ], + [ + {}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}}, + {'0000' => {}} + ], + [ + {}, + {'volume' => {}}, + {'0000' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ] + ]; + +$main->set_sortscheme($S); +Biber::Config->setblxoption('labelalpha', 1); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L1B','L1','L1A','L2','L3','L4','L5','L8','L7','L6','L9'], 'anyvt'); + + +# nty with descending n +$S = [ + [ + {sort_direction => 'descending'}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sorttitle' => {}}, + {'title' => {}} + ], + [ + {}, + {'sortyear' => {}}, + {'year' => {}}, + {'0000' => {}} + ], + ]; + +$main->set_sortscheme($S); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L9','L6','L7','L8','L5','L4','L3','L2','L1B','L1A','L1'], 'nty with descending n'); + + +# testing case sensitive with fastsort +# In alphabetic, all uppercase comes before lower so the +# "sortcase => 1" on location means that "edinburgh" sorts at the end after "London" +# Take this out of the location sorting spec and it fails as it should +$S = [ + [ + {sortcase => 1}, + {'location' => {}} + ] + ]; + +$main->set_sortscheme($S); + +$biber->set_output_obj(Biber::Output::BBL->new()); +# Have to set local to something which understand lexical/case differences for this test +# otherwise testing on Windows doesn't work ... +Biber::Config->setoption('sortlocale', 'C'); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L1B','L1','L1A','L2','L3','L4','L5','L7','L8','L9','L6'], 'location - sortcase=1'); + +# Test nosort option +$S = [ + [ + {}, + {'title' => {}} + ] + ]; + +$main->set_sortscheme($S); +# Set nosort for tests, skipping "The " in titles so L7 should sort before L6 +Biber::Config->setoption('nosort', { type_title => q/\AThe\s+/ }); + +$biber->set_output_obj(Biber::Output::BBL->new()); +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['L1A','L1','L1B','L2','L3','L4','L5','L7','L6','L9','L8'], 'nosort 1'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/10-sort-uc.t b/Master/texmf-dist/source/bibtex/biber/t/10-sort-uc.t new file mode 100755 index 00000000000..cddc457cafb --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/10-sort-uc.t @@ -0,0 +1,104 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 6; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; +my $S; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('sort-uc.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests +Biber::Config->setoption('sortlocale', 'sv_SE'); + +# U::C Swedish tailoring +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $shs = $section->get_list('SHORTHANDS'); + +# Shorthands are sorted by shorthand (as per bcf) +is_deeply([$main->get_keys], ['LS2','LS1','LS3','LS4'], 'U::C tailoring - 1'); +is_deeply([$shs->get_keys], ['LS3', 'LS4','LS2','LS1'], 'U::C tailoring - 2'); + +# Set sorting of shorthands to global sorting default +$shs->set_sortscheme(Biber::Config->getblxoption('sorting')); + +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$shs->get_keys], ['LS2', 'LS1','LS3','LS4'], 'U::C tailoring - 3'); + + +# Descending name in Swedish collation +$S = [ + [ + {}, + {'presort' => {}} + ], + [ + {final => 1}, + {'sortkey' => {}} + ], + [ + {sort_direction => 'descending'}, + {'sortname' => {}}, + {'author' => {}}, + {'editor' => {}}, + {'translator' => {}}, + {'sorttitle' => {}}, + {'title' => {}} + ] + ]; + +$main->set_sortscheme($S); + +$biber->prepare; +$section = $biber->sections->get_section(0); + +is_deeply([$main->get_keys], ['LS3','LS4','LS1','LS2'], 'U::C tailoring descending - 1'); + +# Local lower before upper setting +$S = [ + [ + {sortupper => 0}, + {'title' => {}} + ] + ]; + +$main->set_sortscheme($S); + +$biber->prepare; +$section = $biber->sections->get_section(0); +is_deeply([$main->get_keys], ['LS4', 'LS3','LS2','LS1'], 'upper_before_lower locally false'); + +# Local case insensitive negates the sortupper being false as this no longer +# means anything so it reverts to bib order for LS3 and LS4 +# For this, have to reparse the .bcf otherwise the citekey order from previous +# test is kept for things that are not sort distinguishable +$biber->parse_ctrlfile('sort-uc.bcf'); +$section = $biber->sections->get_section(0); +$main = $section->get_list('MAIN'); +$biber->set_output_obj(Biber::Output::BBL->new()); +$S = [ + [ + {sortupper => 0, + sortcase => 0}, + {'title' => {}} + ] + ]; + +$main->set_sortscheme($S); +$biber->prepare; +is_deeply([$main->get_keys], ['LS3', 'LS4','LS2','LS1'], 'sortcase locally false, upper_before_lower locally false'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/11-set-dynamic.t b/Master/texmf-dist/source/bibtex/biber/t/11-set-dynamic.t new file mode 100755 index 00000000000..317f713dc9d --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/11-set-dynamic.t @@ -0,0 +1,138 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 7; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('set-dynamic.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); + +# Now generate the information +$biber->prepare; +my $section0 = $biber->sections->get_section(0); +my $main0 = $section0->get_list('MAIN'); +my $sh0 = $section0->get_list('SHORTHANDS'); +my $section1 = $biber->sections->get_section(1); +my $main1 = $section1->get_list('MAIN'); +my $sh1 = $section1->get_list('SHORTHANDS'); +my $out = $biber->get_output_obj; + +my $string1 = q| \entry{DynSet}{set}{} + \set{Dynamic1,Dynamic2,Dynamic3} + \name{labelname}{1}{% + {{Dynamism}{D.}{Derek}{D.}{}{}{}{}}% + } + \name{author}{1}{% + {{Dynamism}{D.}{Derek}{D.}{}{}{}{}}% + } + \strng{namehash}{DD1} + \strng{fullhash}{DD1} + \field{sortinit}{0} + \field{labelyear}{2002} + \field{annotation}{Some Dynamic Note} + \field{shorthand}{d1} + \field{title}{Doing Daring Deeds} + \field{year}{2002} + \endentry + +|; + +my $string2 = q| \entry{Dynamic1}{book}{} + \inset{DynSet} + \name{labelname}{1}{% + {{Dynamism}{D.}{Derek}{D.}{}{}{}{}}% + } + \name{author}{1}{% + {{Dynamism}{D.}{Derek}{D.}{}{}{}{}}% + } + \strng{namehash}{DD1} + \strng{fullhash}{DD1} + \field{sortinit}{0} + \field{annotation}{Some Dynamic Note} + \field{shorthand}{d1} + \field{title}{Doing Daring Deeds} + \field{year}{2002} + \endentry + +|; + +my $string3 = q| \entry{Dynamic2}{book}{} + \inset{DynSet} + \name{labelname}{1}{% + {{Bunting}{B.}{Brian}{B.}{}{}{}{}}% + } + \name{author}{1}{% + {{Bunting}{B.}{Brian}{B.}{}{}{}{}}% + } + \strng{namehash}{BB1} + \strng{fullhash}{BB1} + \field{sortinit}{0} + \field{shorthand}{d2} + \field{title}{Beautiful Birthdays} + \field{year}{2010} + \endentry + +|; + +my $string4 = q| \entry{Dynamic3}{book}{} + \inset{DynSet} + \name{labelname}{1}{% + {{Regardless}{R.}{Roger}{R.}{}{}{}{}}% + } + \name{author}{1}{% + {{Regardless}{R.}{Roger}{R.}{}{}{}{}}% + } + \strng{namehash}{RR1} + \strng{fullhash}{RR1} + \field{sortinit}{0} + \field{shorthand}{d3} + \field{title}{Reckless Ravishings} + \field{year}{2000} + \endentry + +|; + +# Labelyear is now here as skiplab is not set for this entry when cited in section +# without citation of a set it is a member of +my $string5 = q| \entry{Dynamic3}{book}{} + \name{labelname}{1}{% + {{Regardless}{R.}{Roger}{R.}{}{}{}{}}% + } + \name{author}{1}{% + {{Regardless}{R.}{Roger}{R.}{}{}{}{}}% + } + \strng{namehash}{RR1} + \strng{fullhash}{RR1} + \field{sortinit}{0} + \field{labelyear}{2000} + \field{shorthand}{d3} + \field{title}{Reckless Ravishings} + \field{year}{2000} + \endentry + +|; + +is($out->get_output_entry($main0,'DynSet'), $string1, 'Dynamic set test 1'); +is($out->get_output_entry($main0,'Dynamic1'), $string2, 'Dynamic set test 2'); +is($out->get_output_entry($main0,'Dynamic2'), $string3, 'Dynamic set test 3'); +is($out->get_output_entry($main0,'Dynamic3'), $string4, 'Dynamic set test 4'); +is($out->get_output_entry($main0,'Dynamic3', 1), $string5, 'Dynamic set test 5'); +is_deeply([$sh0->get_keys], ['DynSet'], 'Dynamic set skiplos 1'); +is_deeply([$sh1->get_keys], ['Dynamic3'], 'Dynamic set skiplos 2'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/11-set-legacy.t b/Master/texmf-dist/source/bibtex/biber/t/11-set-legacy.t new file mode 100755 index 00000000000..3691c47b8fa --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/11-set-legacy.t @@ -0,0 +1,117 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 3; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('set-legacy.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); + +# Now generate the information +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $out = $biber->get_output_obj; + +my $string1 = q| \entry{Elias1955}{set}{} + \set{Elias1955a,Elias1955b} + \name{labelname}{1}{% + {{Elias}{E.}{P.}{P.}{}{}{}{}}% + } + \name{author}{1}{% + {{Elias}{E.}{P.}{P.}{}{}{}{}}% + } + \strng{namehash}{EP1} + \strng{fullhash}{EP1} + \field{sortinit}{0} + \field{labelyear}{1955} + \field{issn}{0096-1000} + \field{journaltitle}{IRE Transactions on Information Theory} + \field{month}{03} + \field{number}{1} + \field{title}{Predictive coding--I} + \field{volume}{1} + \field{year}{1955} + \field{pages}{16\bibrangedash 24} + \verb{doi} + \verb 10.1109/TIT.1955.1055126 + \endverb + \warn{\item Field 'crossref' is no longer needed in set entries in Biber - ignoring in entry 'Elias1955'} + \endentry + +|; + +my $string2 = q| \entry{Elias1955a}{article}{} + \inset{Elias1955} + \name{labelname}{1}{% + {{Elias}{E.}{P.}{P.}{}{}{}{}}% + } + \name{author}{1}{% + {{Elias}{E.}{P.}{P.}{}{}{}{}}% + } + \strng{namehash}{EP1} + \strng{fullhash}{EP1} + \field{sortinit}{0} + \field{issn}{0096-1000} + \field{journaltitle}{IRE Transactions on Information Theory} + \field{month}{03} + \field{number}{1} + \field{title}{Predictive coding--I} + \field{volume}{1} + \field{year}{1955} + \field{pages}{16\bibrangedash 24} + \verb{doi} + \verb 10.1109/TIT.1955.1055126 + \endverb + \warn{\item Field 'entryset' is no longer needed in set member entries in Biber - ignoring in entry 'Elias1955a'} + \endentry + +|; + +my $string3 = q| \entry{Elias1955b}{article}{} + \inset{Elias1955} + \name{labelname}{1}{% + {{Elias}{E.}{P.}{P.}{}{}{}{}}% + } + \name{author}{1}{% + {{Elias}{E.}{P.}{P.}{}{}{}{}}% + } + \strng{namehash}{EP1} + \strng{fullhash}{EP1} + \field{sortinit}{0} + \field{issn}{0096-1000} + \field{journaltitle}{IRE Transactions on Information Theory} + \field{month}{03} + \field{number}{1} + \field{title}{Predictive coding--II} + \field{volume}{1} + \field{year}{1955} + \field{pages}{24\bibrangedash 33} + \verb{doi} + \verb 10.1109/TIT.1955.1055116 + \endverb + \warn{\item Field 'entryset' is no longer needed in set member entries in Biber - ignoring in entry 'Elias1955b'} + \endentry + +|; + +is($out->get_output_entry($main,'elias1955'), $string1, 'Legacy set test 1'); +is($out->get_output_entry($main,'elias1955a'), $string2, 'Legacy set test 2'); +is($out->get_output_entry($main,'elias1955b'), $string3, 'Legacy set test 3'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/11-set-static.t b/Master/texmf-dist/source/bibtex/biber/t/11-set-static.t new file mode 100755 index 00000000000..c014c4bb1d0 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/11-set-static.t @@ -0,0 +1,129 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 5; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('set-static.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); + +# Now generate the information +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $out = $biber->get_output_obj; + +my $string1 = q| \entry{Static1}{set}{} + \set{Static2,Static3,Static4} + \name{labelname}{1}{% + {{Bumble}{B.}{Brian}{B.}{}{}{}{}}% + } + \name{author}{1}{% + {{Bumble}{B.}{Brian}{B.}{}{}{}{}}% + } + \strng{namehash}{BB1} + \strng{fullhash}{BB1} + \field{sortinit}{0} + \field{labelyear}{2001} + \field{annotation}{Some notes} + \field{title}{Blessed Brains} + \field{year}{2001} + \endentry + +|; + +my $string2 = q| \entry{Static2}{book}{} + \inset{Static1} + \name{labelname}{1}{% + {{Bumble}{B.}{Brian}{B.}{}{}{}{}}% + } + \name{author}{1}{% + {{Bumble}{B.}{Brian}{B.}{}{}{}{}}% + } + \strng{namehash}{BB1} + \strng{fullhash}{BB1} + \field{sortinit}{0} + \field{annotation}{Some Blessed Note} + \field{title}{Blessed Brains} + \field{year}{2001} + \endentry + +|; + +my $string3 = q| \entry{Static3}{book}{} + \inset{Static1} + \name{labelname}{1}{% + {{Crenellation}{C.}{Clive}{C.}{}{}{}{}}% + } + \name{author}{1}{% + {{Crenellation}{C.}{Clive}{C.}{}{}{}{}}% + } + \strng{namehash}{CC1} + \strng{fullhash}{CC1} + \field{sortinit}{0} + \field{title}{Castles and Crime} + \field{year}{2002} + \endentry + +|; + +my $string4 = q| \entry{Static4}{book}{} + \inset{Static1} + \name{labelname}{1}{% + {{Dingle}{D.}{Derek}{D.}{}{}{}{}}% + } + \name{author}{1}{% + {{Dingle}{D.}{Derek}{D.}{}{}{}{}}% + } + \strng{namehash}{DD1} + \strng{fullhash}{DD1} + \field{sortinit}{0} + \field{title}{Dungeons, Dark and Dangerous} + \field{year}{2005} + \endentry + +|; + +# Labelyear is now here as skiplab is not set for this entry when cited in section +# without citation of a set it is a member of +my $string5 = q| \entry{Static2}{book}{} + \name{labelname}{1}{% + {{Bumble}{B.}{Brian}{B.}{}{}{}{}}% + } + \name{author}{1}{% + {{Bumble}{B.}{Brian}{B.}{}{}{}{}}% + } + \strng{namehash}{BB1} + \strng{fullhash}{BB1} + \field{sortinit}{0} + \field{labelyear}{2001} + \field{annotation}{Some Blessed Note} + \field{title}{Blessed Brains} + \field{year}{2001} + \endentry + +|; + + +is($out->get_output_entry($main,'Static1'), $string1, 'Static set test 1'); +is($out->get_output_entry($main,'Static2'), $string2, 'Static set test 2'); +is($out->get_output_entry($main,'Static3'), $string3, 'Static set test 3'); +is($out->get_output_entry($main,'Static4'), $string4, 'Static set test 4'); +is($out->get_output_entry($main,'Static2', 1), $string5, 'Static set test 5'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/12-skips.t b/Master/texmf-dist/source/bibtex/biber/t/12-skips.t new file mode 100755 index 00000000000..ae4f33ccb13 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/12-skips.t @@ -0,0 +1,207 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 16; + +use Biber; +use Biber::Utils; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('skips.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); + +# Now generate the information +$biber->prepare; +my $out = $biber->get_output_obj; +my $section = $biber->sections->get_section(0); +my $shs = $section->get_list('SHORTHANDS'); +my $main = $section->get_list('MAIN'); +my $bibentries = $section->bibentries; + +my $set1 = q| \entry{seta}{set}{} + \set{set:membera,set:memberb,set:memberc} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{labelalpha}{Doe10} + \field{sortinit}{D} + \field{extrayear}{1} + \field{labelyear}{2010} + \field{extraalpha}{1} + \field{title}{Set Member A} + \field{year}{2010} + \keyw{key1, key2} + \endentry + +|; + +my $set2 = q| \entry{set:membera}{book}{} + \inset{seta} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{sortinit}{D} + \field{title}{Set Member A} + \field{year}{2010} + \keyw{key1, key2} + \endentry + +|; + +my $set3 = q| \entry{set:memberb}{book}{} + \inset{seta} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{sortinit}{D} + \field{title}{Set Member B} + \field{year}{2010} + \endentry + +|; + +my $set4 = q| \entry{set:memberc}{book}{} + \inset{seta} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{sortinit}{D} + \field{title}{Set Member C} + \field{year}{2010} + \endentry + +|; + +my $noset1 = q| \entry{noseta}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{labelalpha}{Doe10} + \field{sortinit}{D} + \field{extrayear}{2} + \field{labelyear}{2010} + \field{extraalpha}{2} + \field{title}{Stand-Alone A} + \field{year}{2010} + \endentry + +|; + +my $noset2 = q| \entry{nosetb}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{labelalpha}{Doe10} + \field{sortinit}{D} + \field{extrayear}{3} + \field{labelyear}{2010} + \field{extraalpha}{3} + \field{title}{Stand-Alone B} + \field{year}{2010} + \endentry + +|; + +my $noset3 = q| \entry{nosetc}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{labelalpha}{Doe10} + \field{sortinit}{D} + \field{extrayear}{4} + \field{labelyear}{2010} + \field{extraalpha}{4} + \field{title}{Stand-Alone C} + \field{year}{2010} + \endentry + +|; + +my $sk4 = q| \entry{skip4}{article}{dataonly} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{sortinit}{D} + \field{shorthand}{AWS} + \field{title}{Algorithms Which Sort} + \field{year}{1932} + \endentry + +|; + +is_deeply([$shs->get_keys], ['skip1'], 'skiplos - not in LOS'); +is($bibentries->entry('skip1')->get_field('options'), 'skipbib', 'Passing skipbib through'); +is($bibentries->entry('skip2')->get_field('labelalpha'), 'SA', 'Normal labelalpha'); +is($bibentries->entry('skip2')->get_field($bibentries->entry('skip2')->get_field('labelyearname')), '1995', 'Normal labelyear'); +ok(is_undef($bibentries->entry('skip3')->get_field('labelalpha')), 'skiplab - no labelalpha'); +ok(is_undef($bibentries->entry('skip3')->get_field('labelyearname')), 'skiplab - no labelyear'); +ok(is_undef($bibentries->entry('skip4')->get_field('labelalpha')), 'dataonly - no labelalpha'); +is($out->get_output_entry($main,'skip4'), $sk4, 'dataonly - checking output'); +ok(is_undef($bibentries->entry('skip4')->get_field('labelyearname')), 'dataonly - no labelyear'); +is($out->get_output_entry($main,'seta'), $set1, 'Set parent - with labels'); +is($out->get_output_entry($main,'set:membera'), $set2, 'Set member - no labels 1'); +is($out->get_output_entry($main,'set:memberb'), $set3, 'Set member - no labels 2'); +is($out->get_output_entry($main,'set:memberc'), $set4, 'Set member - no labels 3'); +is($out->get_output_entry($main,'noseta'), $noset1, 'Not a set member - extrayear continues from set 1'); +is($out->get_output_entry($main,'nosetb'), $noset2, 'Not a set member - extrayear continues from set 2'); +is($out->get_output_entry($main,'nosetc'), $noset3, 'Not a set member - extrayear continues from set 3'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/13-uniquename.t b/Master/texmf-dist/source/bibtex/biber/t/13-uniquename.t new file mode 100755 index 00000000000..805a7e50863 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/13-uniquename.t @@ -0,0 +1,171 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 5; + +use Biber; +use Biber::Output::BBL; +use Biber::Utils; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('uniquename.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); + +# Now generate the information +$biber->prepare; +my $out = $biber->get_output_obj; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $bibentries = $section->bibentries; + +my $un1 = q| \entry{un1}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{DJ1} + \strng{fullhash}{DJ1} + \field{labelalpha}{Doe94} + \field{sortinit}{D} + \field{labelyear}{1994} + \count{uniquename}{2} + \field{title}{Unique 1} + \field{year}{1994} + \endentry + +|; + +my $un2 = q| \entry{un2}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{Edward}{E.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{Edward}{E.}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{DE1} + \strng{fullhash}{DE1} + \field{labelalpha}{Doe34} + \field{sortinit}{D} + \field{labelyear}{1934} + \count{uniquename}{1} + \field{title}{Unique 2} + \field{year}{1934} + \endentry + +|; + +my $un3 = q| \entry{un3}{book}{} + \name{labelname}{1}{% + {{Doe}{D.}{Jane}{J.}{}{}{}{}}% + } + \name{author}{1}{% + {{Doe}{D.}{Jane}{J.}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{DJ2} + \strng{fullhash}{DJ2} + \field{labelalpha}{Doe83} + \field{sortinit}{D} + \field{labelyear}{1983} + \count{uniquename}{2} + \field{title}{Unique 3} + \field{year}{1983} + \endentry + +|; + +my $un4 = q| \entry{un4}{book}{} + \name{labelname}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Mills}{M.}{Mike}{M.}{}{}{}{}}% + } + \name{author}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Mills}{M.}{Mike}{M.}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{DJ+1} + \strng{fullhash}{DJMM1} + \field{labelalpha}{Doe\textbf{+}21} + \field{sortinit}{D} + \field{labelyear}{1921} + \count{uniquename}{0} + \field{title}{Unique 4} + \field{year}{1921} + \endentry + +|; + +my $un5 = q| \entry{un5}{book}{} + \name{labelname}{1}{% + {{Chaps}{C.}{}{}{}{}{}{}}% + } + \name{author}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Mills}{M.}{Mike}{M.}{}{}{}{}}% + } + \name{shortauthor}{1}{% + {{Chaps}{C.}{}{}{}{}{}{}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{C1} + \strng{fullhash}{DJMM1} + \field{labelalpha}{Cha21} + \field{sortinit}{D} + \field{labelyear}{1921} + \count{uniquename}{0} + \field{title}{Unique 5} + \field{year}{1921} + \endentry + +|; + + +is($out->get_output_entry($main,'un1'), $un1, 'Uniquename requiring full name expansion - 1'); +is($out->get_output_entry($main,'un3'), $un3, 'Uniquename requiring full name expansion - 2'); +is($out->get_output_entry($main,'un2'), $un2, 'Uniquename requiring initials name expansion'); +is($out->get_output_entry($main,'un4'), $un4, 'Namehash and fullhash different due to maxnames setting'); +is($out->get_output_entry($main,'un5'), $un5, 'Fullnamshash ignores SHORT* names'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/14-sections.t b/Master/texmf-dist/source/bibtex/biber/t/14-sections.t new file mode 100755 index 00000000000..2414da99f58 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/14-sections.t @@ -0,0 +1,98 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 14; +use Biber; +use Biber::Constants; +use Biber::Utils; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('sections.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('bblsafechars', 1); + +# Now generate the information +$biber->prepare; +my $out = $biber->get_output_obj; +my $section0 = $biber->sections->get_section(0); +my $main0 = $section0->get_list('MAIN'); +my $shs0 = $section0->get_list('SHORTHANDS'); +my $section1 = $biber->sections->get_section(1); +my $main1 = $section1->get_list('MAIN'); +my $shs1 = $section1->get_list('SHORTHANDS'); +my $section2 = $biber->sections->get_section(2); +my $main2 = $section2->get_list('MAIN'); +my $shs2 = $section2->get_list('SHORTHANDS'); +my $section3 = $biber->sections->get_section(3); +my $main3 = $section3->get_list('MAIN'); +my $shs3 = $section3->get_list('SHORTHANDS'); + +my $preamble = [ + 'Å tring for Preamble 1', + 'String for Preamble 2', + 'String for Preamble 3', + 'String for Preamble 4' + ]; + +my $v = $Biber::VERSION; +if ($Biber::BETA_VERSION) { + $v .= ' (beta)'; +} + +my $head = qq|% \$ biblatex auxiliary file \$ +% \$ biblatex version $BIBLATEX_VERSION \$ +% \$ biber version $v \$ +% Do not modify the above lines! +% +% This is an auxiliary file used by the 'biblatex' package. +% This file may safely be deleted. It will be recreated by +% biber or bibtex as required. +% +\\begingroup +\\makeatletter +\\\@ifundefined{ver\@biblatex.sty} + {\\\@latex\@error + {Missing 'biblatex' package} + {The bibliography requires the 'biblatex' package.} + \\aftergroup\\endinput} + {} +\\endgroup + +\\preamble{% +\\v{S}tring for Preamble 1% +String for Preamble 2% +String for Preamble 3% +String for Preamble 4% +} + +|; + +is_deeply($biber->get_preamble, $preamble, 'Preamble for all sections'); +is($section0->bibentry('sect1')->get_field('note'), 'value1', 'Section 0 macro test'); +# If macros were not reset between sections, this would give a macro redef error +is($section1->bibentry('sect4')->get_field('note'), 'value2', 'Section 1 macro test'); +is_deeply([$main0->get_keys], ['sect1', 'sect2', 'sect3', 'sect8'], 'Section 0 citekeys'); +is_deeply([$shs0->get_keys], ['sect1', 'sect2', 'sect8'], 'Section 0 shorthands'); +is_deeply([$main1->get_keys], ['sect4', 'sect5'], 'Section 1 citekeys'); +is_deeply([$shs1->get_keys], ['sect4', 'sect5'], 'Section 1 shorthands'); +is_deeply([$main2->get_keys], ['sect1', 'sect6', 'sect7'], 'Section 2 citekeys'); +is_deeply([$shs2->get_keys], ['sect1', 'sect6', 'sect7'], 'Section 2 shorthands'); +is_deeply([$section3->get_orig_order_citekeys], ['sect1', 'sect2', 'sectall1'], 'Section 3 citekeys'); +is($out->get_output_section(0)->number, '0', 'Checking output sections - 1'); +is($out->get_output_section(1)->number, '1', 'Checking output sections - 2'); +is($out->get_output_section(2)->number, '2', 'Checking output sections - 3'); +is($out->get_output_head, $head, 'Preamble output check with bblsafechars'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/15-sections-complex.t b/Master/texmf-dist/source/bibtex/biber/t/15-sections-complex.t new file mode 100755 index 00000000000..8145483dc06 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/15-sections-complex.t @@ -0,0 +1,176 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 64; + +use Biber; +use Biber::Utils; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('sections-complex.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('sortlocale', 'C'); + +# Biblatex options +Biber::Config->setblxoption('labelalpha', 1); +Biber::Config->setblxoption('maxnames', 1); +Biber::Config->setblxoption('labelyear', undef); + +# Now generate the information +$biber->prepare; +my $section0 = $biber->sections->get_section(0); +my $bibentries0 = $section0->bibentries; +my $main0 = $section0->get_list('MAIN'); +my $section1 = $biber->sections->get_section(1); +my $main1 = $section1->get_list('MAIN'); +my $bibentries1 = $section1->bibentries; + +is($bibentries0->entry('l1')->get_field('sortlabelalpha'), 'Doe95', 'maxnames=1 minnames=1 entry L1 labelalpha'); +ok(is_undef($main0->get_extraalphadata('l1')), 'maxnames=1 minnames=1 entry L1 extraalpha'); +is($bibentries0->entry('l2')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L2 labelalpha'); +is($main0->get_extraalphadata('l2'), '1', 'maxnames=1 minnames=1 entry L2 extraalpha'); +is($bibentries0->entry('l3')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L3 labelalpha'); +is($main0->get_extraalphadata('l3'), '2', 'maxnames=1 minnames=1 entry L3 extraalpha'); +is($bibentries0->entry('l4')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L4 labelalpha'); +is($main0->get_extraalphadata('l4'), '3', 'maxnames=1 minnames=1 entry L4 extraalpha'); +is($bibentries1->entry('l5')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L5 labelalpha'); +is($main1->get_extraalphadata('l5'), '1', 'maxnames=1 minnames=1 entry L5 extraalpha'); +is($bibentries1->entry('l6')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L6 labelalpha'); +is($main1->get_extraalphadata('l6'), '2', 'maxnames=1 minnames=1 entry L6 extraalpha'); +is($bibentries1->entry('l7')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=1 minnames=1 entry L7 labelalpha'); +is($main1->get_extraalphadata('l7'), '3', 'maxnames=1 minnames=1 entry L7 extraalpha'); +is($bibentries1->entry('l8')->get_field('sortlabelalpha'), 'Sha85', 'maxnames=1 minnames=1 entry L8 labelalpha'); +ok(is_undef($main1->get_extraalphadata('l8')), 'maxnames=1 minnames=1 entry L8 extraalpha'); + +# reset options and regenerate information +Biber::Config->setblxoption('maxnames', 2); +Biber::Config->setblxoption('minnames', 1); + +for (my $i=1; $i<5; $i++) { + $bibentries0->entry("l$i")->del_field('sortlabelalpha'); + $bibentries0->entry("l$i")->del_field('labelalpha'); + $main0->set_extraalphadata("l$i", undef); +} +for (my $i=5; $i<9; $i++) { + $bibentries1->entry("l$i")->del_field('sortlabelalpha'); + $bibentries1->entry("l$i")->del_field('labelalpha'); + $main1->set_extraalphadata("l$i", undef); +} +$biber->prepare; +$section0 = $biber->sections->get_section(0); +$bibentries0 = $section0->bibentries; +$main0 = $section0->get_list('MAIN'); +$section1 = $biber->sections->get_section(1); +$main1 = $section1->get_list('MAIN'); +$bibentries1 = $section1->bibentries; + +is($bibentries0->entry('l1')->get_field('sortlabelalpha'), 'Doe95', 'maxnames=2 minnames=1 entry L1 labelalpha'); +ok(is_undef($main0->get_extraalphadata('l1')), 'maxnames=2 minnames=1 entry L1 extraalpha'); +is($bibentries0->entry('l2')->get_field('sortlabelalpha'), 'DA95', 'maxnames=2 minnames=1 entry L2 labelalpha'); +is($main0->get_extraalphadata('l2'), '1', 'maxnames=2 minnames=1 entry L2 extraalpha'); +is($bibentries0->entry('l3')->get_field('sortlabelalpha'), 'DA95', 'maxnames=2 minnames=1 entry L3 labelalpha'); +is($main0->get_extraalphadata('l3'), '2', 'maxnames=2 minnames=1 entry L3 extraalpha'); +is($bibentries0->entry('l4')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=2 minnames=1 entry L4 labelalpha'); +ok(is_undef($main0->get_extraalphadata('l4')), 'maxnames=2 minnames=1 entry L4 extraalpha'); +is($bibentries1->entry('l5')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=2 minnames=1 entry L5 labelalpha'); +is($main1->get_extraalphadata('l5'), '1', 'maxnames=2 minnames=1 entry L5 extraalpha'); +is($bibentries1->entry('l6')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=2 minnames=1 entry L6 labelalpha'); +is($main1->get_extraalphadata('l6'), '2', 'maxnames=2 minnames=1 entry L6 extraalpha'); +is($bibentries1->entry('l7')->get_field('sortlabelalpha'), 'Doe+95', 'maxnames=2 minnames=1 entry L7 labelalpha'); +is($main1->get_extraalphadata('l7'), '3', 'maxnames=2 minnames=1 entry L7 extraalpha'); +is($bibentries1->entry('l8')->get_field('sortlabelalpha'), 'Sha85', 'maxnames=2 minnames=1 entry L8 labelalpha'); +ok(is_undef($main1->get_extraalphadata('l8')), 'maxnames=2 minnames=1 entry L8 extraalpha'); + +# reset options and regenerate information +Biber::Config->setblxoption('maxnames', 2); +Biber::Config->setblxoption('minnames', 2); + +for (my $i=1; $i<5; $i++) { + $bibentries0->entry("l$i")->del_field('sortlabelalpha'); + $bibentries0->entry("l$i")->del_field('labelalpha'); + $main0->set_extraalphadata("l$i", undef); +} +for (my $i=5; $i<9; $i++) { + $bibentries1->entry("l$i")->del_field('sortlabelalpha'); + $bibentries1->entry("l$i")->del_field('labelalpha'); + $main1->set_extraalphadata("l$i", undef); +} +$biber->prepare; +$section0 = $biber->sections->get_section(0); +$bibentries0 = $section0->bibentries; +$main0 = $section0->get_list('MAIN'); +$section1 = $biber->sections->get_section(1); +$main1 = $section1->get_list('MAIN'); +$bibentries1 = $section1->bibentries; + +is($bibentries0->entry('l1')->get_field('sortlabelalpha'), 'Doe95', 'maxnames=2 minnames=2 entry L1 labelalpha'); +ok(is_undef($main0->get_extraalphadata('l1')), 'maxnames=2 minnames=2 entry L1 extraalpha'); +is($bibentries0->entry('l2')->get_field('sortlabelalpha'), 'DA95', 'maxnames=2 minnames=2 entry L2 labelalpha'); +is($main0->get_extraalphadata('l2'), '1', 'maxnames=2 minnames=2 entry L2 extraalpha'); +is($bibentries0->entry('l3')->get_field('sortlabelalpha'), 'DA95', 'maxnames=2 minnames=2 entry L3 labelalpha'); +is($main0->get_extraalphadata('l3'), '2', 'maxnames=2 minnames=2 entry L3 extraalpha'); +is($bibentries0->entry('l4')->get_field('sortlabelalpha'), 'DA+95', 'maxnames=2 minnames=2 entry L4 labelalpha'); +ok(is_undef($main0->get_extraalphadata('l4')), 'maxnames=2 minnames=2 entry L4 extraalpha'); +is($bibentries1->entry('l5')->get_field('sortlabelalpha'), 'DA+95', 'maxnames=2 minnames=2 entry L5 labelalpha'); +ok(is_undef($main1->get_extraalphadata('l5')), 'maxnames=2 minnames=2 entry L5 extraalpha'); +is($bibentries1->entry('l6')->get_field('sortlabelalpha'), 'DS+95', 'maxnames=2 minnames=2 entry L6 labelalpha'); +is($main1->get_extraalphadata('l6'), '1', 'maxnames=2 minnames=2 entry L6 extraalpha'); +is($bibentries1->entry('l7')->get_field('sortlabelalpha'), 'DS+95', 'maxnames=2 minnames=2 entry L7 labelalpha'); +is($main1->get_extraalphadata('l7'), '2', 'maxnames=2 minnames=2 entry L7 extraalpha'); +is($bibentries1->entry('l8')->get_field('sortlabelalpha'), 'Sha85', 'maxnames=2 minnames=2 entry L8 labelalpha'); +ok(is_undef($main1->get_extraalphadata('l8')), 'maxnames=2 minnames=2 entry L8 extraalpha'); + +# reset options and regenerate information +Biber::Config->setblxoption('maxnames', 3); +Biber::Config->setblxoption('minnames', 1); + +for (my $i=1; $i<5; $i++) { + $bibentries0->entry("l$i")->del_field('sortlabelalpha'); + $bibentries0->entry("l$i")->del_field('labelalpha'); + $main0->set_extraalphadata("l$i", undef); +} +for (my $i=5; $i<9; $i++) { + $bibentries1->entry("l$i")->del_field('sortlabelalpha'); + $bibentries1->entry("l$i")->del_field('labelalpha'); + $main1->set_extraalphadata("l$i", undef); +} + +$biber->prepare; +$section0 = $biber->sections->get_section(0); +$bibentries0 = $section0->bibentries; +$main0 = $section0->get_list('MAIN'); +$section1 = $biber->sections->get_section(1); +$main1 = $section1->get_list('MAIN'); +$bibentries1 = $section1->bibentries; + +is($bibentries0->entry('l1')->get_field('sortlabelalpha'), 'Doe95', 'maxnames=3 minnames=1 entry L1 labelalpha'); +ok(is_undef($main0->get_extraalphadata('l1')), 'maxnames=3 minnames=1 entry L1 extraalpha'); +is($bibentries0->entry('l2')->get_field('sortlabelalpha'), 'DA95', 'maxnames=3 minnames=1 entry L2 labelalpha'); +is($main0->get_extraalphadata('l2'), '1', 'maxnames=3 minnames=1 entry L2 extraalpha'); +is($bibentries0->entry('l3')->get_field('sortlabelalpha'), 'DA95', 'maxnames=3 minnames=1 entry L3 labelalpha'); +is($main0->get_extraalphadata('l3'), '2', 'maxnames=3 minnames=1 entry L3 extraalpha'); +is($bibentries0->entry('l4')->get_field('sortlabelalpha'), 'DAE95', 'maxnames=3 minnames=1 entry L4 labelalpha'); +ok(is_undef($main0->get_extraalphadata('l4')), 'maxnames=3 minnames=1 entry L4 extraalpha'); +is($bibentries1->entry('l5')->get_field('sortlabelalpha'), 'DAE95', 'maxnames=3 minnames=1 entry L5 labelalpha'); +ok(is_undef($main1->get_extraalphadata('l5')), 'maxnames=3 minnames=1 entry L5 extraalpha'); +is($bibentries1->entry('l6')->get_field('sortlabelalpha'), 'DSE95', 'maxnames=3 minnames=1 entry L6 labelalpha'); +ok(is_undef($main1->get_extraalphadata('l6')), 'maxnames=3 minnames=1 entry L6 extraalpha'); +is($bibentries1->entry('l7')->get_field('sortlabelalpha'), 'DSJ95', 'maxnames=3 minnames=1 entry L7 labelalpha'); +ok(is_undef($main1->get_extraalphadata('l7')), 'maxnames=3 minnames=1 entry L7 extraalpha'); +is($bibentries1->entry('l8')->get_field('sortlabelalpha'), 'Sha85', 'maxnames=3 minnames=1 entry L8 labelalpha'); +ok(is_undef($main1->get_extraalphadata('l8')), 'maxnames=3 minnames=1 entry L8 extraalpha'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/16-encoding.t b/Master/texmf-dist/source/bibtex/biber/t/16-encoding.t new file mode 100755 index 00000000000..d1d76863ef2 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/16-encoding.t @@ -0,0 +1,322 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 10; + +use Biber; +use Biber::Utils; +use Biber::Output::Test; +use Encode; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('sortlocale', 'C'); + +my $encode1 = q| \entry{testÅ }{book}{} + \name{labelname}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \name{author}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{EE1} + \strng{fullhash}{EE1} + \field{labelalpha}{Enc99} + \field{sortinit}{E} + \field{labelyear}{1999} + \count{uniquename}{0} + \true{singletitle} + \field{title}{Å ome title} + \field{year}{1999} + \endentry + +|; + +my $encode2 = q| \entry{test1}{book}{} + \name{labelname}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \name{author}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{EE1} + \strng{fullhash}{EE1} + \field{labelalpha}{Enc99} + \field{sortinit}{E} + \field{labelyear}{1999} + \count{uniquename}{0} + \true{singletitle} + \field{title}{Söme title} + \field{year}{1999} + \endentry + +|; + +my $encode3 = q| \entry{test1}{book}{} + \name{labelname}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \name{author}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{EE1} + \strng{fullhash}{EE1} + \field{labelalpha}{Enc99} + \field{sortinit}{E} + \field{labelyear}{1999} + \count{uniquename}{0} + \true{singletitle} + \field{title}{Å»ome title} + \field{year}{1999} + \endentry + +|; + +my $encode5 = q| \entry{test}{book}{} + \name{labelname}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \name{author}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{EE1} + \strng{fullhash}{EE1} + \field{labelalpha}{Enc99} + \field{sortinit}{E} + \field{labelyear}{1999} + \count{uniquename}{0} + \true{singletitle} + \field{title}{à titlé} + \field{year}{1999} + \endentry + +|; + +my $encode6 = q| \entry{test}{book}{} + \name{labelname}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \name{author}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{EE1} + \strng{fullhash}{EE1} + \field{labelalpha}{Enc99} + \field{sortinit}{E} + \field{labelyear}{1999} + \count{uniquename}{0} + \true{singletitle} + \field{title}{↑\`{a} titl\'{e}} + \field{year}{1999} + \endentry + +|; + +my $encode7 = q| \entry{test}{book}{} + \name{labelname}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \name{author}{1}{% + {{Encalcer}{E}{Edward}{E}{}{}{}{}}% + } + \list{publisher}{1}{% + {A press}% + } + \strng{namehash}{EE1} + \strng{fullhash}{EE1} + \field{labelalpha}{Enc99} + \field{sortinit}{E} + \field{labelyear}{1999} + \count{uniquename}{0} + \true{singletitle} + \field{title}{{$\uparrow$}\`{a} titl\'{e}} + \field{year}{1999} + \endentry + +|; + + +my $outvar; +my $output; + +# Latin9 .bib -> UTF-8 .bbl +$biber->parse_ctrlfile('encoding1.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bibencoding', 'latin9'); +Biber::Config->setoption('bblencoding', 'UTF-8'); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +$output->output; +is($outvar, encode(Biber::Config->getoption('bblencoding'), $encode1), 'latin9 .bib -> UTF-8 .bbl'); + +# UTF-8 .bib -> UTF-8 .bbl +$biber->parse_ctrlfile('encoding2.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bibencoding', 'UTF-8'); +Biber::Config->setoption('bblencoding', 'UTF-8'); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +$output->output; +is($outvar, encode(Biber::Config->getoption('bblencoding'), $encode1), 'UTF-8 .bib -> UTF-8 .bbl'); + +# UTF-8 .bib -> latin1 .bbl +$biber->parse_ctrlfile('encoding5.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bibencoding', 'UTF-8'); +Biber::Config->setoption('bblencoding', 'latin1'); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +$output->output; +is($outvar, encode(Biber::Config->getoption('bblencoding'), $encode5), 'UTF-8 .bib -> latin1 .bbl'); + +# UTF-8 .bib -> UTF-8 with --bblsafechars +$biber->parse_ctrlfile('encoding6.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bibencoding', 'UTF-8'); +Biber::Config->setoption('bblencoding', 'UTF-8'); +Biber::Config->setoption('bblsafechars', 1); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +$output->output; +is($outvar, encode(Biber::Config->getoption('bblencoding'), $encode6), 'UTF-8 .bib -> UTF-8 .bbl, safechars'); + +# UTF-8 .bib -> UTF-8 with --bblsafechars and --bblcharsset=full +$biber->parse_ctrlfile('encoding6.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bibencoding', 'UTF-8'); +Biber::Config->setoption('bblencoding', 'UTF-8'); +Biber::Config->setoption('bblsafechars', 1); +Biber::Config->setoption('bblsafecharsset', 'full'); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +$output->output; +is($outvar, encode(Biber::Config->getoption('bblencoding'), $encode7), 'UTF-8 .bib -> UTF-8 .bbl, bblsafecharsset=full'); + +# UTF-8 .bib -> Latin9 .bbl +$biber->parse_ctrlfile('encoding2.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bblsafechars', 0); +Biber::Config->setoption('bibencoding', 'UTF-8'); +Biber::Config->setoption('bblencoding', 'latin9'); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +$output->output; +is($outvar, encode(Biber::Config->getoption('bblencoding'), $encode1), 'UTF-8 .bib -> latin9 .bbl'); + +# latin1 .bib -> cp1252 .bbl +$biber->parse_ctrlfile('encoding3.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bibencoding', 'latin1'); +Biber::Config->setoption('bblencoding', 'cp1252'); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +$output->output; +is($outvar, encode(Biber::Config->getoption('bblencoding'), $encode2), 'latin1 .bib -> CP1252 .bbl'); + +# latin2 .bib -> latin3 .bbl +$biber->parse_ctrlfile('encoding4.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bibencoding', 'latin2'); +Biber::Config->setoption('bblencoding', 'latin3'); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +$output->output; +is($outvar, encode(Biber::Config->getoption('bblencoding'), $encode3), 'latin2 .bib -> latin3 .bbl'); + +# latin2 .bib -> latin1 .bbl - should fail +$biber->parse_ctrlfile('encoding4.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bibencoding', 'latin2'); +Biber::Config->setoption('bblencoding', 'latin1'); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +# This test will generate encoding errors so redirect STDERR until it's done +open OLDERR, '>&', \*STDERR; +open STDERR, '>', '/dev/null'; +$output->output; +open STDERR, '>&', \*OLDERR; +isnt($outvar, encode(Biber::Config->getoption('bblencoding'), $encode3), 'latin2 .bib -> latin1 .bbl failure'); + +# Custom encoding alias +# latin1 .bib -> applemacce (MacRoman) .bbl +$biber->parse_ctrlfile('encoding3.bcf'); +$biber->set_output_obj(Biber::Output::Test->new()); +# Biber options +Biber::Config->setoption('bibencoding', 'latin1'); +Biber::Config->setoption('bblencoding', 'applemacce'); +# Now generate the information +$biber->prepare; +# Get reference to output object +$output = $biber->get_output_obj; +$output->set_output_target_file(\$outvar); +# Write the output to the target +$output->output; +is($outvar, encode(Biber::Config->getoption('bblencoding'), $encode2), 'latin1 .bib -> applemacce (custom alias) .bbl'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/17-crossrefs.t b/Master/texmf-dist/source/bibtex/biber/t/17-crossrefs.t new file mode 100755 index 00000000000..3f5574b372f --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/17-crossrefs.t @@ -0,0 +1,434 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 20; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('crossrefs.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); + +# Now generate the information +$biber->prepare; +my $section0 = $biber->sections->get_section(0); +my $main0 = $section0->get_list('MAIN'); +my $section1 = $biber->sections->get_section(1); +my $main1 = $section1->get_list('MAIN'); +my $out = $biber->get_output_obj; + +# crossref field is included as the parent is included by being crossrefed >= mincrossrefs times +my $cr1 = q| \entry{cr1}{inbook}{} + \name{labelname}{1}{% + {{Gullam}{G.}{Graham}{G.}{}{}{}{}}% + } + \name{author}{1}{% + {{Gullam}{G.}{Graham}{G.}{}{}{}{}}% + } + \name{editor}{1}{% + {{Erbriss}{E.}{Edgar}{E.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Grimble}% + } + \strng{namehash}{GG1} + \strng{fullhash}{GG1} + \field{sortinit}{G} + \field{labelyear}{1974} + \field{booktitle}{Graphs of the Continent} + \strng{crossref}{crm} + \field{eprintclass}{SOMECLASS} + \field{eprinttype}{SomEPrFiX} + \field{origyear}{1955} + \field{title}{Great and Good Graphs} + \field{year}{1974} + \endentry + +|; + +# crossref field is included as the parent is included by being crossrefed >= mincrossrefs times +my $cr2 = q| \entry{cr2}{inbook}{} + \name{labelname}{1}{% + {{Fumble}{F.}{Frederick}{F.}{}{}{}{}}% + } + \name{author}{1}{% + {{Fumble}{F.}{Frederick}{F.}{}{}{}{}}% + } + \name{editor}{1}{% + {{Erbriss}{E.}{Edgar}{E.}{}{}{}{}}% + } + \list{institution}{1}{% + {Institution}% + } + \list{publisher}{1}{% + {Grimble}% + } + \strng{namehash}{FF1} + \strng{fullhash}{FF1} + \field{sortinit}{F} + \field{labelyear}{1974} + \field{booktitle}{Graphs of the Continent} + \strng{crossref}{crm} + \field{origyear}{1943} + \field{title}{Fabulous Fourier Forms} + \field{year}{1974} + \warn{\item Field 'school' is aliased to field 'institution' but both are defined in entry with key 'cr2' - skipping field 'school'} + \endentry + +|; + +# This is included as it is crossrefed >= mincrossrefs times +# Notice lack of labelname and hashes because the only name is EDITOR and useeditor is false +my $crm = q| \entry{crm}{book}{} + \name{editor}{1}{% + {{Erbriss}{E.}{Edgar}{E.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Grimble}% + } + \strng{namehash}{1} + \strng{fullhash}{1} + \field{sortinit}{G} + \field{labelyear}{1974} + \field{title}{Graphs of the Continent} + \field{year}{1974} + \endentry + +|; + +# crossref field is included as the parent is cited +my $cr3 = q| \entry{cr3}{inbook}{} + \name{labelname}{1}{% + {{Aptitude}{A.}{Arthur}{A.}{}{}{}{}}% + } + \name{author}{1}{% + {{Aptitude}{A.}{Arthur}{A.}{}{}{}{}}% + } + \name{editor}{1}{% + {{Monkley}{M.}{Mark}{M.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Rancour}% + } + \strng{namehash}{AA1} + \strng{fullhash}{AA1} + \field{sortinit}{A} + \field{labelyear}{1996} + \field{booktitle}{Beasts of the Burbling Burns} + \strng{crossref}{crt} + \field{eprinttype}{sometype} + \field{origyear}{1934} + \field{title}{Arrangements of All Articles} + \field{year}{1996} + \warn{\item Field 'archiveprefix' is aliased to field 'eprinttype' but both are defined in entry with key 'cr3' - skipping field 'archiveprefix'} + \endentry + +|; + +# cited as normal +my $crt = q| \entry{crt}{book}{} + \name{editor}{1}{% + {{Monkley}{M.}{Mark}{M.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Rancour}% + } + \strng{namehash}{1} + \strng{fullhash}{1} + \field{sortinit}{B} + \field{labelyear}{1996} + \field{title}{Beasts of the Burbling Burns} + \field{year}{1996} + \endentry + +|; + +# various event fields inherited correctly +my $cr6 = q| \entry{cr6}{inproceedings}{} + \name{labelname}{1}{% + {{Author}{A.}{Firstname}{F.}{}{}{}{}}% + } + \name{author}{1}{% + {{Author}{A.}{Firstname}{F.}{}{}{}{}}% + } + \name{editor}{1}{% + {{Editor}{E.}{}{}{}{}{}{}}% + } + \list{location}{1}{% + {Address}% + } + \strng{namehash}{AF1} + \strng{fullhash}{AF1} + \field{sortinit}{A} + \field{labelyear}{2009} + \field{booktitle}{Manual booktitle} + \field{eventday}{21} + \field{eventendday}{24} + \field{eventendmonth}{08} + \field{eventendyear}{2009} + \field{eventmonth}{08} + \field{eventtitle}{Title of the event} + \field{eventyear}{2009} + \field{title}{Title of inproceeding} + \field{venue}{Location of event} + \field{year}{2009} + \field{pages}{123\bibrangedash} + \endentry + +|; + +# Special fields inherited correctly +my $cr7 = q| \entry{cr7}{inbook}{} + \name{labelname}{1}{% + {{Author}{A.}{Firstname}{F.}{}{}{}{}}% + } + \name{author}{1}{% + {{Author}{A.}{Firstname}{F.}{}{}{}{}}% + } + \name{bookauthor}{1}{% + {{Bookauthor}{B.}{Brian}{B.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Publisher of proceeding}% + } + \strng{namehash}{AF1} + \strng{fullhash}{AF1} + \field{sortinit}{A} + \field{labelyear}{2010} + \field{booksubtitle}{Book Subtitle} + \field{booktitle}{Book Title} + \field{booktitleaddon}{Book Titleaddon} + \field{title}{Title of Book bit} + \field{year}{2010} + \field{pages}{123\bibrangedash 126} + \verb{verbb} + \verb String + \endverb + \endentry + +|; + +# Default inheritance supressed except for specified +my $cr8 = q| \entry{cr8}{incollection}{} + \name{labelname}{1}{% + {{Smith}{S.}{Firstname}{F.}{}{}{}{}}% + } + \name{author}{1}{% + {{Smith}{S.}{Firstname}{F.}{}{}{}{}}% + } + \strng{namehash}{SF1} + \strng{fullhash}{SF1} + \field{sortinit}{S} + \field{labelyear}{2010} + \field{booktitle}{Book Title} + \field{title}{Title of Collection bit} + \field{year}{2010} + \field{pages}{1\bibrangedash 12} + \endentry + +|; + +# xref field is included as the parent is included by being crossrefed >= mincrossrefs times +my $xr1 = q| \entry{xr1}{inbook}{} + \name{labelname}{1}{% + {{Zentrum}{Z.}{Zoe}{Z.}{}{}{}{}}% + } + \name{author}{1}{% + {{Zentrum}{Z.}{Zoe}{Z.}{}{}{}{}}% + } + \strng{namehash}{ZZ1} + \strng{fullhash}{ZZ1} + \field{sortinit}{Z} + \field{origyear}{1921} + \field{title}{Moods Mildly Modified} + \strng{xref}{xrm} + \endentry + +|; + +# xref field is included as the parent is included by being crossrefed >= mincrossrefs times +my $xr2 = q| \entry{xr2}{inbook}{} + \name{labelname}{1}{% + {{Instant}{I.}{Ian}{I.}{}{}{}{}}% + } + \name{author}{1}{% + {{Instant}{I.}{Ian}{I.}{}{}{}{}}% + } + \strng{namehash}{II1} + \strng{fullhash}{II1} + \field{sortinit}{I} + \field{origyear}{1926} + \field{title}{Migraines Multiplying Madly} + \strng{xref}{xrm} + \endentry + +|; + +# This is included as it is crossrefed >= mincrossrefs times +# Notice lack of labelname and hashes because the only name is EDITOR and useeditor is false +my $xrm = q| \entry{xrm}{book}{} + \name{editor}{1}{% + {{Prendergast}{P.}{Peter}{P.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Mainstream}% + } + \strng{namehash}{1} + \strng{fullhash}{1} + \field{sortinit}{C} + \field{labelyear}{1970} + \field{title}{Calligraphy, Calisthenics, Culture} + \field{year}{1970} + \endentry + +|; + +# xref field is included as the parent is cited +my $xr3 = q| \entry{xr3}{inbook}{} + \name{labelname}{1}{% + {{Normal}{N.}{Norman}{N.}{}{}{}{}}% + } + \name{author}{1}{% + {{Normal}{N.}{Norman}{N.}{}{}{}{}}% + } + \strng{namehash}{NN1} + \strng{fullhash}{NN1} + \field{sortinit}{N} + \field{origyear}{1923} + \field{title}{Russion Regalia Revisited} + \strng{xref}{xrt} + \endentry + +|; + +# cited as normal +my $xrt = q| \entry{xrt}{book}{} + \name{editor}{1}{% + {{Lunders}{L.}{Lucy}{L.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Middling}% + } + \strng{namehash}{1} + \strng{fullhash}{1} + \field{sortinit}{K} + \field{labelyear}{1977} + \field{title}{Kings, Cork and Calculation} + \field{year}{1977} + \endentry + +|; + +# No crossref field as parent is not cited (mincrossrefs < 2) +my $cr4 = q| \entry{cr4}{inbook}{} + \name{labelname}{1}{% + {{Mumble}{M.}{Morris}{M.}{}{}{}{}}% + } + \name{author}{1}{% + {{Mumble}{M.}{Morris}{M.}{}{}{}{}}% + } + \name{editor}{1}{% + {{Jermain}{J.}{Jeremy}{J.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Pillsbury}% + } + \strng{namehash}{MM1} + \strng{fullhash}{MM1} + \field{sortinit}{M} + \field{labelyear}{1945} + \field{booktitle}{Vanquished, Victor, Vandal} + \field{origyear}{1911} + \field{title}{Enterprising Entities} + \field{year}{1945} + \endentry + +|; + +# No crossref field as parent is not cited (mincrossrefs < 2) +my $xr4 = q| \entry{xr4}{inbook}{} + \name{labelname}{1}{% + {{Mistrel}{M.}{Megan}{M.}{}{}{}{}}% + } + \name{author}{1}{% + {{Mistrel}{M.}{Megan}{M.}{}{}{}{}}% + } + \strng{namehash}{MM2} + \strng{fullhash}{MM2} + \field{sortinit}{M} + \field{origyear}{1933} + \field{title}{Lumbering Lunatics} + \endentry + +|; + +# Missing keys in xref/crossref should be deleted during datasource parse +# So these two should have no xref/crossref data in them +my $mxr = q| \entry{mxr}{inbook}{} + \name{labelname}{1}{% + {{Mistrel}{M.}{Megan}{M.}{}{}{}{}}% + } + \name{author}{1}{% + {{Mistrel}{M.}{Megan}{M.}{}{}{}{}}% + } + \strng{namehash}{MM2} + \strng{fullhash}{MM2} + \field{sortinit}{M} + \field{origyear}{1933} + \field{title}{Lumbering Lunatics} + \endentry + +|; + +my $mcr = q| \entry{mcr}{inbook}{} + \name{labelname}{1}{% + {{Mistrel}{M.}{Megan}{M.}{}{}{}{}}% + } + \name{author}{1}{% + {{Mistrel}{M.}{Megan}{M.}{}{}{}{}}% + } + \strng{namehash}{MM2} + \strng{fullhash}{MM2} + \field{sortinit}{M} + \field{origyear}{1933} + \field{title}{Lumbering Lunatics} + \endentry + +|; + + +is($out->get_output_entry($main0,'cr1'), $cr1, 'crossref test 1'); +is($out->get_output_entry($main0,'cr2'), $cr2, 'crossref test 2'); +is($out->get_output_entry($main0,'crm'), $crm, 'crossref test 3'); +is($out->get_output_entry($main0,'cr3'), $cr3, 'crossref test 4'); +is($out->get_output_entry($main0,'crt'), $crt, 'crossref test 5'); +is($out->get_output_entry($main0,'cr4'), $cr4, 'crossref test 6'); +is($section0->has_citekey('crn'), 0,'crossref test 7'); +is($out->get_output_entry($main0,'cr6'), $cr6, 'crossref test (inheritance) 8'); +is($out->get_output_entry($main0,'cr7'), $cr7, 'crossref test (inheritance) 9'); +is($out->get_output_entry($main0,'cr8'), $cr8, 'crossref test (inheritance) 10'); +is($out->get_output_entry($main0,'xr1'), $xr1, 'xref test 1'); +is($out->get_output_entry($main0,'xr2'), $xr2, 'xref test 2'); +is($out->get_output_entry($main0,'xrm'), $xrm, 'xref test 3'); +is($out->get_output_entry($main0,'xr3'), $xr3, 'xref test 4'); +is($out->get_output_entry($main0,'xrt'), $xrt, 'xref test 5'); +is($out->get_output_entry($main0,'xr4'), $xr4, 'xref test 6'); +is($section0->has_citekey('xrn'), 0,'xref test 7'); +is($out->get_output_entry($main0,'mxr'), $mxr, 'missing xref test'); +is($out->get_output_entry($main0,'mcr'), $mcr, 'missing crossef test'); +is($section1->has_citekey('crn'), 0,'mincrossrefs reset between sections'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/18-bibtex-aliases.t b/Master/texmf-dist/source/bibtex/biber/t/18-bibtex-aliases.t new file mode 100755 index 00000000000..38b3f0230fb --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/18-bibtex-aliases.t @@ -0,0 +1,45 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 7; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('bibtex-aliases.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('validate_structure', 1); + +# Now generate the information +$biber->prepare; + +my $section = $biber->sections->get_section(0); +my $bibentries = $section->bibentries; + +my $w1 = ["Field 'school' is aliased to field 'institution' but both are defined in entry with key 'alias2' - skipping field 'school'", + "Entry 'alias2' - invalid entry type 'thing' - defaulting to 'misc'", + "Entry 'alias2' - invalid field 'institution' for entrytype 'misc'" +]; + +is($bibentries->entry('alias1')->get_field('entrytype'), 'thesis', 'Alias - 1' ); +is($bibentries->entry('alias1')->get_field('type'), 'phdthesis', 'Alias - 2' ); +is_deeply($bibentries->entry('alias1')->get_field('location'), ['Ivory Towers'], 'Alias - 3' ); +is($bibentries->entry('alias1')->get_field('address'), undef, 'Alias - 4' ); +is($bibentries->entry('alias2')->get_field('entrytype'), 'misc', 'Alias - 5' ); +is_deeply($bibentries->entry('alias2')->get_field('warnings'), $w1, 'Alias - 6' ) ; +is($bibentries->entry('alias2')->get_field('school'), undef, 'Alias - 7' ); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/18-structure-constraints.t b/Master/texmf-dist/source/bibtex/biber/t/18-structure-constraints.t new file mode 100755 index 00000000000..a98a95cab8e --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/18-structure-constraints.t @@ -0,0 +1,68 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 14; + +use Biber; +use Biber::Output::BBL; +use Biber::Utils; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('structure-constraints.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('validate_structure', 1); + +# Now generate the information +$biber->prepare; + +my $section = $biber->sections->get_section(0); +my $bibentries = $section->bibentries; + +my $c1 = [ "Entry 'c1' - invalid entry type 'badtype' - defaulting to 'misc'" ]; +my $c2 = [ "Entry 'c2' - invalid field 'badfield' for entrytype 'eta'", + "Entry 'c2' - invalid field 'journaltitle' for entrytype 'eta'", + "Missing mandatory field 'author' in entry 'c2'" ]; +my $c3 = [ "Invalid format (integer) of field 'month' - ignoring field in entry 'c3'" ]; +my $c4 = [ "Invalid value of field 'month' must be '<=12' - ignoring field in entry 'c4'", + "Invalid value of field 'field1' must be '>=5' - ignoring field in entry 'c4'" ]; +# There would also have been a date+year constraint violation in the next test if +# it weren't for the fact that the date processing in bibtex.pm already deals with this +# and removed the year field +my $c5 = [ "Overwriting field 'year' with year value from field 'date' for entry 'c5'", + "Constraint violation - none of fields (field5, field6) must exist when all of fields (field2, field3, field4) exist. Ignoring them." ]; +my $c6 = [ "Constraint violation - one of fields (field7, field8) must exist when all of fields (field1, field2) exist", + "Constraint violation - all of fields (field9, field10) must exist when all of fields (field5, field6) exist" ]; +my $c7 = [ "Missing mandatory field - one of 'fielda, fieldb' must be defined in entry 'c7'", + "Constraint violation - none of fields (field7) must exist when one of fields (field5, field6) exist. Ignoring them."]; +my $c8 = [ "Constraint violation - none of fields (field4) must exist when none of fields (field2, field3) exist. Ignoring them.", + "Constraint violation - one of fields (field10, field11) must exist when none of fields (field8, field9) exist", + "Constraint violation - all of fields (field12, field13) must exist when none of fields (field6) exist" ]; + +is_deeply($bibentries->entry('c1')->get_field('warnings'), $c1, 'Constraints test 1' ); +is_deeply($bibentries->entry('c2')->get_field('warnings'), $c2, 'Constraints test 2' ); +is_deeply($bibentries->entry('c3')->get_field('warnings'), $c3, 'Constraints test 3a' ); +ok(is_undef($bibentries->entry('c3')->get_field('month')), 'Constraints test 3b' ); +is_deeply($bibentries->entry('c4')->get_field('warnings'), $c4, 'Constraints test 4a' ); +ok(is_undef($bibentries->entry('c4')->get_field('month')), 'Constraints test 4b' ); +is_deeply($bibentries->entry('c5')->get_field('warnings'), $c5, 'Constraints test 5a' ); +ok(is_undef($bibentries->entry('c5')->get_field('field5')), 'Constraints test 5b' ); +ok(is_undef($bibentries->entry('c5')->get_field('field6')), 'Constraints test 5c' ); +is_deeply($bibentries->entry('c6')->get_field('warnings'), $c6, 'Constraints test 6' ); +is_deeply($bibentries->entry('c7')->get_field('warnings'), $c7, 'Constraints test 7a' ); +ok(is_undef($bibentries->entry('c7')->get_field('field7')), 'Constraints test 7b' ); +is_deeply($bibentries->entry('c8')->get_field('warnings'), $c8, 'Constraints test 8a' ); +ok(is_undef($bibentries->entry('c8')->get_field('field4')), 'Constraints test 8b' ); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/18-structure-dateformats.t b/Master/texmf-dist/source/bibtex/biber/t/18-structure-dateformats.t new file mode 100755 index 00000000000..1d4e425de45 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/18-structure-dateformats.t @@ -0,0 +1,328 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 31; + +use Biber; +use Biber::Output::BBL; +use Biber::Utils; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata"); + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('structure-dateformats.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); +Biber::Config->setoption('sortlocale', 'C'); +Biber::Config->setoption('validate_structure', 1); + +# Biblatex options +Biber::Config->setblxoption('labelyearspec', [ 'year' ]); + +# Now generate the information +$biber->prepare; +my $out = $biber->get_output_obj; +my $section = $biber->sections->get_section(0); +my $main = $section->get_list('MAIN'); +my $bibentries = $section->bibentries; +my $l1 = [ "Invalid format '1985-1030' of date field 'origdate' in entry 'L1' - ignoring", + "Invalid format '1.5.1998' of date field 'urldate' in entry 'L1' - ignoring", + "Invalid date value 'YYYY/14/DD' - ignoring its components in entry 'L1'" ]; +my $l2 = [ "Invalid format '1995-1230' of date field 'origdate' in entry 'L2' - ignoring" ]; +my $l3 = [ "Invalid format '1.5.1988' of date field 'urldate' in entry 'L3' - ignoring" ]; +my $l4 = [ "Invalid format '1995-1-04' of date field 'date' in entry 'L4' - ignoring", + "Missing mandatory field - one of 'date, year' must be defined in entry 'L4'" ]; +my $l5 = [ "Invalid format '1995-10-4' of date field 'date' in entry 'L5' - ignoring", + "Missing mandatory field - one of 'date, year' must be defined in entry 'L5'" ]; +my $l6 = [ "Invalid date value '1996/13/03' - ignoring its components in entry 'L6'" ]; +my $l7 = [ "Invalid date value '1996/10/35' - ignoring its components in entry 'L7'" ]; +my $l11 = [ "Overwriting field 'year' with year value from field 'date' for entry 'L11'"]; +my $l12 = [ "Overwriting field 'month' with month value from field 'date' for entry 'L12'" ]; + +my $l13c = q| \entry{L13}{book}{} + \name{labelname}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \name{author}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Oxford}% + } + \strng{namehash}{DJAA1} + \strng{fullhash}{DJAA1} + \field{sortinit}{D} + \field{extrayear}{3} + \field{labelyear}{1996} + \field{day}{01} + \field{endyear}{} + \field{month}{01} + \field{title}{Title 2} + \field{year}{1996} + \endentry + +|; + +my $l14 = q| \entry{L14}{book}{} + \name{labelname}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \name{author}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Oxford}% + } + \strng{namehash}{DJAA1} + \strng{fullhash}{DJAA1} + \field{sortinit}{D} + \field{extrayear}{4} + \field{labelyear}{1996} + \field{day}{10} + \field{endday}{12} + \field{endmonth}{12} + \field{endyear}{1996} + \field{month}{12} + \field{title}{Title 2} + \field{year}{1996} + \endentry + +|; + +my $l15 = q| \entry{L15}{book}{} + \name{labelname}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \name{author}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Oxford}% + } + \strng{namehash}{DJAA1} + \strng{fullhash}{DJAA1} + \field{sortinit}{D} + \field{title}{Title 2} + \warn{\item Missing mandatory field - one of 'date, year' must be defined in entry 'L15'} + \endentry + +|; + +my $l16 = q| \entry{L16}{proceedings}{} + \name{labelname}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \name{editor}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Oxford}% + } + \strng{namehash}{DJAA1} + \strng{fullhash}{DJAA1} + \field{sortinit}{D} + \field{extrayear}{6} + \field{labelyear}{1996} + \field{eventday}{01} + \field{eventmonth}{01} + \field{eventyear}{1996} + \field{title}{Title 2} + \warn{\item Missing mandatory field - one of 'date, year' must be defined in entry 'L16'} + \endentry + +|; + +my $l17 = q| \entry{L17}{proceedings}{} + \name{labelname}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \name{editor}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Oxford}% + } + \strng{namehash}{DJAA1} + \strng{fullhash}{DJAA1} + \field{sortinit}{D} + \field{extrayear}{5} + \field{labelyear}{1996} + \field{day}{10} + \field{endday}{12} + \field{endmonth}{12} + \field{endyear}{1996} + \field{eventday}{10} + \field{eventendday}{12} + \field{eventendmonth}{12} + \field{eventendyear}{2004} + \field{eventmonth}{12} + \field{eventyear}{1998} + \field{month}{12} + \field{origday}{10} + \field{origendday}{12} + \field{origendmonth}{12} + \field{origendyear}{1998} + \field{origmonth}{12} + \field{origyear}{1998} + \field{title}{Title 2} + \field{year}{1996} + \endentry + +|; + +my $l17c = q| \entry{L17}{proceedings}{} + \name{labelname}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \name{editor}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Oxford}% + } + \strng{namehash}{DJAA1} + \strng{fullhash}{DJAA1} + \field{sortinit}{D} + \field{labelyear}{1998} + \field{day}{10} + \field{endday}{12} + \field{endmonth}{12} + \field{endyear}{1996} + \field{eventday}{10} + \field{eventendday}{12} + \field{eventendmonth}{12} + \field{eventendyear}{2004} + \field{eventmonth}{12} + \field{eventyear}{1998} + \field{month}{12} + \field{origday}{10} + \field{origendday}{12} + \field{origendmonth}{12} + \field{origendyear}{1998} + \field{origmonth}{12} + \field{origyear}{1998} + \field{title}{Title 2} + \field{year}{1996} + \endentry + +|; + +my $l17e = q| \entry{L17}{proceedings}{} + \name{labelname}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \name{editor}{2}{% + {{Doe}{D.}{John}{J.}{}{}{}{}}% + {{Abrahams}{A.}{Albert}{A.}{}{}{}{}}% + } + \list{publisher}{1}{% + {Oxford}% + } + \strng{namehash}{DJAA1} + \strng{fullhash}{DJAA1} + \field{sortinit}{D} + \field{labelyear}{1998\bibdatedash 2004} + \field{day}{10} + \field{endday}{12} + \field{endmonth}{12} + \field{endyear}{1996} + \field{eventday}{10} + \field{eventendday}{12} + \field{eventendmonth}{12} + \field{eventendyear}{2004} + \field{eventmonth}{12} + \field{eventyear}{1998} + \field{month}{12} + \field{origday}{10} + \field{origendday}{12} + \field{origendmonth}{12} + \field{origendyear}{1998} + \field{origmonth}{12} + \field{origyear}{1998} + \field{title}{Title 2} + \field{year}{1996} + \endentry + +|; + +is_deeply($bibentries->entry('l1')->get_field('warnings'), $l1, 'Date values test 1' ) ; +ok(is_undef($bibentries->entry('l1')->get_field('origyear')), 'Date values test 1a - ORIGYEAR undef since ORIGDATE is bad' ) ; +ok(is_undef($bibentries->entry('l1')->get_field('urlyear')), 'Date values test 1b - URLYEAR undef since URLDATE is bad' ) ; +ok(is_undef($bibentries->entry('l1')->get_field('month')), 'Date values test 1c - MONTH undef since not integer' ) ; +is_deeply($bibentries->entry('l2')->get_field('warnings'), $l2, 'Date values test 2' ) ; +is_deeply($bibentries->entry('l3')->get_field('warnings'), $l3, 'Date values test 3' ) ; +is_deeply($bibentries->entry('l4')->get_field('warnings'), $l4, 'Date values test 4' ) ; +is_deeply($bibentries->entry('l5')->get_field('warnings'), $l5, 'Date values test 5' ) ; +is_deeply($bibentries->entry('l6')->get_field('warnings'), $l6, 'Date values test 6' ) ; +is_deeply($bibentries->entry('l7')->get_field('warnings'), $l7, 'Date values test 7' ) ; +is($bibentries->entry('l8')->get_field('month'), '01', 'Date values test 8b - MONTH hacked to integer' ) ; +ok(is_undef($bibentries->entry('l9')->get_field('warnings')), 'Date values test 9' ) ; +ok(is_undef($bibentries->entry('l10')->get_field('warnings')), 'Date values test 10' ) ; +is_deeply($bibentries->entry('l11')->get_field('warnings'), $l11, 'Date values test 11' ); +is($bibentries->entry('l11')->get_field('year'), '1996', 'Date values test 11a - DATE overrides YEAR' ) ; +is_deeply($bibentries->entry('l12')->get_field('warnings'), $l12, 'Date values test 12' ); +is($bibentries->entry('l12')->get_field('month'), '01', 'Date values test 12a - DATE overrides MONTH' ) ; +# it means something if endyear is defined but null ("1935-") +ok(is_def_and_null($bibentries->entry('l13')->get_field('endyear')), 'Date values test 13 - range with no end' ) ; +ok(is_undef($bibentries->entry('l13')->get_field('endmonth')), 'Date values test 13a - ENDMONTH undef for open-ended range' ) ; +ok(is_undef($bibentries->entry('l13')->get_field('endday')), 'Date values test 13b - ENDDAY undef for open-ended range' ) ; +is( $out->get_output_entry($main,'l13'), $l13c, 'Date values test 13c - labelyear open-ended range' ) ; +is( $out->get_output_entry($main,'l14'), $l14, 'Date values test 14 - labelyear same as YEAR when ENDYEAR == YEAR') ; +is( $out->get_output_entry($main,'l15'), $l15, 'Date values test 15 - labelyear should be undef, no DATE or YEAR') ; + +# reset options and regenerate information +Biber::Config->setblxoption('labelyearspec', [ 'year', 'eventyear', 'origyear' ]); +$bibentries->entry('l17')->del_field('year'); +$bibentries->entry('l17')->del_field('month'); +$bibentries->entry('l16')->del_field('warnings'); +$biber->prepare; +$out = $biber->get_output_obj; + +is($bibentries->entry('l16')->get_field('labelyearname'), 'eventyear', 'Date values test 16 - labelyearname = eventyear when YEAR is (mistakenly) missing' ) ; +is($out->get_output_entry($main,'l16'), $l16, 'Date values test 16a - labelyear = EVENTYEAR value when YEAR is (mistakenly) missing' ); +is($bibentries->entry('l17')->get_field('labelyearname'), 'year', 'Date values test 17 - labelyearname = YEAR' ) ; +is($out->get_output_entry($main,'l17'), $l17, 'Date values test 17a - labelyear = YEAR value when ENDYEAR is the same and ORIGYEAR is also present' ) ; + +# reset options and regenerate information +Biber::Config->setblxoption('labelyearspec', [ 'origyear', 'year', 'eventyear' ]); +$bibentries->entry('l17')->del_field('year'); +$bibentries->entry('l17')->del_field('month'); +$biber->prepare; +$out = $biber->get_output_obj; + +is($bibentries->entry('l17')->get_field('labelyearname'), 'origyear', 'Date values test 17b - labelyearname = ORIGYEAR' ) ; +is($out->get_output_entry($main,'l17'), $l17c, 'Date values test 17c - labelyear = ORIGYEAR value when ENDORIGYEAR is the same and YEAR is also present' ) ; + +# reset options and regenerate information +Biber::Config->setblxoption('labelyearspec', [ 'eventyear', 'year', 'origyear' ], 'PER_TYPE', 'proceedings'); +$bibentries->entry('l17')->del_field('year'); +$bibentries->entry('l17')->del_field('month'); +$biber->prepare; +$out = $biber->get_output_obj; + +is($bibentries->entry('l17')->get_field('labelyearname'), 'eventyear', 'Date values test 17d - labelyearname = EVENTYEAR' ) ; +is($out->get_output_entry($main,'l17'), $l17e, 'Date values test 17e - labelyear = ORIGYEAR-ORIGENDYEAR' ) ; + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/19-related-entries.t b/Master/texmf-dist/source/bibtex/biber/t/19-related-entries.t new file mode 100755 index 00000000000..6c0d312f8ed --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/19-related-entries.t @@ -0,0 +1,223 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 9; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('related.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests + +# Biber options +Biber::Config->setoption('fastsort', 1); + +# Now generate the information +$biber->prepare; +my $out = $biber->get_output_obj; +my $section = $biber->sections->get_section(0); +my $shs = $section->get_list('SHORTHANDS'); +my $main = $section->get_list('MAIN'); +my $bibentries = $section->bibentries; + +my $k1 = q| \entry{key1}{article}{} + \name{labelname}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \strng{namehash}{A1} + \strng{fullhash}{A1} + \field{sortinit}{0} + \field{labelyear}{1998} + \field{journaltitle}{Journal Title} + \field{number}{5} + \field{related}{78f825aaa0103319aaa1a30bf4fe3ada,3631578538a2d6ba5879b31a9a42f290,caf8e34be07426ae7127c1b4829983c1} + \field{relatedtype}{reprintas} + \field{shorthand}{RK1} + \field{title}{Original Title} + \field{volume}{12} + \field{year}{1998} + \field{pages}{125\bibrangedash 150} + \endentry + +|; + +my $k2 = q| \entry{key2}{inbook}{} + \name{labelname}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \list{location}{1}{% + {Location}% + } + \list{publisher}{1}{% + {Publisher}% + } + \strng{namehash}{A1} + \strng{fullhash}{A1} + \field{sortinit}{0} + \field{labelyear}{2009} + \field{booktitle}{Booktitle} + \field{related}{c2add694bf942dc77b376592d9c862cd} + \field{relatedstring}{First} + \field{relatedtype}{reprintof} + \field{shorthand}{RK2} + \field{title}{Reprint Title} + \field{year}{2009} + \field{pages}{34\bibrangedash 60} + \endentry + +|; + +my $k3 = q| \entry{key3}{inbook}{} + \name{labelname}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \list{location}{1}{% + {Location}% + } + \list{publisher}{1}{% + {Publisher2}% + } + \strng{namehash}{A1} + \strng{fullhash}{A1} + \field{sortinit}{0} + \field{labelyear}{2010} + \field{booktitle}{Booktitle} + \field{related}{c2add694bf942dc77b376592d9c862cd} + \field{relatedstring}{Second} + \field{relatedtype}{reprintof} + \field{shorthand}{RK3} + \field{title}{Reprint Title} + \field{year}{2010} + \field{pages}{33\bibrangedash 57} + \endentry + +|; + +my $kck1 = q| \entry{c2add694bf942dc77b376592d9c862cd}{article}{dataonly} + \name{labelname}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \strng{namehash}{A1} + \strng{fullhash}{A1} + \field{sortinit}{0} + \field{journaltitle}{Journal Title} + \field{number}{5} + \field{shorthand}{RK1} + \field{title}{Original Title} + \field{volume}{12} + \field{year}{1998} + \field{pages}{125\bibrangedash 150} + \endentry + +|; + +my $kck2 = q| \entry{78f825aaa0103319aaa1a30bf4fe3ada}{inbook}{dataonly} + \name{labelname}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \list{location}{1}{% + {Location}% + } + \list{publisher}{1}{% + {Publisher}% + } + \strng{namehash}{A1} + \strng{fullhash}{A1} + \field{sortinit}{0} + \field{booktitle}{Booktitle} + \field{shorthand}{RK2} + \field{title}{Reprint Title} + \field{year}{2009} + \field{pages}{34\bibrangedash 60} + \endentry + +|; + +my $kck3 = q| \entry{3631578538a2d6ba5879b31a9a42f290}{inbook}{dataonly} + \name{labelname}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \list{location}{1}{% + {Location}% + } + \list{publisher}{1}{% + {Publisher2}% + } + \strng{namehash}{A1} + \strng{fullhash}{A1} + \field{sortinit}{0} + \field{booktitle}{Booktitle} + \field{shorthand}{RK3} + \field{title}{Reprint Title} + \field{year}{2010} + \field{pages}{33\bibrangedash 57} + \endentry + +|; + +my $kck4 = q| \entry{caf8e34be07426ae7127c1b4829983c1}{inbook}{dataonly} + \name{labelname}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \name{author}{1}{% + {{Author}{A.}{}{}{}{}{}{}}% + } + \list{location}{1}{% + {Location}% + } + \list{publisher}{1}{% + {Publisher2}% + } + \strng{namehash}{A1} + \strng{fullhash}{A1} + \field{sortinit}{0} + \field{booktitle}{Booktitle} + \field{shorthand}{RK4} + \field{title}{Reprint Title} + \field{year}{2011} + \field{pages}{33\bibrangedash 57} + \endentry + +|; + +is( $out->get_output_entry($main,'key1'), $k1, 'Related entry test 1' ) ; +is( $out->get_output_entry($main,'key2'), $k2, 'Related entry test 2' ) ; +is( $out->get_output_entry($main,'key3'), $k3, 'Related entry test 3' ) ; +is( $out->get_output_entry($main,'c2add694bf942dc77b376592d9c862cd'), $kck1, 'Related entry test 4' ) ; +is( $out->get_output_entry($main,'78f825aaa0103319aaa1a30bf4fe3ada'), $kck2, 'Related entry test 5' ) ; +is( $out->get_output_entry($main,'3631578538a2d6ba5879b31a9a42f290'), $kck3, 'Related entry test 6' ) ; +is( $out->get_output_entry($main,'caf8e34be07426ae7127c1b4829983c1'), $kck4, 'Related entry test 7' ) ; +# Key k4 is used only to create a related entry clone but since it isn't cited itself +# it shouldn't be in the .bbl +is( $out->get_output_entry($main,'key4'), undef, 'Related entry test 8' ) ; +is_deeply([$shs->get_keys], ['key1', 'key2', 'key3'], 'Related entry test 9'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/20-sortlists.t b/Master/texmf-dist/source/bibtex/biber/t/20-sortlists.t new file mode 100755 index 00000000000..cbf9bc63a5c --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/20-sortlists.t @@ -0,0 +1,38 @@ +use strict; +use warnings; +use utf8; +no warnings 'utf8'; + +use Test::More tests => 8; + +use Biber; +use Biber::Output::BBL; +use Log::Log4perl qw(:easy); +Log::Log4perl->easy_init($ERROR); +chdir("t/tdata") ; +my $S; + +# Set up Biber object +my $biber = Biber->new(noconf => 1); +$biber->parse_ctrlfile('sortlists.bcf'); +$biber->set_output_obj(Biber::Output::BBL->new()); + +# Options - we could set these in the control file but it's nice to see what we're +# relying on here for tests +Biber::Config->setoption('fastsort', 1); + +# (re)generate informtion based on option settings +$biber->prepare; +my $section = $biber->sections->get_section(0); +my $out = $biber->get_output_obj; + +is_deeply([$section->get_list('lname')->get_keys], ['K1', 'K2', 'K4', 'K3'], 'List - name order'); +is_deeply([$section->get_list('lyear')->get_keys], ['K4', 'K1', 'K2', 'K3'], 'List - year order'); +is_deeply([$section->get_list('ltitle')->get_keys], ['K1', 'K4', 'K2', 'K3'], 'List - title order'); +is_deeply([$section->get_list('lnamef1')->get_keys], ['K2', 'K4'], 'List - name order (filtered) - 1'); +is_deeply([$section->get_list('lnamef2')->get_keys], ['K4'], 'List - name order (filtered) - 2'); +is_deeply([$section->get_list('lnamef3')->get_keys], ['K1', 'K2'], 'List - name order (filtered) - 3'); +is_deeply([$section->get_list('lnamef4')->get_keys], ['K3'], 'List - name order (filtered) - 4'); +is_deeply([$section->get_list('lnamef5')->get_keys], ['K1', 'K3'], 'List - name order (filtered) - 5'); + +unlink <*.utf8>; diff --git a/Master/texmf-dist/source/bibtex/biber/t/pod-coverage.t b/Master/texmf-dist/source/bibtex/biber/t/pod-coverage.t new file mode 100755 index 00000000000..fc40a57c2a4 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/pod-coverage.t @@ -0,0 +1,18 @@ +use strict; +use warnings; +use Test::More; + +# Ensure a recent version of Test::Pod::Coverage +my $min_tpc = 1.08; +eval "use Test::Pod::Coverage $min_tpc"; +plan skip_all => "Test::Pod::Coverage $min_tpc required for testing POD coverage" + if $@; + +# Test::Pod::Coverage doesn't require a minimum Pod::Coverage version, +# but older versions don't recognize some common documentation styles +my $min_pc = 0.18; +eval "use Pod::Coverage $min_pc"; +plan skip_all => "Pod::Coverage $min_pc required for testing POD coverage" + if $@; + +all_pod_coverage_ok(); diff --git a/Master/texmf-dist/source/bibtex/biber/t/pod.t b/Master/texmf-dist/source/bibtex/biber/t/pod.t new file mode 100755 index 00000000000..ee8b18ade66 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/pod.t @@ -0,0 +1,12 @@ +#!perl -T + +use strict; +use warnings; +use Test::More; + +# Ensure a recent version of Test::Pod +my $min_tp = 1.22; +eval "use Test::Pod $min_tp"; +plan skip_all => "Test::Pod $min_tp required for testing POD" if $@; + +all_pod_files_ok(); diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/biber2.conf b/Master/texmf-dist/source/bibtex/biber/t/tdata/biber2.conf new file mode 100644 index 00000000000..04aa56cba2e --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/biber2.conf @@ -0,0 +1,14 @@ +## config file for Biber + +mincrossrefs = 5 +<collate_options> + level = 3 + table = /home/user/data/otherkeys.txt +</collate_options> +<nosort> + # strip prefices like 'al-' when sorting author + author \A\p{L}{2}\p{Pd} + # strip diacritics when sorting author + author [\x{2bf}\x{2018}] + translator [\x{2bf}\x{2018}] +</nosort> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/biber3.conf b/Master/texmf-dist/source/bibtex/biber/t/tdata/biber3.conf new file mode 100644 index 00000000000..88905384c51 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/biber3.conf @@ -0,0 +1,7 @@ +## config file for Biber + +mincrossrefs = 3 +<collate_options> + level = 1 + table = /home/user/data/mykeys.txt +</collate_options> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/bibtex-aliases.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/bibtex-aliases.bcf new file mode 100644 index 00000000000..3b307748f97 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/bibtex-aliases.bcf @@ -0,0 +1,1364 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">author</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <bcf:structure> + <bcf:datetypes> + <bcf:datetype>date</bcf:datetype> + <bcf:datetype>origdate</bcf:datetype> + <bcf:datetype>eventdate</bcf:datetype> + <bcf:datetype>urldate</bcf:datetype> + </bcf:datetypes> + <bcf:entrytypes> + <bcf:entrytype>article</bcf:entrytype> + <bcf:entrytype>artwork</bcf:entrytype> + <bcf:entrytype>audio</bcf:entrytype> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>commentary</bcf:entrytype> + <bcf:entrytype>customa</bcf:entrytype> + <bcf:entrytype>customb</bcf:entrytype> + <bcf:entrytype>customc</bcf:entrytype> + <bcf:entrytype>customd</bcf:entrytype> + <bcf:entrytype>custome</bcf:entrytype> + <bcf:entrytype>customf</bcf:entrytype> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:entrytype>image</bcf:entrytype> + <bcf:entrytype>jurisdiction</bcf:entrytype> + <bcf:entrytype>legal</bcf:entrytype> + <bcf:entrytype>legislation</bcf:entrytype> + <bcf:entrytype>letter</bcf:entrytype> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>movie</bcf:entrytype> + <bcf:entrytype>music</bcf:entrytype> + <bcf:entrytype>online</bcf:entrytype> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:entrytype>performance</bcf:entrytype> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>report</bcf:entrytype> + <bcf:entrytype>review</bcf:entrytype> + <bcf:entrytype>set</bcf:entrytype> + <bcf:entrytype>software</bcf:entrytype> + <bcf:entrytype>standard</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:entrytype>video</bcf:entrytype> + </bcf:entrytypes> + <bcf:fields> + <bcf:field fieldtype="field" datatype="literal">abstract</bcf:field> + <bcf:field fieldtype="field" datatype="literal">addendum</bcf:field> + <bcf:field fieldtype="list" datatype="name">afterword</bcf:field> + <bcf:field fieldtype="field" datatype="literal">annotation</bcf:field> + <bcf:field fieldtype="list" datatype="name">annotator</bcf:field> + <bcf:field fieldtype="list" datatype="name">author</bcf:field> + <bcf:field fieldtype="field" datatype="key">authortype</bcf:field> + <bcf:field fieldtype="list" datatype="name">bookauthor</bcf:field> + <bcf:field fieldtype="field" datatype="key">bookpagination</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booksubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">chapter</bcf:field> + <bcf:field fieldtype="list" datatype="name">commentator</bcf:field> + <bcf:field fieldtype="field" datatype="literal">crossref</bcf:field> + <bcf:field fieldtype="field" datatype="literal">day</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">doi</bcf:field> + <bcf:field fieldtype="field" datatype="literal">edition</bcf:field> + <bcf:field fieldtype="list" datatype="name">editor</bcf:field> + <bcf:field fieldtype="list" datatype="name">editora</bcf:field> + <bcf:field fieldtype="field" datatype="key">editoratype</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorb</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorbtype</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorc</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorctype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editortype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eid</bcf:field> + <bcf:field fieldtype="field" datatype="literal">endday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">endmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">endyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">entryset</bcf:field> + <bcf:field fieldtype="field" datatype="literal">entrysubtype</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">eprint</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprintclass</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprinttype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventendday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">eventendyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">execute</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">file</bcf:field> + <bcf:field fieldtype="list" datatype="name">foreword</bcf:field> + <bcf:field fieldtype="field" datatype="literal">gender</bcf:field> + <bcf:field fieldtype="list" datatype="name">holder</bcf:field> + <bcf:field fieldtype="field" datatype="literal">howpublished</bcf:field> + <bcf:field fieldtype="field" datatype="literal">hyphenation</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indexsorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indextitle</bcf:field> + <bcf:field fieldtype="list" datatype="literal">institution</bcf:field> + <bcf:field fieldtype="list" datatype="name">introduction</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isan</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isbn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">ismn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isrn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issue</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuesubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuetitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">iswc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journalsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journaltitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">keywords</bcf:field> + <bcf:field fieldtype="field" datatype="literal">label</bcf:field> + <bcf:field fieldtype="list" datatype="key">language</bcf:field> + <bcf:field fieldtype="field" datatype="literal">library</bcf:field> + <bcf:field fieldtype="list" datatype="literal">lista</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listb</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listc</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listd</bcf:field> + <bcf:field fieldtype="list" datatype="literal">liste</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listf</bcf:field> + <bcf:field fieldtype="list" datatype="literal">location</bcf:field> + <bcf:field fieldtype="field" datatype="literal">mainsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="integer">month</bcf:field> + <bcf:field fieldtype="list" datatype="name">namea</bcf:field> + <bcf:field fieldtype="field" datatype="literal">nameaddon</bcf:field> + <bcf:field fieldtype="field" datatype="key">nameatype</bcf:field> + <bcf:field fieldtype="list" datatype="name">nameb</bcf:field> + <bcf:field fieldtype="field" datatype="key">namebtype</bcf:field> + <bcf:field fieldtype="list" datatype="name">namec</bcf:field> + <bcf:field fieldtype="field" datatype="key">namectype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">note</bcf:field> + <bcf:field fieldtype="field" datatype="literal">number</bcf:field> + <bcf:field fieldtype="field" datatype="literal">options</bcf:field> + <bcf:field fieldtype="list" datatype="literal">organization</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origendday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">origendyear</bcf:field> + <bcf:field fieldtype="field" datatype="key">origlanguage</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origlocation</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origmonth</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origpublisher</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origyear</bcf:field> + <bcf:field fieldtype="field" datatype="range">pages</bcf:field> + <bcf:field fieldtype="field" datatype="literal">pagetotal</bcf:field> + <bcf:field fieldtype="field" datatype="key">pagination</bcf:field> + <bcf:field fieldtype="field" datatype="literal">part</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">presort</bcf:field> + <bcf:field fieldtype="list" datatype="literal">publisher</bcf:field> + <bcf:field fieldtype="field" datatype="key">pubstate</bcf:field> + <bcf:field fieldtype="field" datatype="literal">related</bcf:field> + <bcf:field fieldtype="field" datatype="literal">relatedtype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">reprinttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">series</bcf:field> + <bcf:field fieldtype="list" datatype="name">shortauthor</bcf:field> + <bcf:field fieldtype="list" datatype="name">shorteditor</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorthand</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorthandintro</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shortjournal</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shortseries</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortkey</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortname</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">subtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">title</bcf:field> + <bcf:field fieldtype="field" datatype="literal">titleaddon</bcf:field> + <bcf:field fieldtype="list" datatype="name">translator</bcf:field> + <bcf:field fieldtype="field" datatype="key">type</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">url</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usera</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userb</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userd</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usere</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userf</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlendday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">urlendyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">venue</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verba</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbb</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">version</bcf:field> + <bcf:field fieldtype="field" datatype="literal">volume</bcf:field> + <bcf:field fieldtype="field" datatype="literal">volumes</bcf:field> + <bcf:field fieldtype="field" datatype="literal">xref</bcf:field> + <bcf:field fieldtype="field" datatype="literal">year</bcf:field> + </bcf:fields> + <bcf:entryfields> + <bcf:entrytype>ALL</bcf:entrytype> + <bcf:field>abstract</bcf:field> + <bcf:field>annotation</bcf:field> + <bcf:field>authortype</bcf:field> + <bcf:field>bookpagination</bcf:field> + <bcf:field>crossref</bcf:field> + <bcf:field>entryset</bcf:field> + <bcf:field>entrysubtype</bcf:field> + <bcf:field>execute</bcf:field> + <bcf:field>file</bcf:field> + <bcf:field>gender</bcf:field> + <bcf:field>hyphenation</bcf:field> + <bcf:field>indextitle</bcf:field> + <bcf:field>indexsorttitle</bcf:field> + <bcf:field>isan</bcf:field> + <bcf:field>ismn</bcf:field> + <bcf:field>iswc</bcf:field> + <bcf:field>keywords</bcf:field> + <bcf:field>label</bcf:field> + <bcf:field>library</bcf:field> + <bcf:field>lista</bcf:field> + <bcf:field>listb</bcf:field> + <bcf:field>listc</bcf:field> + <bcf:field>listd</bcf:field> + <bcf:field>liste</bcf:field> + <bcf:field>listf</bcf:field> + <bcf:field>nameaddon</bcf:field> + <bcf:field>options</bcf:field> + <bcf:field>origday</bcf:field> + <bcf:field>origendday</bcf:field> + <bcf:field>origendmonth</bcf:field> + <bcf:field>origendyear</bcf:field> + <bcf:field>origmonth</bcf:field> + <bcf:field>origyear</bcf:field> + <bcf:field>origlocation</bcf:field> + <bcf:field>origpublisher</bcf:field> + <bcf:field>origtitle</bcf:field> + <bcf:field>pagination</bcf:field> + <bcf:field>presort</bcf:field> + <bcf:field>related</bcf:field> + <bcf:field>relatedtype</bcf:field> + <bcf:field>reprinttitle</bcf:field> + <bcf:field>shortauthor</bcf:field> + <bcf:field>shorteditor</bcf:field> + <bcf:field>shorthand</bcf:field> + <bcf:field>shorthandintro</bcf:field> + <bcf:field>shortjournal</bcf:field> + <bcf:field>shortseries</bcf:field> + <bcf:field>shorttitle</bcf:field> + <bcf:field>sortkey</bcf:field> + <bcf:field>sortname</bcf:field> + <bcf:field>sorttitle</bcf:field> + <bcf:field>sortyear</bcf:field> + <bcf:field>usera</bcf:field> + <bcf:field>userb</bcf:field> + <bcf:field>userc</bcf:field> + <bcf:field>userd</bcf:field> + <bcf:field>usere</bcf:field> + <bcf:field>userf</bcf:field> + <bcf:field>verba</bcf:field> + <bcf:field>verbb</bcf:field> + <bcf:field>verbc</bcf:field> + <bcf:field>xref</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>set</bcf:entrytype> + <bcf:field>ALL</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>article</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>issn</bcf:field> + <bcf:field>issue</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>journalsubtitle</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + <bcf:field>volume</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>book</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>bookauthor</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>online</bcf:entrytype> + <bcf:field>title</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + <bcf:field>year</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>holder</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>issn</bcf:field> + <bcf:field>issue</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>report</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>isrn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + </bcf:entryfields> + <bcf:constraints> + <bcf:entrytype>article</bcf:entrytype> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>online</bcf:entrytype> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:entrytype>suppperiodical</bcf:entrytype> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:entrytype>report</bcf:entrytype> + <bcf:entrytype>set</bcf:entrytype> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:entrytype>unpublished</bcf:entrytype> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>set</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>entryset</bcf:field> + <bcf:field>crossref</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>article</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>book</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:fieldor> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + </bcf:fieldor> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>online</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + <bcf:field>url</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>number</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>report</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + </bcf:structure> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">bibtex-aliases.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>alias1</bcf:citekey> + <bcf:citekey>alias2</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/bibtex-aliases.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/bibtex-aliases.bib new file mode 100644 index 00000000000..9dd1a1bf304 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/bibtex-aliases.bib @@ -0,0 +1,16 @@ +@PHDTHESIS{alias1, + AUTHOR = {Sammy Student}, + TITLE = {Four Years Later}, + INSTITUTION = {University of Life}, + ADDRESS = {Ivory Towers}, + DATE = {2003-10-01}, +} + +@THING{alias2, + AUTHOR = {Samuel Strange}, + TITLE = {Entitled}, + ADDRESS = {Ivory Towers}, + SCHOOL = {University of West Grantham}, + INSTITUTION = {University of East Grantham}, + DATE = {2004-03-03}, +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/crossrefs.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/crossrefs.bcf new file mode 100644 index 00000000000..e4d7508cebd --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/crossrefs.bcf @@ -0,0 +1,205 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- INHERITANCE --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + <bcf:type_pair source="*" target="incollection" inherit_all="false"/> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="*" target="*"/> + <bcf:field source="verba" target="verbb" override_target="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="*" target="inbook"/> + <bcf:field source="author" target="bookauthor" override_target="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:field source="title" target="booktitle" override_target="true"/> + <bcf:field source="titleaddon" target="booktitleaddon" override_target="true"/> + <bcf:field source="subtitle" target="booksubtitle" override_target="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle" override_target="false"/> + <bcf:field source="publisher" skip="true"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:field source="title" target="booktitle" override_target="true"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">crossrefs.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>cr1</bcf:citekey> + <bcf:citekey>cr2</bcf:citekey> + <bcf:citekey>cr3</bcf:citekey> + <bcf:citekey>cr4</bcf:citekey> + <bcf:citekey>cr6</bcf:citekey> + <bcf:citekey>cr7</bcf:citekey> + <bcf:citekey>cr8</bcf:citekey> + <bcf:citekey>crt</bcf:citekey> + <bcf:citekey>xr1</bcf:citekey> + <bcf:citekey>xr2</bcf:citekey> + <bcf:citekey>xr3</bcf:citekey> + <bcf:citekey>xr4</bcf:citekey> + <bcf:citekey>xrt</bcf:citekey> + <bcf:citekey>mxr</bcf:citekey> + <bcf:citekey>mcr</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> + <!-- SECTION 0 --> + <bcf:bibdata section="1"> + <bcf:datasource type="file" datatype="bibtex">crossrefs.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="1"> + <bcf:citekey>cr5</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/crossrefs.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/crossrefs.bib new file mode 100644 index 00000000000..d66d17bad8c --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/crossrefs.bib @@ -0,0 +1,205 @@ +% Testing mincrossrefs. cr1 and cr2 crossrefs should trigger inclusion of crm and also +% the crossref fields in both of them +% Also a test of some aliases +@INBOOK{cr1, + AUTHOR = {Graham Gullam}, + TITLE = {Great and Good Graphs}, + ORIGDATE = {1955}, + ARCHIVEPREFIX = {SomEPrFiX}, + PRIMARYCLASS = {SOMECLASS}, + CROSSREF = {crm} +} + +@INBOOK{cr2, + AUTHOR = {Frederick Fumble}, + TITLE = {Fabulous Fourier Forms}, + SCHOOL = {School}, + INSTITUTION = {Institution}, + ORIGDATE = {1943}, + CROSSREF = {crm} +} + +@BOOK{crm, + EDITOR = {Edgar Erbriss}, + TITLE = {Graphs of the Continent}, + PUBLISHER = {Grimble}, + YEAR = {1974} +} + +% Testing explicit cite of crossref parent. Should trigger inclusion of child crossref field +@INBOOK{cr3, + AUTHOR = {Arthur Aptitude}, + TITLE = {Arrangements of All Articles}, + ORIGDATE = {1934}, + ARCHIVEPREFIX = {SomEPrFiX}, + EPRINTTYPE = {sometype}, + CROSSREF = {crt} +} + +@BOOK{crt, + EDITOR = {Mark Monkley}, + TITLE = {Beasts of the Burbling Burns}, + PUBLISHER = {Rancour}, + YEAR = {1996} +} + +% Testing mincrossrefs not reached. cr4 is cited, cr5 isn't, therefore mincrossrefs (2) for +% crn not reached +@INBOOK{cr4, + AUTHOR = {Morris Mumble}, + TITLE = {Enterprising Entities}, + ORIGDATE = {1911}, + CROSSREF = {crn} +} + +@INBOOK{cr5, + AUTHOR = {Oliver Ordinary}, + TITLE = {Questionable Quidities}, + ORIGDATE = {1919}, + CROSSREF = {crn} +} + +@BOOK{crn, + EDITOR = {Jeremy Jermain}, + TITLE = {Vanquished, Victor, Vandal}, + PUBLISHER = {Pillsbury}, + YEAR = {1945} +} + +% Testing inheritance of event information +@PROCEEDINGS{cr6i, + AUTHOR = {Spurious Author}, + ADDRESS = {Address}, + TITLE = {Title of proceeding}, + EDITOR = {Editor}, + PUBLISHER = {Publisher of proceeding}, + EVENTDATE = {2009-08-21/2009-08-24}, + EVENTTITLE = {Title of the event}, + VENUE = {Location of event}, + YEAR = {2009} +} + +@INPROCEEDINGS{cr6, + AUTHOR = {Author, Firstname}, + CROSSREF = {cr6i}, + PAGES = {123--}, + TITLE = {Title of inproceeding}, + BOOKTITLE = {Manual booktitle}, + YEAR = {2009}, +} + +% Testing inheritance of special fields (booktitle, bookauthor etc.) +@BOOK{cr7i, + AUTHOR = {Brian Bookauthor}, + TITLE = {Book Title}, + SUBTITLE = {Book Subtitle}, + TITLEADDON = {Book Titleaddon}, + PUBLISHER = {Publisher of proceeding}, + YEAR = {2009}, + VERBA = {String}, +} + +@INBOOK{cr7, + AUTHOR = {Author, Firstname}, + CROSSREF = {cr7i}, + PAGES = {123--126}, + TITLE = {Title of Book bit}, + YEAR = {2010} +} + +% Testing supression of default inheritance +@COLLECTION{cr8i, + EDITOR = {Brian Editor}, + TITLE = {Book Title}, + SUBTITLE = {Book Subtitle}, + TITLEADDON = {Book Titleaddon}, + PUBLISHER = {Publisher of Collection}, + YEAR = {2009} +} + +@INCOLLECTION{cr8, + AUTHOR = {Smith, Firstname}, + CROSSREF = {cr8i}, + PAGES = {1--12}, + TITLE = {Title of Collection bit}, + YEAR = {2010} +} + + +% Testing mincrossrefs. xr1 and xr2 xrefs should trigger inclusion of xrm and also +% the xreffields in both of them +@INBOOK{xr1, + AUTHOR = {Zoe Zentrum}, + TITLE = {Moods Mildly Modified}, + ORIGDATE = {1921}, + XREF = {xrm} +} + +@INBOOK{xr2, + AUTHOR = {Ian Instant}, + TITLE = {Migraines Multiplying Madly}, + ORIGDATE = {1926}, + XREF = {xrm} +} + +@BOOK{xrm, + EDITOR = {Peter Prendergast}, + TITLE = {Calligraphy, Calisthenics, Culture}, + PUBLISHER = {Mainstream}, + YEAR = {1970} +} + +% Testing explicit cite of xref parent. Should trigger inclusion of child xref field +@INBOOK{xr3, + AUTHOR = {Norman Normal}, + TITLE = {Russion Regalia Revisited}, + ORIGDATE = {1923}, + XREF = {xrt} +} + +@BOOK{xrt, + EDITOR = {Lucy Lunders}, + TITLE = {Kings, Cork and Calculation}, + PUBLISHER = {Middling}, + YEAR = {1977} +} + +% Testing mincrossrefs not reached. cr4 is cited, cr5 isn't, therefore mincrossrefs (2) for +% crn not reached +@INBOOK{xr4, + AUTHOR = {Megan Mistrel}, + TITLE = {Lumbering Lunatics}, + ORIGDATE = {1933}, + XREF = {xrn} +} + +@INBOOK{xr5, + AUTHOR = {Kenneth Kunrath}, + TITLE = {Dreadful Dreary Days}, + ORIGDATE = {1900}, + XREF = {xrn} +} + +@BOOK{xrn, + EDITOR = {Victor Vivacious}, + TITLE = {Examples of Excellent Exaggerations}, + PUBLISHER = {Oxford}, + YEAR = {1935} +} + +% Testing missing xref +@INBOOK{mxr, + AUTHOR = {Megan Mistrel}, + TITLE = {Lumbering Lunatics}, + ORIGDATE = {1933}, + XREF = {missing1} +} + +% Testing missing crossref +@INBOOK{mcr, + AUTHOR = {Megan Mistrel}, + TITLE = {Lumbering Lunatics}, + ORIGDATE = {1933}, + CROSSREF = {missing1} +} + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/definitions.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/definitions.bib new file mode 100644 index 00000000000..003c6dd4b86 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/definitions.bib @@ -0,0 +1,690 @@ +% ABBREVIATIONS +% +% OF JOURNAL-NAMES +% + +@string{acmcs = "ACM Computing Surveys"} +@string{acmtalg = "ACM Transactions on Algorithms"} +@string{acmjea = "ACM Journal of Experimental Algorithms"} +@string{actacybernetica = "Acta Cybernetica"} +@string{adm = "Annals of Discrete Mathematics"} +@string{ai = "Acta Informatica"} +@string{alg = "Algorithmica"} +@string{amm = "American Mathematical Monthly"} +@string{amsuh = "Abh. Math. Sem. Univ. Hamburg"} +@string{aor = "Annals of Operations Research"} +@string{apal = "Annals of Pure and Applied Logic"} +@string{arscomb = "Ars Combinatoria"} +@string{artint = "Artificial Intelligence"} +@string{beatcs = "Bulletin of the EATCS"} +@string{bit = "BIT"} +@string{cacm = "Communications of the ACM"} +@string{canjm = "Canadian Journal of Mathematics"} +@string{cg = "Computational Geometry"} +@string{cm = "Contemporary Mathematics"} +@string{cn = "Congressus Numerantium"} +@string{cnet = "Computer Networks"} +@string{comb = "Combinatorica"} +@string{combinatorica = "Combinatorica"} +@string{comp = "Computing"} +@string{cor = "Computers \& Operations Research"} +@string{cpc = "Combinatorics, Probability, and Computing"} +@string{dm = "Discrete Mathematics"} +@string{dam = "Discrete Applied Mathematics"} +@string{dcg = "Discrete and Computational Geometry"} +@string{dmtcs = "Discrete Mathematics and Theoretical Computer Science"} +@string{do = "Discrete Optimization"} +@string{endm = "Electronic Notes in Discrete Mathematics"} +@string{elemmath = "Elem. Math."} +@string{ejc = "Electronic Journal of Combinatorics"} +@string{ejcom = "European Journal of Combinatorics"} +@string{ejor = "European Journal of Operational Research"} +@string{fundmath = "Fundamenta Mathematicae"} +@string{gc = "Graphs and Combinatorics"} +@string{ic = "Information and Control"} +@string{ic2 = "Information and Computation"} +@string{ietc = "IEEE Transations on Computers"} +@string{ieeetc = "IEEE Transactions on Computers"} +@string{ieeetcs = "IEEE Transactions on Circuits and Systems"} +@string{ieeetct = "IEEE Transactions on Circuit Theory"} +@string{ieeeted = "IEEE Transactions on Electronic Devices"} +@string{ieeetse = "IEEE Transactions on Software Engineering"} +@string{ijcis = "International Journal of Computer and System Sciences"} +@string{ijcm = "International Journal of Computer Mathematics"} +@string{ijfcs = "International Journal of Foundations of Computer Science"} +@string{informsjc = "INFORMS Journal on Computing"} +@string{ipl = "Information Processing Letters"} +@string{ita = "Informatique Th\'{e}orique et Applications"} +@string{ja = "Journal of Algorithms"} +@string{jair = "Journal of Artificial Intelligence Research"} +@string{jacm = "Journal of the ACM"} +@string{jct = "Journal of Combinatorial Theory"} +@string{jcta = "Journal of Combinatorial Theory, Series A"} +@string{jctb = "Journal of Combinatorial Theory, Series B"} +@string{jco = "Journal of Combinatorial Optimization"} +@string{jcss = "Journal of Computer and System Sciences"} +@string{jda = "Journal of Discrete Algorithms"} +@string{jgaa = "Journal of Graph Algorithms and Applications"} +@string{jgt = "Journal of Graph Theory"} +@string{jip = "Journal of Information Processing"} +@string{jise = "Journal of Information Science and Engineering"} +@string{jmaa = "Journal of Mathematical Analysis and Applications"} +@string{jpdc = "Journal of Parallel and Distributed Computing"} +@string{jucs = "Journal of Universal Computer Science"} +@string{math = "Mathematika"} +@string{mor = "Mathematics of Operations Research"} +@string{mp = "Mathematical Programming"} +@string{mst = "Mathematical Systems Theory"} +@string{netw = "Networks"} +@string{networks = "Networks"} +@string{nordicjc = "Nordic Journal of Computing"} +@string{or = "Operations Research"} +@string{orl = "Operations Research Letters"} +@string{pms = "Probability and Mathematical Statistics"} +@string{sam = "Studies in Applied Mathematics"} +@string{siamjc = "SIAM Journal on Computing"} +@string{siamjo = "SIAM Journal on Optimization"} +@string{sjam = "SIAM Journal on Applied Mathematics"} +@string{sjadm = "SIAM Journal on Algebraic and Discrete Methods"} +@string{sjdm = "SIAM Journal on Discrete Mathematics"} +@string{sjmaa = "SIAM Journal on Matrix Analysis and Applications"} +@string{sjna = "SIAM Journal on Numerical Analysis"} +@string{tcs = "Theoretical Computer Science"} +@string{tocs = "Theory of Computing Systems"} +@string{tcj = "The Computer Journal"} + +@string{vi= "Department of Computer Science, Utrecht University"} +@string{tr= "Technical Report"} + +%Abbreviations of Conference names + +@string{aaai92 = "Proceedings of the 10th National Conference on Artificial Intelligence, AAAI'92"} +@string{aaai93 = "Proceedings of the 11th National Conference on Artificial Intelligence, AAAI'93"} +@string{aaai94 = "Proceedings of the 12th National Conference on Artificial Intelligence, AAAI'94"} +@string{aaai95 = "Proceedings of the 13th National Conference on Artificial Intelligence, AAAI'95"} +@string{aaai96 = "Proceedings of the 14th National Conference on Artificial Intelligence, AAAI'96"} +@string{aaai97 = "Proceedings of the 15th National Conference on Artificial Intelligence, AAAI'97"} +@string{aaai98 = "Proceedings of the 16th National Conference on Artificial Intelligence, AAAI'98"} +@string{aaai07 = "Proceedings of the 25th National Conference on Artificial Intelligence, AAAI'07"} + +@string{acid05 = "Proceedings of the 1st Workshop on Algorithms and Complexity in Durham, ACiD 2005"} + +@string{alenex99 = "Proceedings of the 1st International Workshop on Algorithm Engineering and Experimentation, ALENEX'99"} +@string{alenex00 = "Proceedings of the 2nd International Workshop on Algorithm Engineering and Experimentation, ALENEX 2000"} +@string{alenex01 = "Proceedings of the 3rd International Workshop on Algorithm Engineering and Experimentation, ALENEX 2001"} +@string{alenex02 = "Proceedings of the 4th International Workshop on Algorithm Engineering and Experimentation, ALENEX 2002"} +@string{alenex03 = "Proceedings of the 5th Workshop on Algorithm Engineering and Experimentation, ALENEX 2003"} +@string{alenex04 = "Proceedings of the 6th Workshop on Algorithm Engineering and Experimentation and the +1st Workshop on Analytic Algorithmics and Combinatorics, ALENEX/ANALCO 2004"} +@string{alenex05 = "Proceedings of the 7th Workshop on Algorithm Engineering and Experimentation and the +2nd Workshop on Analytic Algorithmics and Combinatorics, ALENEX/ANALCO 2005"} +@string{alenex06 = "Proceedings of the 8th International Workshop on Algorithm Engineering and Experimentation, ALENEX 2006"} +@string{alenex07 = "Proceedings of the 9th Workshop on Algorithm Engineering and Experimentation, ALENEX 2007"} +@string{alenex08 = "Proceedings of the 10th Workshop on Algorithm Engineering and Experimentation, ALENEX 2008"} +@string{alenex09 = "Proceedings of the 11th Workshop on Algorithm Engineering and Experimentation, ALENEX 2009"} + +@string{ciac97 = "Proceedings of the 3rd Italian Conference on Algorithms and Complexity, CIAC'97"} +@string{ciac00 = "Proceedings of the 4th Italian Conference on Algorithms and Complexity, CIAC 2000"} +@string{ciac03 = "Proceedings of the 5th Italian Conference on Algorithms and Complexity, CIAC 2003"} +@string{ciac06 = "Proceedings of the 6th Italian Conference on Algorithms and Complexity, CIAC 2006"} +@string{ciac10 = "Proceedings of the 7th Italian Conference on Algorithms and Complexity, CIAC 2010"} + +@string{cocoon95 = "Proceedings of the 1st Annual International Conference on Computing and Combinatorics, COCOON'95"} +@string{cocoon96 = "Proceedings of the 2nd Annual International Conference on Computing and Combinatorics, COCOON'96"} +@string{cocoon97 = "Proceedings of the 3rd Annual International Conference on Computing and Combinatorics, COCOON'97"} +@string{cocoon98 = "Proceedings of the 4th Annual International Conference on Computing and Combinatorics, COCOON'98"} +@string{cocoon99 = "Proceedings of the 5th Annual International Conference on Computing and Combinatorics, COCOON'99"} +@string{cocoon00 = "Proceedings of the 6th Annual International Conference on Computing and Combinatorics, COCOON 2000"} +@string{cocoon01 = "Proceedings of the 7th Annual International Conference on Computing and Combinatorics, COCOON 2001"} +@string{cocoon02 = "Proceedings of the 8th Annual International Conference on Computing and Combinatorics, COCOON 2002"} +@string{cocoon03 = "Proceedings of the 9th Annual International Conference on Computing and Combinatorics, COCOON 2003"} +@string{cocoon04 = "Proceedings of the 10th Annual International Conference on Computing and Combinatorics, COCOON 2004"} +@string{cocoon05 = "Proceedings of the 11th Annual International Conference on Computing and Combinatorics, COCOON 2005"} +@string{cocoon06 = "Proceedings of the 12th Annual International Conference on Computing and Combinatorics, COCOON 2006"} +@string{cocoon07 = "Proceedings of the 13th Annual International Conference on Computing and Combinatorics, COCOON 2007"} +@string{cocoon08 = "Proceedings of the 14th Annual International Conference on Computing and Combinatorics, COCOON 2008"} +@string{cocoon09 = "Proceedings of the 15th Annual International Conference on Computing and Combinatorics, COCOON 2009"} + +@string{ecai2002 = "Proceedings of the 15th European Conference on Artificial Intelligence, ECAI 2002"} +@string{ecai2003 = "Proceedings of the 16th European Conference on Artificial Intelligence, ECAI 2003"} +@string{ecai2004 = "Proceedings of the 17th European Conference on Artificial Intelligence, ECAI 2004"} +@string{ecai2005 = "Proceedings of the 18th European Conference on Artificial Intelligence, ECAI 2005"} +@string{ecai2006 = "Proceedings of the 19th European Conference on Artificial Intelligence, ECAI 2006"} +@string{ecai2007 = "Proceedings of the 20th European Conference on Artificial Intelligence, ECAI 2007"} +@string{ecai2008 = "Proceedings of the 21st European Conference on Artificial Intelligence, ECAI 2008"} +@string{ecai2009 = "Proceedings of the 22nd European Conference on Artificial Intelligence, ECAI 2009"} + +@string{esa93 = "Proceedings of the 1st Annual European Symposium on Algorithms, ESA'93"} +@string{esa94 = "Proceedings of the 2nd Annual European Symposium on Algorithms, ESA'94"} +@string{esa95 = "Proceedings of the 3rd Annual European Symposium on Algorithms, ESA'95"} +@string{esa96 = "Proceedings of the 4th Annual European Symposium on Algorithms, ESA'96"} +@string{esa97 = "Proceedings of the 5th Annual European Symposium on Algorithms, ESA'97"} +@string{esa98 = "Proceedings of the 6th Annual European Symposium on Algorithms, ESA'98"} +@string{esa99 = "Proceedings of the 7th Annual European Symposium on Algorithms, ESA'99"} +@string{esa00 = "Proceedings of the 8th Annual European Symposium on Algorithms, ESA 2000"} +@string{esa01 = "Proceedings of the 9th Annual European Symposium on Algorithms, ESA 2001"} +@string{esa02 = "Proceedings of the 10th Annual European Symposium on Algorithms, ESA 2002"} +@string{esa03 = "Proceedings of the 11th Annual European Symposium on Algorithms, ESA 2003"} +@string{esa04 = "Proceedings of the 12th Annual European Symposium on Algorithms, ESA 2004"} +@string{esa05 = "Proceedings of the 13th Annual European Symposium on Algorithms, ESA 2005"} +@string{esa06 = "Proceedings of the 14th Annual European Symposium on Algorithms, ESA 2006"} +@string{esa07 = "Proceedings of the 15th Annual European Symposium on Algorithms, ESA 2007"} +@string{esa08 = "Proceedings of the 16th Annual European Symposium on Algorithms, ESA 2008"} +@string{esa09 = "Proceedings of the 17th Annual European Symposium on Algorithms, ESA 2009"} + +@string{fct85 = "Proceedings of the 5th International Conference on Fundamentals of Computation Theory, FCT'85"} +@string{fct87 = "Proceedings of the 6th International Conference on Fundamentals of Computation Theory, FCT'87"} +@string{fct89 = "Proceedings of the 7th International Conference on Fundamentals of Computation Theory, FCT'89"} +@string{fct91 = "Proceedings of the 8th International Symposium on Fundamentals of Computation Theory, FCT'91"} +@string{fct93 = "Proceedings of the 9th International Symposium on Fundamentals of Computation Theory, FCT'93"} +@string{fct95 = "Proceedings of the 10th International Symposium on Fundamentals of Computation Theory, FCT'95"} +@string{fct97 = "Proceedings of the 11th International Symposium on Fundamentals of Computation Theory, FCT'97"} +@string{fct99 = "Proceedings of the 12th International Symposium on Fundamentals of Computation Theory, FCT'99"} +@string{fct01 = "Proceedings of the 13th International Symposium on Fundamentals of Computation Theory, FCT 2001"} +@string{fct03 = "Proceedings of the 14th International Symposium on Fundamentals of Computation Theory, FCT 2003"} +@string{fct05 = "Proceedings of the 15th International Symposium on Fundamentals of Computation Theory, FCT 2005"} +@string{fct07 = "Proceedings of the 16th International Symposium on Fundamentals of Computation Theory, FCT 2007"} +@string{fct09 = "Proceedings of the 17th International Symposium on Fundamentals of Computation Theory, FCT 2009"} + +@string{focs75 = "Proceedings of the 16th Annual Symposium on Foundations of Computer Science, FOCS'75"} +@string{focs76 = "Proceedings of the 17th Annual Symposium on Foundations of Computer Science, FOCS'76"} +@string{focs77 = "Proceedings of the 18th Annual Symposium on Foundations of Computer Science, FOCS'77"} +@string{focs78 = "Proceedings of the 19th Annual Symposium on Foundations of Computer Science, FOCS'78"} +@string{focs79 = "Proceedings of the 20th Annual Symposium on Foundations of Computer Science, FOCS'79"} +@string{focs80 = "Proceedings of the 21st Annual Symposium on Foundations of Computer Science, FOCS'80"} +@string{focs81 = "Proceedings of the 22nd Annual Symposium on Foundations of Computer Science, FOCS'81"} +@string{focs82 = "Proceedings of the 23rd Annual Symposium on Foundations of Computer Science, FOCS'82"} +@string{focs83 = "Proceedings of the 24th Annual Symposium on Foundations of Computer Science, FOCS'83"} +@string{focs84 = "Proceedings of the 25th Annual Symposium on Foundations of Computer Science, FOCS'84"} +@string{focs85 = "Proceedings of the 26th Annual Symposium on Foundations of Computer Science, FOCS'85"} +@string{focs86 = "Proceedings of the 27th Annual Symposium on Foundations of Computer Science, FOCS'86"} +@string{focs87 = "Proceedings of the 28th Annual Symposium on Foundations of Computer Science, FOCS'87"} +@string{focs88 = "Proceedings of the 29th Annual Symposium on Foundations of Computer Science, FOCS'88"} +@string{focs89 = "Proceedings of the 30th Annual Symposium on Foundations of Computer Science, FOCS'89"} +@string{focs90 = "Proceedings of the 31st Annual Symposium on Foundations of Computer Science, FOCS'90"} +@string{focs91 = "Proceedings of the 32nd Annual Symposium on Foundations of Computer Science, FOCS'91"} +@string{focs92 = "Proceedings of the 33rd Annual Symposium on Foundations of Computer Science, FOCS'92"} +@string{focs93 = "Proceedings of the 34th Annual Symposium on Foundations of Computer Science, FOCS'93"} +@string{focs94 = "Proceedings of the 35th Annual Symposium on Foundations of Computer Science, FOCS'94"} +@string{focs95 = "Proceedings of the 36th Annual Symposium on Foundations of Computer Science, FOCS'95"} +@string{focs96 = "Proceedings of the 37th Annual Symposium on Foundations of Computer Science, FOCS'96"} +@string{focs97 = "Proceedings of the 38th Annual Symposium on Foundations of Computer Science, FOCS'97"} +@string{focs98 = "Proceedings of the 39th Annual Symposium on Foundations of Computer Science, FOCS'98"} +@string{focs99 = "Proceedings of the 40th Annual Symposium on Foundations of Computer Science, FOCS'99"} +@string{focs00 = "Proceedings of the 41st Annual Symposium on Foundations of Computer Science, FOCS 2000"} +@string{focs01 = "Proceedings of the 42nd Annual Symposium on Foundations of Computer Science, FOCS 2001"} +@string{focs02 = "Proceedings of the 43rd Annual Symposium on Foundations of Computer Science, FOCS 2002"} +@string{focs03 = "Proceedings of the 44th Annual Symposium on Foundations of Computer Science, FOCS 2003"} +@string{focs04 = "Proceedings of the 45th Annual Symposium on Foundations of Computer Science, FOCS 2004"} +@string{focs05 = "Proceedings of the 46th Annual Symposium on Foundations of Computer Science, FOCS 2005"} +@string{focs06 = "Proceedings of the 47th Annual Symposium on Foundations of Computer Science, FOCS 2006"} +@string{focs07 = "Proceedings of the 48th Annual Symposium on Foundations of Computer Science, FOCS 2007"} +@string{focs08 = "Proceedings of the 49th Annual Symposium on Foundations of Computer Science, FOCS 2008"} +@string{focs09 = "Proceedings of the 50th Annual Symposium on Foundations of Computer Science, FOCS 2009"} + +@string{fsttcs01 = "Proceedings 21st International Comference on Foundations of Software +Technology and Theoretical Computer Science, FSTTCS 2001"} +@string{fsttcs02 = "Proceedings 22nd International Comference on Foundations of Software +Technology and Theoretical Computer Science, FSTTCS 2002"} +@string{fsttcs03 = "Proceedings 23rd International Comference on Foundations of Software +Technology and Theoretical Computer Science, FSTTCS 2003"} +@string{fsttcs04 = "Proceedings 24th International Comference on Foundations of Software +Technology and Theoretical Computer Science, FSTTCS 2004"} +@string{fsttcs05 = "Proceedings 25th International Comference on Foundations of Software +Technology and Theoretical Computer Science, FSTTCS 2005"} +@string{fsttcs06 = "Proceedings 26th International Comference on Foundations of Software +Technology and Theoretical Computer Science, FSTTCS 2006"} +@string{fsttcs07 = "Proceedings 27th International Comference on Foundations of Software +Technology and Theoretical Computer Science, FSTTCS 2007"} +@string{fsttcs08 = "Proceedings 28th International Comference on Foundations of Software +Technology and Theoretical Computer Science, FSTTCS 2008"} +@string{fsttcs09 = "Proceedings 29th International Comference on Foundations of Software +Technology and Theoretical Computer Science, FSTTCS 2009"} + +@string{gd94 = "Proceedings of the 3rd International Symposium on Graph Drawing, GD'94"} +@string{gd95 = "Proceedings of the 4th International Symposium on Graph Drawing, GD'95"} +@string{gd96 = "Proceedings of the 5th International Symposium on Graph Drawing, GD'96"} +@string{gd97 = "Proceedings of the 6th International Symposium on Graph Drawing, GD'97"} +@string{gd98 = "Proceedings of the 7th International Symposium on Graph Drawing, GD'98"} +@string{gd99 = "Proceedings of the 8th International Symposium on Graph Drawing, GD'99"} +@string{gd00 = "Proceedings of the 9th International Symposium on Graph Drawing, GD 2000"} +@string{gd01 = "Proceedings of the 10th International Symposium on Graph Drawing, GD 2001"} +@string{gd02 = "Proceedings of the 11th International Symposium on Graph Drawing, GD 2002"} +@string{gd03 = "Proceedings of the 12th International Symposium on Graph Drawing, GD 2003"} +@string{gd04 = "Proceedings of the 13th International Symposium on Graph Drawing, GD 2004"} +@string{gd05 = "Proceedings of the 14th International Symposium on Graph Drawing, GD 2005"} +@string{gd06 = "Proceedings of the 15th International Symposium on Graph Drawing, GD 2006"} +@string{gd07 = "Proceedings of the 16th International Symposium on Graph Drawing, GD 2007"} +@string{gd08 = "Proceedings of the 17th International Symposium on Graph Drawing, GD 2008"} +@string{gd09 = "Proceedings of the 18th International Symposium on Graph Drawing, GD 2009"} + +@string{gragra86 = "Proceedings of the 3rd International Workshop on Graph-Grammars and Their Application to Computer Science"} +@string{gragra90 = "Proceedings of the 4th International Workshop on Graph-Grammars and Their Application to Computer Science"} + +@string{icalp74 = "Proceedings of the 1st International Colloquium on Automata, Languages and Programming, ICALP'74"} +@string{icalp75 = "Proceedings of the 2nd International Colloquium on Automata, Languages and Programming, ICALP'75"} +@string{icalp76 = "Proceedings of the 3rd International Colloquium on Automata, Languages and Programming, ICALP'76"} +@string{icalp77 = "Proceedings of the 4th International Colloquium on Automata, Languages and Programming, ICALP'77"} +@string{icalp78 = "Proceedings of the 5th International Colloquium on Automata, Languages and Programming, ICALP'78"} +@string{icalp79 = "Proceedings of the 6th International Colloquium on Automata, Languages and Programming, ICALP'79"} +@string{icalp80 = "Proceedings of the 7th International Colloquium on Automata, Languages and Programming, ICALP'80"} +@string{icalp81 = "Proceedings of the 8th International Colloquium on Automata, Languages and Programming, ICALP'82"} +@string{icalp82 = "Proceedings of the 9th International Colloquium on Automata, Languages and Programming, ICALP'83"} +@string{icalp83 = "Proceedings of the 10th International Colloquium on Automata, Languages and Programming, ICALP'81"} +@string{icalp84 = "Proceedings of the 11th International Colloquium on Automata, Languages and Programming, ICALP'84"} +@string{icalp85 = "Proceedings of the 12th International Colloquium on Automata, Languages and Programming, ICALP'85"} +@string{icalp86 = "Proceedings of the 13th International Colloquium on Automata, Languages and Programming, ICALP'86"} +@string{icalp87 = "Proceedings of the 14th International Colloquium on Automata, Languages and Programming, ICALP'87"} +@string{icalp88 = "Proceedings of the 15th International Colloquium on Automata, Languages and Programming, ICALP'88"} +@string{icalp89 = "Proceedings of the 16th International Colloquium on Automata, Languages and Programming, ICALP'89"} +@string{icalp90 = "Proceedings of the 17th International Colloquium on Automata, Languages and Programming, ICALP'90"} +@string{icalp91 = "Proceedings of the 18th International Colloquium on Automata, Languages and Programming, ICALP'91"} +@string{icalp92 = "Proceedings of the 19th International Colloquium on Automata, Languages and Programming, ICALP'92"} +@string{icalp93 = "Proceedings of the 20th International Colloquium on Automata, Languages and Programming, ICALP'93"} +@string{icalp94 = "Proceedings of the 21st International Colloquium on Automata, Languages and Programming, ICALP'94"} +@string{icalp95 = "Proceedings of the 22nd International Colloquium on Automata, Languages and Programming, ICALP'95"} +@string{icalp96 = "Proceedings of the 23rd International Colloquium on Automata, Languages and Programming, ICALP'96"} +@string{icalp97 = "Proceedings of the 24th International Colloquium on Automata, Languages and Programming, ICALP'97"} +@string{icalp98 = "Proceedings of the 25th International Colloquium on Automata, Languages and Programming, ICALP'98"} +@string{icalp99 = "Proceedings of the 26th International Colloquium on Automata, Languages and Programming, ICALP'99"} +@string{icalp00 = "Proceedings of the 27th International Colloquium on Automata, Languages and Programming, ICALP 2000"} +@string{icalp01 = "Proceedings of the 28th International Colloquium on Automata, Languages and Programming, ICALP 2001"} +@string{icalp02 = "Proceedings of the 29th International Colloquium on Automata, Languages and Programming, ICALP 2002"} +@string{icalp03 = "Proceedings of the 30th International Colloquium on Automata, Languages and Programming, ICALP 2003"} +@string{icalp04 = "Proceedings of the 31st International Colloquium on Automata, Languages and Programming, ICALP 2004"} +@string{icalp05 = "Proceedings of the 32nd International Colloquium on Automata, Languages and Programming, ICALP 2005"} +@string{icalp06 = "Proceedings of the 33rd International Colloquium on Automata, Languages and Programming, ICALP 2006"} +@string{icalp07 = "Proceedings of the 34th International Colloquium on Automata, Languages and Programming, ICALP 2007"} +@string{icalp08-1 = "Proceedings of the 35th International Colloquium on Automata, Languages and Programming, +ICALP 2008, Part I"} +@string{icalp09-1 = "Proceedings of the 36th International Colloquium on Automata, Languages and Programming, +ICALP 2009, Part I"} + +@string{isaac92 = "Proceedings of the 3rd International Symposium on Algorithms and Computation, ISAAC'92"} +@string{isaac93 = "Proceedings of the 4th International Symposium on Algorithms and Computation, ISAAC'93"} +@string{isaac94 = "Proceedings of the 5th International Symposium on Algorithms and Computation, ISAAC'94"} +@string{isaac95 = "Proceedings of the 6th International Symposium on Algorithms and Computation, ISAAC'95"} +@string{isaac96 = "Proceedings of the 7th International Symposium on Algorithms and Computation, ISAAC'96"} +@string{isaac97 = "Proceedings of the 8th International Symposium on Algorithms and Computation, ISAAC'97"} +@string{isaac98 = "Proceedings of the 9th International Symposium on Algorithms and Computation, ISAAC'98"} +@string{isaac99 = "Proceedings of the 10th International Symposium on Algorithms and Computation, ISAAC'99"} +@string{isaac00 = "Proceedings of the 11th International Symposium on Algorithms and Computation, ISAAC 2000"} +@string{isaac01 = "Proceedings of the 12th International Symposium on Algorithms and Computation, ISAAC 2001"} +@string{isaac02 = "Proceedings of the 13th International Symposium on Algorithms and Computation, ISAAC 2002"} +@string{isaac03 = "Proceedings of the 14th International Symposium on Algorithms and Computation, ISAAC 2003"} +@string{isaac04 = "Proceedings of the 15th International Symposium on Algorithms and Computation, ISAAC 2004"} +@string{isaac05 = "Proceedings of the 16th International Symposium on Algorithms and Computation, ISAAC 2005"} +@string{isaac06 = "Proceedings of the 17th International Symposium on Algorithms and Computation, ISAAC 2006"} +@string{isaac07 = "Proceedings of the 18th International Symposium on Algorithms and Computation, ISAAC 2007"} +@string{isaac08 = "Proceedings of the 19th International Symposium on Algorithms and Computation, ISAAC 2008"} +@string{isaac09 = "Proceedings of the 20th International Symposium on Algorithms and Computation, ISAAC 2009"} + +@string{iwpec04 = "Proceedings of the 1st International Workshop on Parameterized and Exact Computation, IWPEC 2004"} +@string{iwpec06 = "Proceedings of the 2nd International Workshop on Parameterized and Exact Computation, IWPEC 2006"} +@string{iwpec08 = "Proceedings of the 3rd International Workshop on Parameterized and Exact Computation, IWPEC 2008"} +@string{iwpec09 = "Proceedings of the 4th International Workshop on Parameterized and Exact Computation, IWPEC 2009"} + +@string{latin92 = "Proceedings of the 1st Latin American Symposium on Theoretical Informatics, LATIN'92"} +@string{latin95 = "Proceedings of the 2nd Latin American Symposium on Theoretical Informatics, LATIN'95"} +@string{latin98 = "Proceedings of the 3rd Latin American Symposium on Theoretical Informatics, LATIN'98"} +@string{latin00 = "Proceedings of the 4th Latin American Symposium on Theoretical Informatics, LATIN 2000"} +@string{latin02 = "Proceedings of the 5th Latin American Symposium on Theoretical Informatics, LATIN 2002"} +@string{latin04 = "Proceedings of the 6th Latin American Symposium on Theoretical Informatics, LATIN 2004"} +@string{latin06 = "Proceedings of the 7th Latin American Symposium on Theoretical Informatics, LATIN 2006"} +@string{latin08 = "Proceedings of the 8th Latin American Symposium on Theoretical Informatics, LATIN 2008"} + +@string{mfcs90 = "Proceedings of the 15th International Symposium on Mathematical Foundations of Computer Science, MFCS'90"} +@string{mfcs91 = "Proceedings of the 16th International Symposium on Mathematical Foundations of Computer Science, MFCS'91"} +@string{mfcs92 = "Proceedings of the 17th International Symposium on Mathematical Foundations of Computer Science, MFCS'92"} +@string{mfcs93 = "Proceedings of the 18th International Symposium on Mathematical Foundations of Computer Science, MFCS'93"} +@string{mfcs94 = "Proceedings of the 19th International Symposium on Mathematical Foundations of Computer Science, MFCS'94"} +@string{mfcs95 = "Proceedings of the 20th International Symposium on Mathematical Foundations of Computer Science, MFCS'95"} +@string{mfcs96 = "Proceedings of the 21st International Symposium on Mathematical Foundations of Computer Science, MFCS'96"} +@string{mfcs97 = "Proceedings of the 22nd International Symposium on Mathematical Foundations of Computer Science, MFCS'97"} +@string{mfcs98 = "Proceedings of the 23rd International Symposium on Mathematical Foundations of Computer Science, MFCS'98"} +@string{mfcs99 = "Proceedings of the 24th International Symposium on Mathematical Foundations of Computer Science, MFCS'99"} +@string{mfcs00 = "Proceedings of the 25th International Symposium on Mathematical Foundations of Computer Science, MFCS 2000"} +@string{mfcs01 = "Proceedings of the 26th International Symposium on Mathematical Foundations of Computer Science, MFCS 2001"} +@string{mfcs02 = "Proceedings of the 27th International Symposium on Mathematical Foundations of Computer Science, MFCS 2002"} +@string{mfcs03 = "Proceedings of the 28th International Symposium on Mathematical Foundations of Computer Science, MFCS 2003"} +@string{mfcs04 = "Proceedings of the 29th International Symposium on Mathematical Foundations of Computer Science, MFCS 2004"} +@string{mfcs05 = "Proceedings of the 30th International Symposium on Mathematical Foundations of Computer Science, MFCS 2005"} +@string{mfcs06 = "Proceedings of the 31st International Symposium on Mathematical Foundations of Computer Science, MFCS 2006"} +@string{mfcs07 = "Proceedings of the 32nd International Symposium on Mathematical Foundations of Computer Science, MFCS 2007"} +@string{mfcs08 = "Proceedings of the 33rd International Symposium on Mathematical Foundations of Computer Science, MFCS 2008"} +@string{mfcs09 = "Proceedings of the 34th International Symposium on Mathematical Foundations of Computer Science, MFCS 2009"} + +@string{soda90 = "Proceedings of the 1st Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'90"} +@string{soda91 = "Proceedings of the 2nd Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'91"} +@string{soda92 = "Proceedings of the 3rd Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'92"} +@string{soda93 = "Proceedings of the 4th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'93"} +@string{soda94 = "Proceedings of the 5th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'94"} +@string{soda95 = "Proceedings of the 6th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'95"} +@string{soda96 = "Proceedings of the 7th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'96"} +@string{soda97 = "Proceedings of the 8th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'97"} +@string{soda98 = "Proceedings of the 9th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'98"} +@string{soda99 = "Proceedings of the 10th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA'99"} +@string{soda00 = "Proceedings of the 11th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2000"} +@string{soda01 = "Proceedings of the 12th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2001"} +@string{soda02 = "Proceedings of the 13th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2002"} +@string{soda03 = "Proceedings of the 14th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2003"} +@string{soda04 = "Proceedings of the 15th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2004"} +@string{soda05 = "Proceedings of the 16th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2005"} +@string{soda06 = "Proceedings of the 16th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2006"} +@string{soda07 = "Proceedings of the 17th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2007"} +@string{soda08 = "Proceedings of the 18th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2008"} +@string{soda09 = "Proceedings of the 19th Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2009"} + +@string{sofsem04 = "Proceedings of the 30th Conference on Current Trends in Theory and Practive of Computer Science, SOFSEM 2000"} +@string{sofsem05 = "Proceedings of the 31st Conference on Current Trends in Theory and Practive of Computer Science, SOFSEM 2005"} +@string{sofsem06 = "Proceedings of the 32nd Conference on Current Trends in Theory and Practive of Computer Science, SOFSEM 2006"} +@string{sofsem07 = "Proceedings of the 33rd Conference on Current Trends in Theory and Practive of Computer Science, SOFSEM 2007"} +@string{sofsem08 = "Proceedings of the 34th Conference on Current Trends in Theory and Practive of Computer Science, SOFSEM 2008"} +@string{sofsem09 = "Proceedings of the 35th Conference on Current Trends in Theory and Practive of Computer Science, SOFSEM 2009"} +@string{sofsem10 = "Proceedings of the 36th Conference on Current Trends in Theory and Practive of Computer Science, SOFSEM 2010"} + +@string{stacs84 = "Proceedings 1st International Symposium on Theoretical Aspects of Computer Science, STACS'84"} +@string{stacs85 = "Proceedings 2nd International Symposium on Theoretical Aspects of Computer Science, STACS'85"} +@string{stacs86 = "Proceedings 3rd International Symposium on Theoretical Aspects of Computer Science, STACS'86"} +@string{stacs87 = "Proceedings 4th International Symposium on Theoretical Aspects of Computer Science, STACS'87"} +@string{stacs88 = "Proceedings 5th International Symposium on Theoretical Aspects of Computer Science, STACS'88"} +@string{stacs89 = "Proceedings 6th International Symposium on Theoretical Aspects of Computer Science, STACS'89"} +@string{stacs90 = "Proceedings 7th International Symposium on Theoretical Aspects of Computer Science, STACS'90"} +@string{stacs91 = "Proceedings 8th International Symposium on Theoretical Aspects of Computer Science, STACS'91"} +@string{stacs92 = "Proceedings 9th International Symposium on Theoretical Aspects of Computer Science, STACS'92"} +@string{stacs93 = "Proceedings 10th International Symposium on Theoretical Aspects of Computer Science, STACS'93"} +@string{stacs94 = "Proceedings 11th International Symposium on Theoretical Aspects of Computer Science, STACS'94"} +@string{stacs95 = "Proceedings 12th International Symposium on Theoretical Aspects of Computer Science, STACS'95"} +@string{stacs96 = "Proceedings 13th International Symposium on Theoretical Aspects of Computer Science, STACS'96"} +@string{stacs97 = "Proceedings 14th International Symposium on Theoretical Aspects of Computer Science, STACS'97"} +@string{stacs98 = "Proceedings 15th International Symposium on Theoretical Aspects of Computer Science, STACS'98"} +@string{stacs99 = "Proceedings 16th International Symposium on Theoretical Aspects of Computer Science, STACS'99"} +@string{stacs00 = "Proceedings 17th International Symposium on Theoretical Aspects of Computer Science, STACS 2000"} +@string{stacs01 = "Proceedings 18th International Symposium on Theoretical Aspects of Computer Science, STACS 2001"} +@string{stacs02 = "Proceedings 19th International Symposium on Theoretical Aspects of Computer Science, STACS 2002"} +@string{stacs03 = "Proceedings 20th International Symposium on Theoretical Aspects of Computer Science, STACS 2003"} +@string{stacs04 = "Proceedings 21st International Symposium on Theoretical Aspects of Computer Science, STACS 2004"} +@string{stacs05 = "Proceedings 22nd International Symposium on Theoretical Aspects of Computer Science, STACS 2005"} +@string{stacs06 = "Proceedings 23rd International Symposium on Theoretical Aspects of Computer Science, STACS 2006"} +@string{stacs07 = "Proceedings 24th International Symposium on Theoretical Aspects of Computer Science, STACS 2007"} +@string{stacs08 = "Proceedings 25th International Symposium on Theoretical Aspects of Computer Science, STACS 2008"} +@string{stacs09 = "Proceedings 26th International Symposium on Theoretical Aspects of Computer Science, STACS 2009"} + +@string{stoc71 = "Proceedings of the 3rd Annual Symposium on Theory of Computing, STOC'71"} +@string{stoc72 = "Proceedings of the 4th Annual Symposium on Theory of Computing, STOC'72"} +@string{stoc73 = "Proceedings of the 5th Annual Symposium on Theory of Computing, STOC'73"} +@string{stoc74 = "Proceedings of the 6th Annual Symposium on Theory of Computing, STOC'74"} +@string{stoc75 = "Proceedings of the 7th Annual Symposium on Theory of Computing, STOC'75"} +@string{stoc76 = "Proceedings of the 8th Annual Symposium on Theory of Computing, STOC'76"} +@string{stoc77 = "Proceedings of the 9th Annual Symposium on Theory of Computing, STOC'77"} +@string{stoc78 = "Proceedings of the 10th Annual Symposium on Theory of Computing, STOC'78"} +@string{stoc79 = "Proceedings of the 11th Annual Symposium on Theory of Computing, STOC'79"} +@string{stoc80 = "Proceedings of the 12th Annual Symposium on Theory of Computing, STOC'80"} +@string{stoc81 = "Proceedings of the 13th Annual Symposium on Theory of Computing, STOC'81"} +@string{stoc82 = "Proceedings of the 14th Annual Symposium on Theory of Computing, STOC'82"} +@string{stoc83 = "Proceedings of the 15th Annual Symposium on Theory of Computing, STOC'83"} +@string{stoc84 = "Proceedings of the 16th Annual Symposium on Theory of Computing, STOC'84"} +@string{stoc85 = "Proceedings of the 17th Annual Symposium on Theory of Computing, STOC'85"} +@string{stoc86 = "Proceedings of the 18th Annual Symposium on Theory of Computing, STOC'86"} +@string{stoc87 = "Proceedings of the 19th Annual Symposium on Theory of Computing, STOC'87"} +@string{stoc88 = "Proceedings of the 20th Annual Symposium on Theory of Computing, STOC'88"} +@string{stoc89 = "Proceedings of the 21st Annual Symposium on Theory of Computing, STOC'89"} +@string{stoc90 = "Proceedings of the 22nd Annual Symposium on Theory of Computing, STOC'90"} +@string{stoc91 = "Proceedings of the 23rd Annual Symposium on Theory of Computing, STOC'91"} +@string{stoc92 = "Proceedings of the 24th Annual Symposium on Theory of Computing, STOC'92"} +@string{stoc93 = "Proceedings of the 25th Annual Symposium on Theory of Computing, STOC'93"} +@string{stoc94 = "Proceedings of the 26th Annual Symposium on Theory of Computing, STOC'94"} +@string{stoc95 = "Proceedings of the 27th Annual Symposium on Theory of Computing, STOC'95"} +@string{stoc96 = "Proceedings of the 28th Annual Symposium on Theory of Computing, STOC'96"} +@string{stoc97 = "Proceedings of the 29th Annual Symposium on Theory of Computing, STOC'97"} +@string{stoc98 = "Proceedings of the 30th Annual Symposium on Theory of Computing, STOC'98"} +@string{stoc99 = "Proceedings of the 31st Annual Symposium on Theory of Computing, STOC'99"} +@string{stoc00 = "Proceedings of the 32nd Annual Symposium on Theory of Computing, STOC 2000"} +@string{stoc01 = "Proceedings of the 33rd Annual Symposium on Theory of Computing, STOC 2001"} +@string{stoc02 = "Proceedings of the 34th Annual Symposium on Theory of Computing, STOC 2002"} +@string{stoc03 = "Proceedings of the 35th Annual Symposium on Theory of Computing, STOC 2003"} +@string{stoc04 = "Proceedings of the 36th Annual Symposium on Theory of Computing, STOC 2004"} +@string{stoc05 = "Proceedings of the 37th Annual Symposium on Theory of Computing, STOC 2005"} +@string{stoc06 = "Proceedings of the 38th Annual Symposium on Theory of Computing, STOC 2006"} +@string{stoc07 = "Proceedings of the 39th Annual Symposium on Theory of Computing, STOC 2007"} +@string{stoc08 = "Proceedings of the 40th Annual Symposium on Theory of Computing, STOC 2008"} +@string{stoc09 = "Proceedings of the 41st Annual Symposium on Theory of Computing, STOC 2009"} + +@string{swat88 = "Proceedings of the 1st Scandinavian Workshop on Algorithm Theory, SWAT'88"} +@string{swat90 = "Proceedings of the 2nd Scandinavian Workshop on Algorithm Theory, SWAT'90"} +@string{swat92 = "Proceedings of the 3rd Scandinavian Workshop on Algorithm Theory, SWAT'92"} +@string{swat94 = "Proceedings of the 4th Scandinavian Workshop on Algorithm Theory, SWAT'94"} +@string{swat96 = "Proceedings of the 5th Scandinavian Workshop on Algorithm Theory, SWAT'96"} +@string{swat98 = "Proceedings of the 6th Scandinavian Workshop on Algorithm Theory, SWAT'98"} +@string{swat00 = "Proceedings of the 7th Scandinavian Workshop on Algorithm Theory, SWAT 2000"} +@string{swat02 = "Proceedings of the 8th Scandinavian Workshop on Algorithm Theory, SWAT 2002"} +@string{swat04 = "Proceedings of the 9th Scandinavian Workshop on Algorithm Theory, SWAT 2004"} +@string{swat06 = "Proceedings of the 10th Scandinavian Workshop on Algorithm Theory, SWAT 2006"} +@string{swat08 = "Proceedings of the 11th Scandinavian Workshop on Algorithm Theory, SWAT 2008"} + +@string{tamc08 = "Proceedings of the 5th Annual Conference on Theory and Applications +of Models of Computation, TAMC 2008"} +@string{tamc09 = "Proceedings of the 6th Annual Conference on Theory and Applications +of Models of Computation, TAMC 2009"} + +@string{uai90 = "Proceedings of the 6th Annual Conference on Uncertainty in Artificial Intelligence, UAI'90"} +@string{uai91 = "Proceedings of the 7th Annual Conference on Uncertainty in Artificial Intelligence, UAI'91"} +@string{uai92 = "Proceedings of the 8th Annual Conference on Uncertainty in Artificial Intelligence, UAI'92"} +@string{uai93 = "Proceedings of the 9th Annual Conference on Uncertainty in Artificial Intelligence, UAI'93"} +@string{uai94 = "Proceedings of the 10th Annual Conference on Uncertainty in Artificial Intelligence, UAI'94"} +@string{uai95 = "Proceedings of the 11th Annual Conference on Uncertainty in Artificial Intelligence, UAI'95"} +@string{uai96 = "Proceedings of the 12th Annual Conference on Uncertainty in Artificial Intelligence, UAI'96"} +@string{uai97 = "Proceedings of the 13th Annual Conference on Uncertainty in Artificial Intelligence, UAI'97"} +@string{uai98 = "Proceedings of the 14th Annual Conference on Uncertainty in Artificial Intelligence, UAI'98"} +@string{uai99 = "Proceedings of the 15th Annual Conference on Uncertainty in Artificial Intelligence, UAI'99"} +@string{uai00 = "Proceedings of the 16th Annual Conference on Uncertainty in Artificial Intelligence, UAI 2000"} +@string{uai01 = "Proceedings of the 17th Annual Conference on Uncertainty in Artificial Intelligence, UAI 2001"} +@string{uai02 = "Proceedings of the 18th Annual Conference on Uncertainty in Artificial Intelligence, UAI 2002"} +@string{uai03 = "Proceedings of the 19th Annual Conference on Uncertainty in Artificial Intelligence, UAI 2003"} +@string{uai04 = "Proceedings of the 20th Annual Conference on Uncertainty in Artificial Intelligence, UAI 2004"} +@string{uai05 = "Proceedings of the 21st Annual Conference on Uncertainty in Artificial Intelligence, UAI 2005"} +@string{uai06 = "Proceedings of the 22nd Annual Conference on Uncertainty in Artificial Intelligence, UAI 2006"} +@string{uai07 = "Proceedings of the 23rd Annual Conference on Uncertainty in Artificial Intelligence, UAI 2007"} +@string{uai08 = "Proceedings of the 24th Annual Conference on Uncertainty in Artificial Intelligence, UAI 2008"} +@string{uai09 = "Proceedings of the 25th Annual Conference on Uncertainty in Artificial Intelligence, UAI 2009"} + +@string{wads89 = "Proceedings of the 1st Workshop on Algorithms and Data Structures, WADS'89"} +@string{wads91 = "Proceedings of the 2nd Workshop on Algorithms and Data Structures, WADS'91"} +@string{wads93 = "Proceedings of the 3rd Workshop on Algorithms and Data Structures, WADS'93"} +@string{wads95 = "Proceedings of the 4th International Workshop on Algorithms and Data Structures, WADS'95"} +@string{wads97 = "Proceedings of the 5th International Workshop on Algorithms and Data Structures, WADS'97"} +@string{wads99 = "Proceedings of the 6th International Workshop on Algorithms and Data Structures, WADS'99"} +@string{wads01 = "Proceedings of the 7th International Workshop on Algorithms and Data Structures, WADS 2001"} +@string{wads03 = "Proceedings of the 8th International Workshop on Algorithms and Data Structures, WADS 2003"} +@string{wads05 = "Proceedings of the 9th International Workshop on Algorithms and Data Structures, WADS 2005"} +@string{wads07 = "Proceedings of the 10th International Workshop on Algorithms and Data Structures, WADS 2007"} +@string{wads09 = "Proceedings of the 11th International Symposium on Algorithms and Data Structures, WADS 2009"} + +@string{waoa03 = "Proceeings of the 1st International Workshop on Approximation and Online Algorithms, WAOA 2003"} +@string{waoa04 = "Proceeings of the 2nd International Workshop on Approximation and Online Algorithms, WAOA 2004"} +@string{waoa05 = "Proceeings of the 3rd International Workshop on Approximation and Online Algorithms, WAOA 2005"} +@string{waoa06 = "Proceeings of the 4th International Workshop on Approximation and Online Algorithms, WAOA 2006"} +@string{waoa07 = "Proceeings of the 5th International Workshop on Approximation and Online Algorithms, WAOA 2007"} +@string{waoa08 = "Proceeings of the 6th International Workshop on Approximation and Online Algorithms, WAOA 2008"} +@string{waoa09 = "Proceeings of the 7th International Workshop on Approximation and Online Algorithms, WAOA 2009"} + +@string{wea02 = "Proceedings of the 1st International Workshop on Experimental and Efficient Algorithms, WEA 2002"} +@string{wea03 = "Proceedings of the 2nd International Workshop on Experimental and Efficient Algorithms, WEA 2003"} +@string{wea04 = "Proceedings of the 3rd International Workshop on Experimental and Efficient Algorithms, WEA 2004"} +@string{wea05 = "Proceedings of the 4th International Workshop on Experimental and Efficient Algorithms, WEA 2005"} +@string{wea06 = "Proceedings of the 5th International Workshop on Experimental and Efficient Algorithms, WEA 2006"} +@string{wea07 = "Proceedings of the 6th International Workshop on Experimental and Efficient Algorithms, WEA 2007"} +@string{wea08 = "Proceedings of the 7th International Workshop on Experimental and Efficient Algorithms, WEA 2008"} +@string{sea09 = "Proceedings of the 8th International Symposium on Experimental and Efficient Algorithms, SEA 2009"} + +@string{wg82 = "Proceedings of the 8th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'82"} +@string{wg83 = "Proceedings of the 9th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'83"} +@string{wg84 = "Proceedings of the 10th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'84"} +@string{wg85 = "Proceedings of the 11th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'85"} +@string{wg86 = "Proceedings of the 12th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'86"} +@string{wg87 = "Proceedings of the 13th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'87"} +@string{wg88 = "Proceedings of the 14th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'88"} +@string{wg89 = "Proceedings of the 15th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'89"} +@string{wg90 = "Proceedings of the 16th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'90"} +@string{wg91 = "Proceedings of the 17th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'91"} +@string{wg92 = "Proceedings of the 18th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'92"} +@string{wg93 = "Proceedings of the 19th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'93"} +@string{wg94 = "Proceedings of the 20th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'94"} +@string{wg95 = "Proceedings of the 21st International Workshop on Graph-Theoretic Concepts in Computer Science, WG'95"} +@string{wg96 = "Proceedings of the 22nd International Workshop on Graph-Theoretic Concepts in Computer Science, WG'96"} +@string{wg97 = "Proceedings of the 23rd International Workshop on Graph-Theoretic Concepts in Computer Science, WG'97"} +@string{wg98 = "Proceedings of the 24th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'98"} +@string{wg99 = "Proceedings of the 25th International Workshop on Graph-Theoretic Concepts in Computer Science, WG'99"} +@string{wg00 = "Proceedings of the 26th International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2000"} +@string{wg01 = "Proceedings of the 27th International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2001"} +@string{wg02 = "Proceedings of the 28th International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2002"} +@string{wg03 = "Proceedings of the 29th International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2003"} +@string{wg04 = "Proceedings of the 30th International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2004"} +@string{wg05 = "Proceedings of the 31st International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2005"} +@string{wg06 = "Proceedings of the 32nd International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2006"} +@string{wg07 = "Proceedings of the 33rd International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2007"} +@string{wg08 = "Proceedings of the 34th International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2008"} +@string{wg09 = "Proceedings of the 35th International Workshop on Graph-Theoretic Concepts in Computer Science, WG 2009"} + +% Stings for the names of Springer LNCS proceedings + +@string{lncs52 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 52"} +@string{lncs172 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 172"} +@string{lncs182 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 182"} +@string{lncs199 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 199"} +@string{lncs210 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 210"} +@string{lncs219 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 219"} +@string{lncs246 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 246"} +@string{lncs267 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 267"} +@string{lncs291 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 291"} +@string{lncs299 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 299"} +@string{lncs317 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 317"} +@string{lncs318 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 318"} +@string{lncs319 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 319"} +@string{lncs344 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 344"} +@string{lncs382 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 382"} +@string{lncs411 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 411"} +@string{lncs452 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 452"} +@string{lncs477 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 477"} +@string{lncs484 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 484"} +@string{lncs510 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 510"} +@string{lncs532 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 532"} +@string{lncs533 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 533"} +@string{lncs583 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 583"} +@string{lncs621 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 621"} +@string{lncs623 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 623"} +@string{lncs650 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 650"} +@string{lncs657 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 657"} +@string{lncs665 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 665"} +@string{lncs700 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 700"} +@string{lncs709 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 700"} +@string{lncs726 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 726"} +@string{lncs762 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 762"} +@string{lncs787 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 787"} +@string{lncs790 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 790"} +@string{lncs824 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 824"} +@string{lncs831 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 831"} +@string{lncs842 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 842"} +@string{lncs855 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 855"} +@string{lncs894 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 894"} +@string{lncs900 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 900"} +@string{lncs903 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 903"} +@string{lncs944 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 944"} +@string{lncs945 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 945"} +@string{lncs955 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 955"} +@string{lncs979 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 979"} +@string{lncs1017 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1017"} +@string{lncs1018 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1018"} +@string{lncs1028 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1028"} +@string{lncs1046 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1046"} +@string{lncs1075 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1075"} +@string{lncs1090 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1090"} +@string{lncs1136 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1136"} +@string{lncs1178 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1178"} +@string{lncs1197 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1197"} +@string{lncs1203 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1203"} +@string{lncs1256 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1256"} +@string{lncs1295 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1295"} +@string{lncs1335 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1335"} +@string{lncs1373 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1373"} +@string{lncs1461 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1461"} +@string{lncs1517 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1517"} +@string{lncs1563 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1563"} +@string{lncs1665 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1665"} +@string{lncs1770 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1770"} +@string{lncs1776 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1776"} +@string{lncs1851 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1851"} +@string{lncs1893 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1893"} +@string{lncs1969 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 1969"} +@string{lncs2076 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2076"} +@string{lncs2125 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2125"} +@string{lncs2136 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2136"} +@string{lncs2245 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2245"} +@string{lncs2286 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2286"} +@string{lncs2368 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2368"} +@string{lncs2409 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2409"} +@string{lncs2461 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2461"} +@string{lncs2470 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2470"} +@string{lncs2518 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2518"} +@string{lncs2556 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2556"} +@string{lncs2573 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2573"} +@string{lncs2647 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2647"} +@string{lncs2719 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2719"} +@string{lncs2747 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2747"} +@string{lncs2751 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2751"} +@string{lncs2832 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2832"} +@string{lncs2880 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2880"} +@string{lncs2906 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2906"} +@string{lncs2996 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 2996"} +@string{lncs3153 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3153"} +@string{lncs3142 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3142"} +@string{lncs3162 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3162"} +@string{lncs3221 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3221"} +@string{lncs3353 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3353"} +@string{lncs3381 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3381"} +@string{lncs3404 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3404"} +@string{lncs3503 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3503"} +@string{lncs3580 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3580"} +@string{lncs3595 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3595"} +@string{lncs3608 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3608"} +@string{lncs3618 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3618"} +@string{lncs3624 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3624"} +@string{lncs3669 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3669"} +@string{lncs3787 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3787"} +@string{lncs3732 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3732"} +@string{lncs3709 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3709"} +@string{lncs3827 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3827"} +@string{lncs3831 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3831"} +@string{lncs3843 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3843"} +@string{lncs3879 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3879"} +@string{lncs3887 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 3887"} +@string{lncs4041 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4041"} +@string{lncs4059 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4059"} +@string{lncs4168 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4168"} +@string{lncs4169 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4169"} +@string{lncs4271 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4271"} +@string{lncs4337 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4337"} +@string{lncs4372 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4372"} +@string{lncs4393 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4393"} +@string{lncs4474 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4474"} +@string{lncs4475 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4475"} +@string{lncs4596 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4596"} +@string{lncs4598 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4598"} +@string{lncs4614 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4614"} +@string{lncs4769 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4769"} +@string{lncs4835 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4835"} +@string{lncs4957 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4957"} +@string{lncs4978 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 4978"} +@string{lncs5018 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5018"} +@string{lncs5038 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5038"} +@string{lncs5125 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5125"} +@string{lncs5162 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5162"} +@string{lncs5344 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5344"} +@string{lncs5369 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5369"} +@string{lncs5404 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5404"} +@string{lncs5532 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5532"} +@string{lncs5555 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5555"} +@string{lncs5734 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5734"} +@string{lncs5757 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5757"} +@string{lncs5901 = "Springer Verlag, Lecture Notes in Computer Science, vol.\ 5901"} + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding1.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding1.bcf new file mode 100644 index 00000000000..cab77a44d3b --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding1.bcf @@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">encoding1.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding1.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding1.bib new file mode 100644 index 00000000000..6c2467a70b0 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding1.bib @@ -0,0 +1,9 @@ +% -*- coding: latin-9-unix -*- +% This is a latin9 encoded file (Notice the "LATIN CAPITAL LETTER S WITH CARON"). +% The top line is a hint to Emacs to open in the right encoding +@BOOK{test¦, + YEAR = {1999}, + AUTHOR = {Edward Encalcer}, + TITLE = {¦ome title}, + PUBLISHER = {A press} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding2.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding2.bcf new file mode 100644 index 00000000000..3c3032b2ef3 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding2.bcf @@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">encoding2.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding2.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding2.bib new file mode 100644 index 00000000000..6c4e5cb21cd --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding2.bib @@ -0,0 +1,7 @@ +% This is a UTF-8 encoded file +@BOOK{testÅ , + YEAR = {1999}, + AUTHOR = {Edward Encalcer}, + TITLE = {Å ome title}, + PUBLISHER = {A press} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding3.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding3.bcf new file mode 100644 index 00000000000..5cc417828db --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding3.bcf @@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">encoding3.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding3.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding3.bib new file mode 100644 index 00000000000..9cb493e81c8 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding3.bib @@ -0,0 +1,9 @@ +% -*- coding: latin-1-unix -*- +% This is a latin1 encoded file (Notice the "LATIN SMALL LETTER O WITH DIAERESIS"). +% The top line is a hint to Emacs to open in the right encoding +@BOOK{test1, + YEAR = {1999}, + AUTHOR = {Edward Encalcer}, + TITLE = {Söme title}, + PUBLISHER = {A press} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding4.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding4.bcf new file mode 100644 index 00000000000..fbab8926441 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding4.bcf @@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">encoding4.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding4.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding4.bib new file mode 100644 index 00000000000..ccee48c625c --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding4.bib @@ -0,0 +1,9 @@ +% -*- coding: latin-2-unix -*- +% This is a latin2 encoded file (Notice the "LATIN CAPITAL LETTER Z WITH DOT ABOVE"). +% The top line is a hint to Emacs to open in the right encoding +@BOOK{test1, + YEAR = {1999}, + AUTHOR = {Edward Encalcer}, + TITLE = {¯ome title}, + PUBLISHER = {A press} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding5.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding5.bcf new file mode 100644 index 00000000000..ea5c3b02ce8 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding5.bcf @@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">encoding5.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding5.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding5.bib new file mode 100644 index 00000000000..daaa1aa51b3 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding5.bib @@ -0,0 +1,7 @@ +% This is a UTF-8 encoded file +@BOOK{test, + AUTHOR = {Edward Encalcer}, + YEAR = {1999}, + TITLE = {à titlé}, + PUBLISHER = {A press} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding6.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding6.bcf new file mode 100644 index 00000000000..d11d154523f --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding6.bcf @@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">encoding6.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding6.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding6.bib new file mode 100644 index 00000000000..3f4f8497def --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/encoding6.bib @@ -0,0 +1,7 @@ +% This is a UTF-8 encoded file +@BOOK{test, + AUTHOR = {Edward Encalcer}, + YEAR = {1999}, + TITLE = {↑à titlé}, + PUBLISHER = {A press} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/examples.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/examples.bib new file mode 100644 index 00000000000..1af8356cd20 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/examples.bib @@ -0,0 +1,1397 @@ +@STRING{anch-ie = {Angew.~Chem. Int.~Ed.} } +@STRING{cup = {Cambridge University Press} } +@STRING{dtv = {Deutscher Taschenbuch-Verlag} } +@STRING{hup = {Harvard University Press} } +@STRING{jams = {J.~Amer. Math. Soc.} } +@STRING{jchph = {J.~Chem. Phys.} } +@STRING{jomch = {J.~Organomet. Chem.} } +@STRING{pup = {Princeton University Press} } + +@InCollection{westfahl:space, + crossref = {westfahl:frontier}, + hyphenation = {american}, + author = {Westfahl, Gary}, + indextitle = {True Frontier, The}, + title = {The True Frontier}, + subtitle = {Confronting and Avoiding the Realities of Space in American Science Fiction + Films}, + pages = {55--65}, + annotation = {A cross-referenced article from a \texttt{collection}. This is an + \texttt{incollection} entry with a \texttt{crossref} field. Note the + \texttt{subtitle} and \texttt{indextitle} fields} +} + +@Set{set, + crossref = {set:herrmann}, + entryset = {set:herrmann,set:aksin,set:yoon}, + annotation = {A \texttt{set} entry with three members. Note the \texttt{entryset} and + \texttt{crossref} fields. The cross-reference must point to the first member of + the set} +} + +@Set{stdmodel, + crossref = {stdmodel:glashow}, + entryset = {stdmodel:glashow,stdmodel:weinberg,stdmodel:salam}, + annotation = {A \texttt{set} entry with three members discussing the standard model of + particle physics.} +} + +@Set{stdmodel:ps_sc, + presort = {zs}, + crossref = {stdmodel:glashow}, + entryset = {stdmodel:glashow,stdmodel:weinberg,stdmodel:salam}, + annotation = {A \texttt{set} entry with three members discussing the standard model of + particle physics. Note the \texttt{entryset} and \texttt{crossref} fields. The + cross-reference must point to the first member of the set} +} + +@Article{angenendt, + hyphenation = {german}, + author = {Angenendt, Arnold}, + indextitle = {In Honore Salvatoris}, + title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der Patrozinienkunde}, + shorttitle = {In Honore Salvatoris}, + journaltitle = {Revue d'Histoire Eccl{\'e}siastique}, + volume = {97}, + year = {2002}, + pages = {431--456, 791--823}, + annotation = {A German article in a French journal. Apart from that, a typical + \texttt{article} entry. Note the \texttt{indextitle} field} +} + +@Article{angenendtsk, + sortkey = {AATESTKEY}, + hyphenation = {german}, + author = {Angenendt, Arnold}, + indextitle = {In Honore Salvatoris}, + title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der Patrozinienkunde}, + shorttitle = {In Honore Salvatoris}, + journaltitle = {Revue d'Histoire Eccl{\'e}siastique}, + volume = {97}, + year = {2002}, + pages = {431--456, 791--823}, + annotation = {A German article in a French journal. Apart from that, a typical + \texttt{article} entry. Note the \texttt{indextitle} field} +} + +@Article{angenendtsa, + hyphenation = {german}, + shortauthor = {AA}, + author = {Angenendt, Arnold}, + indextitle = {In Honore Salvatoris}, + title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der Patrozinienkunde}, + shorttitle = {In Honore Salvatoris}, + journaltitle = {Revue d'Histoire Eccl{\'e}siastique}, + volume = {97}, + year = {2002}, + pages = {431--456, 791--823}, + annotation = {A German article in a French journal. Apart from that, a typical + \texttt{article} entry. Note the \texttt{indextitle} field} +} + +@Article{baez/article, + hyphenation = {american}, + author = {Baez, John C. and Lauda, Aaron D.}, + title = {Higher-Dimensional Algebra V: 2-Groups}, + journaltitle = {Theory and Applications of Categories}, + volume = {12}, + version = {3}, + date = {2004}, + pages = {423--491}, + eprint = {math/0307200v3}, + eprinttype = {arxiv}, + annotation = {An \texttt{article} with \texttt{eprint} and \texttt{eprinttype} fields. Note + that the arXiv reference is transformed into a clickable link if + \texttt{hyperref} support has been enabled. Compare \texttt{baez\slash online} + which is the same item given as an \texttt{online} entry} +} + +@Article{bertram, + hyphenation = {american}, + author = {Bertram, Aaron and Wentworth, Richard}, + title = {Gromov invariants for holomorphic maps on Riemann surfaces}, + shorttitle = {Gromov invariants}, + journaltitle = jams, + volume = {9}, + number = {2}, + year = {1996}, + pages = {529--571}, + annotation = {An \texttt{article} entry with a \texttt{volume} and a \texttt{number} field} +} + +@Article{gillies, + hyphenation = {british}, + author = {Gillies, Alexander}, + title = {Herder and the Preparation of Goethe's Idea of World Literature}, + journaltitle = {Publications of the English Goethe Society}, + volume = {9}, + series = {newseries}, + year = {1933}, + pages = {46--67}, + annotation = {An \texttt{article} entry with a \texttt{series} and a \texttt{volume} field. + Note that format of the \texttt{series} field in the database file} +} + +@Article{kastenholz, + hyphenation = {american}, + author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.}, + indextitle = {Computation of ionic solvation free energies}, + title = {Computation of methodology\hyphen independent ionic solvation free energies + from molecular simulations}, + subtitle = {I. The electrostatic potential in molecular liquids}, + journaltitle = jchph, + volume = {124}, + eid = {124106}, + year = {2006}, + doi = {10.1063/1.2172593}, + annotation = {An \texttt{article} entry with an \texttt{eid} and a \texttt{doi} field. Note + that the \textsc{doi} is transformed into a clickable link if \texttt{hyperref} + support has been enabled}, + abstract = {The computation of ionic solvation free energies from atomistic simulations is + a surprisingly difficult problem that has found no satisfactory solution for + more than 15 years. The reason is that the charging free energies evaluated from + such simulations are affected by very large errors. One of these is related to + the choice of a specific convention for summing up the contributions of solvent + charges to the electrostatic potential in the ionic cavity, namely, on the basis + of point charges within entire solvent molecules (M scheme) or on the basis of + individual point charges (P scheme). The use of an inappropriate convention may + lead to a charge-independent offset in the calculated potential, which depends + on the details of the summation scheme, on the quadrupole-moment trace of the + solvent molecule, and on the approximate form used to represent electrostatic + interactions in the system. However, whether the M or P scheme (if any) + represents the appropriate convention is still a matter of on-going debate. The + goal of the present article is to settle this long-standing controversy by + carefully analyzing (both analytically and numerically) the properties of the + electrostatic potential in molecular liquids (and inside cavities within + them).} +} + +@Article{murray, + hyphenation = {american}, + author = {Hostetler, Michael J. and Wingate, Julia E. and Zhong, Chuan-Jian and Harris, + Jay E. and Vachet, Richard W. and Clark, Michael R. and Londono, J. David and + Green, Stephen J. and Stokes, Jennifer J. and Wignall, George D. and Glish, Gary + L. and Porter, Marc D. and Evans, Neal D. and Murray, Royce W.}, + indextitle = {Alkanethiolate gold cluster molecules}, + title = {Alkanethiolate gold cluster molecules with core diameters from 1.5 to 5.2~nm}, + subtitle = {Core and monolayer properties as a function of core size}, + shorttitle = {Alkanethiolate gold cluster molecules}, + journaltitle = {Langmuir}, + volume = {14}, + number = {1}, + year = {1998}, + pages = {17--30}, + annotation = {An \texttt{article} entry with \arabic{author} authors. By default, long author + and editor lists are automatically truncated. This is configurable} +} + +@Article{reese, + hyphenation = {american}, + author = {Reese, Trevor R.}, + title = {Georgia in Anglo-Spanish Diplomacy, 1736-1739}, + journaltitle = {William and Mary Quarterly}, + volume = {15}, + series = {3}, + year = {1958}, + pages = {168--190}, + annotation = {An \texttt{article} entry with a \texttt{series} and a \texttt{volume} field. + Note the format of the series. If the value of the \texttt{series} field is an + integer, this number is printed as an ordinal and the string \enquote*{series} + is appended automatically} +} + +@Article{set:aksin, + entryset = {set}, + author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent and + {\k{C}}etinkaya, Bekir and Ni, Chaoying and B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan + and {\"O}zkal, Erhan}, + indextitle = {Effect of immobilization on catalytic characteristics}, + title = {Effect of immobilization on catalytic characteristics of saturated + Pd-N-heterocyclic carbenes in Mizoroki-Heck reactions}, + journaltitle = jomch, + volume = {691}, + number = {13}, + year = {2006}, + month = {02}, + pages = {3027--3036} +} + +@Article{set:herrmann, + entryset = {set}, + author = {Herrmann, Wolfgang A. and {\"O}fele, Karl and Schneider, Sabine K. and + Herdtweck, Eberhardt and Hoffmann, Stephan D.}, + indextitle = {Carbocyclic carbene as an efficient catalyst, A}, + title = {A carbocyclic carbene as an efficient catalyst ligand for C--C coupling + reactions}, + journaltitle = anch-ie, + volume = {45}, + number = {23}, + year = {2006}, + pages = {3859--3862} +} + +@Article{set:yoon, + entryset = {set}, + author = {Yoon, Myeong S. and Ryu, Dowook and Kim, Jeongryul and Ahn, Kyo Han}, + indextitle = {Palladium pincer complexes}, + title = {Palladium pincer complexes with reduced bond angle strain: efficient catalysts + for the Heck reaction}, + journaltitle = {Organometallics}, + volume = {25}, + number = {10}, + year = {2006}, + pages = {2409--2411} +} + +@Article{shore, + author = {Shore, Bradd}, + title = {Twice-Born, Once Conceived}, + subtitle = {Meaning Construction and Cultural Cognition}, + journaltitle = {American Anthropologist}, + volume = {93}, + series = {newseries}, + number = {1}, + month = mar, + year = {1991}, + pages = {9--27}, + annotation = {An \texttt{article} entry with \texttt{series}, \texttt{volume}, and + \texttt{number} fields. Note the format of the \texttt{series} which is a + localization key} +} + +@Article{sigfridsson, + hyphenation = {american}, + author = {Sigfridsson, Emma and Ryde, Ulf}, + indextitle = {Methods for deriving atomic charges}, + title = {Comparison of methods for deriving atomic charges from the electrostatic + potential and moments}, + journaltitle = {Journal of Computational Chemistry}, + volume = {19}, + number = {4}, + year = {1998}, + doi = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P}, + pages = {377--395}, + annotation = {An \texttt{article} entry with \texttt{volume}, \texttt{number}, and + \texttt{doi} fields. Note that the \textsc{doi} is transformed into a clickable + link if \texttt{hyperref} support has been enabled}, + abstract = { Four methods for deriving partial atomic charges from the quantum chemical + electrostatic potential (CHELP, CHELPG, Merz-Kollman, and RESP) have been + compared and critically evaluated. It is shown that charges strongly depend on + how and where the potential points are selected. Two alternative methods are + suggested to avoid the arbitrariness in the point-selection schemes and van der + Waals exclusion radii: CHELP-BOW, which also estimates the charges from the + electrostatic potential, but with potential points that are Boltzmann-weighted + after their occurrence in actual simulations using the energy function of the + program in which the charges will be used, and CHELMO, which estimates the + charges directly from the electrostatic multipole moments. Different criteria + for the quality of the charges are discussed.} +} + +@Article{spiegelberg, + hyphenation = {german}, + sorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano und Husserl}, + indexsorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano und Husserl}, + author = {Spiegelberg, Herbert}, + title = {\mkbibquote{Intention} und \mkbibquote{Intentionalit{\"a}t} in der Scholastik, bei + Brentano und Husserl}, + shorttitle = {Intention und Intentionalit{\"a}t}, + journaltitle = {Studia Philosophica}, + volume = {29}, + year = {1969}, + pages = {189--216}, + annotation = {An \texttt{article} entry. Note the \texttt{sorttitle} and + \texttt{indexsorttitle} fields and the markup of the quotes in the database file} +} + +@Article{springer, + hyphenation = {british}, + author = {Springer, Otto}, + title = {Mediaeval Pilgrim Routes from Scandinavia to Rome}, + shorttitle = {Mediaeval Pilgrim Routes}, + journaltitle = {Mediaeval Studies}, + volume = {12}, + year = {1950}, + pages = {92--122}, + annotation = {A plain \texttt{article} entry} +} + +@Article{stdmodel:glashow, + entryset = {stdmodel}, + author = {Glashow, Sheldon}, + title = {Partial Symmetries of Weak Interactions}, + journaltitle = {Nucl.~Phys.}, + volume = {22}, + year = {1961}, + pages = {579\psqq} +} + +@Article{stdmodel:weinberg, + entryset = {stdmodel}, + author = {Weinberg, Steven}, + title = {A Model of Leptons}, + journaltitle = {Phys.~Rev.~Lett.}, + volume = {19}, + year = {1967}, + pages = {1264\psqq} +} + +@Book{aristotle:anima, + keywords = {primary}, + hyphenation = {british}, + author = {Aristotle}, + editor = {Hicks, Robert Drew}, + title = {De Anima}, + publisher = cup, + location = {Cambridge}, + year = {1907}, + annotation = {A \texttt{book} entry with an \texttt{author} and an \texttt{editor}} +} + +@Book{aristotle:physics, + keywords = {primary}, + hyphenation = {american}, + author = {Aristotle}, + translator = {Wicksteed, P. H. and Cornford, F. M.}, + title = {Physics}, + shorttitle = {Physics}, + publisher = {G. P. Putnam}, + location = {New York}, + year = {1929}, + annotation = {A \texttt{book} entry with a \texttt{translator} field} +} + +@Book{aristotle:poetics, + keywords = {primary}, + hyphenation = {british}, + author = {Aristotle}, + editor = {Lucas, D. W.}, + title = {Poetics}, + shorttitle = {Poetics}, + series = {Clarendon Aristotle}, + publisher = {Clarendon Press}, + location = {Oxford}, + year = {1968}, + annotation = {A \texttt{book} entry with an \texttt{author} and an \texttt{editor} as well as + a \texttt{series} field} +} + +@Book{aristotle:rhetoric, + keywords = {primary}, + hyphenation = {british}, + sorttitle = {Rhetoric of Aristotle}, + author = {Aristotle}, + editor = {Cope, Edward Meredith}, + commentator = {Cope, Edward Meredith}, + indextitle = {Rhetoric of Aristotle, The}, + title = {The Rhetoric of Aristotle with a commentary by the late Edward Meredith Cope}, + shorttitle = {Rhetoric}, + volumes = {3}, + publisher = cup, + year = {1877}, + annotation = {A commented edition. Note the concatenation of the \texttt{editor} and + \texttt{commentator} fields as well as the \texttt{volumes}, \texttt{sorttitle}, + and \texttt{indextitle} fields} +} + +@Book{augustine, + hyphenation = {american}, + author = {Augustine, Robert L.}, + title = {Heterogeneous catalysis for the synthetic chemist}, + shorttitle = {Heterogeneous catalysis}, + publisher = {Marcel Dekker}, + location = {New York}, + year = {1995}, + annotation = {A plain \texttt{book} entry} +} + +@Book{averroes/bland, + keywords = {primary}, + hyphenation = {american}, + author = {Averroes}, + editor = {Bland, Kalman P.}, + translator = {Bland, Kalman P.}, + indextitle = {Epistle on the Possibility of Conjunction, The}, + title = {The Epistle on the Possibility of Conjunction with the Active Intellect by Ibn + Rushd with the Commentary of Moses Narboni}, + shorttitle = {Possibility of Conjunction}, + series = {Moreshet: Studies in Jewish History, Literature and Thought}, + number = {7}, + publisher = {Jewish Theological Seminary of America}, + location = {New York}, + year = {1982}, + annotation = {A \texttt{book} entry with a \texttt{series} and a \texttt{number}. Note the + concatenation of the \texttt{editor} and \texttt{translator} fields as well as + the \texttt{indextitle} field} +} + +@Book{averroes/hannes, + keywords = {primary}, + hyphenation = {german}, + sorttitle = {Uber die Moglichkeit der Conjunktion}, + indexsorttitle = {Uber die Moglichkeit der Conjunktion}, + author = {Averroes}, + editor = {Hannes, Ludwig}, + translator = {Hannes, Ludwig}, + annotator = {Hannes, Ludwig}, + indextitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, + title = {Des Averro{\"e}s Abhandlung: \mkbibquote{{\"U}ber die M{\"o}glichkeit der + Conjunktion} oder \mkbibquote{{\"U}ber den materiellen Intellekt}}, + shorttitle = {M{\"o}glichkeit der Conjunktion}, + publisher = {C.~A. Kaemmerer}, + location = {Halle an der Saale}, + year = {1892}, + annotation = {An annotated edition. Note the concatenation of the \texttt{editor}, + \texttt{translator}, and \texttt{annotator} fields. Also note the + \texttt{shorttitle}, \texttt{indextitle}, \texttt{sorttitle}, and + \texttt{indexsorttitle} fields} +} + +@Book{averroes/hercz, + keywords = {primary}, + hyphenation = {german}, + indexsorttitle = {Drei Abhandlungen uber die Conjunction}, + author = {Averroes}, + editor = {Hercz, J.}, + translator = {Hercz, J.}, + indextitle = {Drei Abhandlungen {\"u}ber die Conjunction}, + title = {Drei Abhandlungen {\"u}ber die Conjunction des separaten Intellects mit dem + Menschen}, + subtitle = {Von Averroes (Vater und Sohn), aus dem Arabischen {\"u}bersetzt von Samuel Ibn + Tibbon}, + shorttitle = {Drei Abhandlungen}, + publisher = {S.~Hermann}, + location = {Berlin}, + year = {1869}, + annotation = {A \texttt{book} entry. Note the concatenation of the \texttt{editor} and + \texttt{translator} fields as well as the \texttt{indextitle} and + \texttt{indexsorttitle} fields} +} + +@Book{cicero, + hyphenation = {german}, + author = {Cicero, Marcus Tullius}, + editor = {Blank-Sangmeister, Ursula}, + translator = {Blank-Sangmeister, Ursula}, + afterword = {Thraede, Klaus}, + indextitle = {De natura deorum}, + title = {De natura deorum. {\"U}ber das Wesen der G{\"o}tter}, + shorttitle = {De natura deorum}, + language = {langlatin and langgerman}, + publisher = {Reclam}, + location = {Stuttgart}, + year = {1995}, + annotation = {A bilingual edition of Cicero's \emph{De natura deorum}, with a German + translation. Note the format of the \texttt{language} field in the database + file, the concatenation of the \texttt{editor} and \texttt{translator} fields, + and the \texttt{afterword} field} +} + +@Book{coleridge, + hyphenation = {british}, + author = {Coleridge, Samuel Taylor}, + editor = {Coburn, Kathleen and Engell, James and Bate, W. Jackson}, + indextitle = {Biographia literaria}, + title = {Biographia literaria, or Biographical sketches of my literary life and + opinions}, + shorttitle = {Biographia literaria}, + maintitle = {The collected works of Samuel Taylor Coleridge}, + part = {2}, + volume = {7}, + series = {Bollingen Series}, + number = {75}, + publisher = {Routledge and Kegan Paul}, + location = {London}, + year = {1983}, + annotation = {One (partial) volume of a multivolume book. This is a \texttt{book} entry with + a \texttt{volume} and a \texttt{part} field which explicitly refers to the + second (physical) part of the seventh (logical) volume. Also note the + \texttt{series} and \texttt{number} fields} +} + +@Book{companion, + hyphenation = {american}, + sorttitle = {LaTeX Companion}, + author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander}, + indextitle = {LaTeX Companion, The}, + title = {The LaTeX Companion}, + shorttitle = {LaTeX Companion}, + edition = {1}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + year = {1994}, + annotation = {A book with three authors. Note the formatting of the author list. By default, + only the first name is reversed in the bibliography} +} + +@Book{cotton, + hyphenation = {british}, + author = {Cotton, Frank Albert and Wilkinson, Geoffrey and Murillio, Carlos A. and + Bochmann, Manfred}, + title = {Advanced inorganic chemistry}, + edition = {6}, + publisher = {Wiley}, + location = {Chichester}, + year = {1999}, + annotation = {A \texttt{book} entry with \arabic{author} authors and an \texttt{edition} + field. By default, long \texttt{author} and \texttt{editor} lists are + automatically truncated. This is configurable} +} + +@Book{gerhardt, + hyphenation = {american}, + sorttitle = {Federal Appointments Process}, + author = {Gerhardt, Michael J.}, + indextitle = {Federal Appointments Process, The}, + title = {The Federal Appointments Process}, + subtitle = {A Constitutional and Historical Analysis}, + shorttitle = {Federal Appointments Process}, + publisher = {Duke University Press}, + location = {Durham and London}, + year = {2000}, + annotation = {This is a \texttt{book} entry. Note the format of the \texttt{location} field + as well as the \texttt{sorttitle} and \texttt{indextitle} fields} +} + +@Book{gonzalez, + hyphenation = {american}, + sorttitle = {Ghost of John Wayne and Other Stories}, + author = {Gonzalez, Ray}, + indextitle = {Ghost of John Wayne and Other Stories, The}, + title = {The Ghost of John Wayne and Other Stories}, + shorttitle = {Ghost of John Wayne}, + publisher = {The University of Arizona Press}, + location = {Tucson}, + year = {2001}, + isbn = {0-816-52066-6}, + annotation = {A collection of short stories. This is a \texttt{book} entry. Note the + \texttt{sorttitle} and \texttt{indextitle} fields in the database file. There's + also an \texttt{isbn} field} +} + +@Book{hammond, + hyphenation = {british}, + sorttitle = {Basics of crystallography and diffraction}, + author = {Hammond, Christopher}, + indextitle = {Basics of crystallography and diffraction, The}, + title = {The basics of crystallography and diffraction}, + shorttitle = {Crystallography and diffraction}, + publisher = {International Union of Crystallography and Oxford University Press}, + location = {Oxford}, + year = {1997}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and \texttt{indextitle} + fields as well as the format of the \texttt{publisher} field} +} + +@Book{iliad, + hyphenation = {german}, + sorttitle = {Ilias}, + author = {Homer}, + translator = {Schadewaldt, Wolfgang}, + introduction = {Latacz, Joachim}, + indextitle = {Ilias, Die}, + title = {Die Ilias}, + shorttitle = {Ilias}, + edition = {3}, + publisher = {Artemis \& Winkler}, + location = {D{\"u}sseldorf and Z{\"u}rich}, + year = {2004}, + annotation = {A German translation of the \emph{Iliad}. Note the \texttt{translator} and + \texttt{introduction} fields and the format of the \texttt{location} field in + the database file. Also note the \texttt{sorttitle} and \texttt{indextitle} fields} +} + +@Book{knuth:ct, + hyphenation = {american}, + sortyear = {1984-0}, + sorttitle = {Computers & Typesetting}, + indexsorttitle = {Computers & Typesetting}, + author = {Knuth, Donald E.}, + title = {Computers \& Typesetting}, + volumes = {5}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1984/1986}, + annotation = {A five-volume book cited as a whole. This is a \texttt{book} entry, note the + \texttt{volumes} field} +} + +@Book{knuth:ct:a, + hyphenation = {american}, + sortyear = {1984-1}, + sorttitle = {Computers & Typesetting A}, + indexsorttitle = {The TeXbook}, + author = {Knuth, Donald E.}, + indextitle = {\TeX book, The}, + title = {The \TeX book}, + shorttitle = {\TeX book}, + maintitle = {Computers \& Typesetting}, + volume = {A}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + year = {1984}, + annotation = {The first volume of a five-volume book. Note the \texttt{sorttitle} and + \texttt{sortyear} fields. We want this volume to be listed after the entry + referring to the entire five-volume set. Also note the \texttt{indextitle} and + \texttt{indexsorttitle} fields} +} + +@Book{knuth:ct:b, + hyphenation = {american}, + sortyear = {1984-2}, + sorttitle = {Computers & Typesetting B}, + indexsorttitle = {TeX: The Program}, + author = {Knuth, Donald E.}, + title = {\TeX: The Program}, + shorttitle = {\TeX}, + maintitle = {Computers \& Typesetting}, + volume = {B}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + year = {1986}, + annotation = {The second volume of a five-volume book. Note the \texttt{sorttitle} and + \texttt{sortyear} fields. Also note the \texttt{indexsorttitle} field} +} + +@Book{knuth:ct:c, + hyphenation = {american}, + sortyear = {1984-3}, + sorttitle = {Computers & Typesetting C}, + author = {Knuth, Donald E.}, + indextitle = {METAFONTbook, The}, + title = {The METAFONTbook}, + shorttitle = {METAFONTbook}, + maintitle = {Computers \& Typesetting}, + volume = {C}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + year = {1986}, + annotation = {The third volume of a five-volume book. Note the \texttt{sorttitle} and + \texttt{sortyear} fields as well as the \texttt{indextitle} field} +} + +@Book{knuth:ct:d, + hyphenation = {american}, + sortyear = {1984-4}, + sorttitle = {Computers & Typesetting D}, + author = {Knuth, Donald E.}, + title = {METAFONT: The Program}, + shorttitle = {METAFONT}, + maintitle = {Computers \& Typesetting}, + volume = {D}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + year = {1986}, + annotation = {The fourth volume of a five-volume book. Note the \texttt{sorttitle} and + \texttt{sortyear} fields} +} + +@Book{knuth:ct:e, + hyphenation = {american}, + sortyear = {1984-5}, + sorttitle = {Computers & Typesetting E}, + author = {Knuth, Donald E.}, + title = {Computer Modern Typefaces}, + maintitle = {Computers \& Typesetting}, + volume = {E}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + year = {1986}, + annotation = {The fifth volume of a five-volume book. Note the \texttt{sorttitle} and + \texttt{sortyear} fields} +} + +@Book{malinowski, + hyphenation = {british}, + author = {Malinowski, Bronis{\l}aw}, + title = {Argonauts of the Western Pacific}, + subtitle = {An account of native enterprise and adventure in the Archipelagoes of + Melanesian New Guinea}, + shorttitle = {Argonauts}, + edition = {8}, + publisher = {Routledge and Kegan Paul}, + location = {London}, + year = {1972}, + annotation = {This is a \texttt{book} entry. Note the format of the \texttt{publisher} and + \texttt{edition} fields as well as the \texttt{subtitle} field} +} + +@Book{maron, + hyphenation = {american}, + author = {Maron, Monika}, + translator = {Brigitte Goldstein}, + title = {Animal Triste}, + shorttitle = {Animal Triste}, + publisher = {University of Nebraska Press}, + location = {Lincoln}, + year = {2000}, + origlanguage = {german}, + annotation = {An English translation of a German novel with a French title. In other words: a + \texttt{book} entry with a \texttt{translator} field. Note the + \texttt{origlanguage} field which is concatenated with the \texttt{translator}} +} + +@Book{massa, + hyphenation = {british}, + author = {Werner Massa}, + title = {Crystal structure determination}, + edition = {2}, + publisher = {Spinger}, + location = {Berlin}, + year = {2004}, + annotation = {A \texttt{book} entry with an \texttt{edition} field} +} + +@Book{nietzsche:ksa, + hyphenation = {german}, + sortyear = {1988-00-000}, + sorttitle = {Werke-00-000}, + indexsorttitle = {Samtliche Werke}, + author = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + title = {S{\"a}mtliche Werke}, + subtitle = {Kritische Studienausgabe}, + volumes = {15}, + edition = {2}, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + year = {1988}, + annotation = {The critical edition of Nietzsche's works. This is a \texttt{book} entry + referring to a 15-volume work as a whole. Note the \texttt{volumes} field and + the format of the \texttt{publisher} and \texttt{location} fields in the + database file. Also note the \texttt{sorttitle} and \texttt{sortyear} fields + which are used to fine-tune the sorting order of the bibliography. We want this + item listed first in the bibliography} +} + +@Book{nietzsche:ksa1, + hyphenation = {german}, + sortyear = {1988-01-000}, + sorttitle = {Werke-01-000}, + indexsorttitle = {Samtliche Werke I}, + author = {Nietzsche, Friedrich}, + bookauthor = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + indextitle = {S{\"a}mtliche Werke I}, + title = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen I--IV. + Nachgelassene Schriften 1870--1973}, + shorttitle = {S{\"a}mtliche Werke I}, + maintitle = {S{\"a}mtliche Werke}, + mainsubtitle = {Kritische Studienausgabe}, + volume = {1}, + edition = {2}, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + year = {1988}, + annotation = {A single volume from the critical edition of Nietzsche's works. This + \texttt{book} entry explicitly refers to the first volume only. Note the + \texttt{title} and \texttt{maintitle} fields. Also note the \texttt{sorttitle} + and \texttt{sortyear} fields. We want this entry to be listed after the entry + referring to the entire edition} +} + +@Book{nussbaum, + keywords = {secondary}, + hyphenation = {american}, + sorttitle = {Aristotle's De Motu Animalium}, + indexsorttitle = {Aristotle's De Motu Animalium}, + author = {Nussbaum, Martha}, + title = {Aristotle's \mkbibquote{De Motu Animalium}}, + publisher = pup, + location = {Princeton}, + year = {1978}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and \texttt{indexsorttitle} + fields and the markup of the quotes in the database file} +} + +@Book{piccato, + hyphenation = {american}, + author = {Piccato, Pablo}, + title = {City of Suspects}, + subtitle = {Crime in Mexico City, 1900--1931}, + shorttitle = {City of Suspects}, + publisher = {Duke University Press}, + location = {Durham and London}, + year = {2001}, + annotation = {This is a \texttt{book} entry. Note the format of the \texttt{location} field + in the database file} +} + +@Book{vangennep, + options = {useprefix}, + hyphenation = {french}, + sorttitle = {Rites de passage}, + author = {van Gennep, Arnold}, + indextitle = {Rites de passage, Les}, + title = {Les rites de passage}, + shorttitle = {Rites de passage}, + publisher = {Nourry}, + location = {Paris}, + year = {1909}, + annotation = {A \texttt{book} entry. Note the format of the printed name and compare the + \texttt{useprefix} option in the \texttt{options} field as well as + \texttt{brandt} and \texttt{geer}} +} + +@Book{vangennepx, + hyphenation = {french}, + author = {van Gennep, Jean}, + title = {Il a neigé à Port-au-Prince}, + publisher = {Alhambra}, + location = {Montréal}, + year = {1999} +} + +@Book{vazques-de-parga, + hyphenation = {spanish}, + sorttitle = {Peregrinaciones a Santiago de Compostela}, + author = {V{\'a}zques{ de }Parga, Luis and Lacarra, Jos{\'e} Mar{\'i}a and Ur{\'i}a + R{\'i}u, Juan}, + indextitle = {Peregrinaciones a Santiago de Compostela, Las}, + title = {Las Peregrinaciones a Santiago de Compostela}, + shorttitle = {Peregrinaciones}, + volumes = {3}, + publisher = {Iberdrola}, + location = {Pamplona}, + year = {1993}, + note = {Ed. facs. de la realizada en 1948--49}, + annotation = {A multivolume book cited as a whole. This is a \texttt{book} entry with + \texttt{volumes}, \texttt{note}, \texttt{sorttitle}, and \texttt{indextitle} fields} +} + +@Book{worman, + hyphenation = {american}, + sorttitle = {Cast of Character}, + author = {Worman, Nancy}, + indextitle = {Cast of Character, The}, + title = {The Cast of Character}, + subtitle = {Style in Greek Literature}, + shorttitle = {Cast of Character}, + publisher = {University of Texas Press}, + location = {Austin}, + year = {2002}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and \texttt{indextitle} + fields} +} + +@Book{wormanx, + hyphenation = {american}, + sorttitle = {Someone did it again}, + author = {Worman, Nana}, + indextitle = {Someone did it again}, + title = {Someone did it again}, + publisher = {University of Nowhere Press}, + location = {Somewhere}, + year = {2009} +} + +@Collection{britannica, + options = {useeditor=false}, + label = {EB}, + hyphenation = {british}, + sorttitle = {Encyclop{\ae}dia Britannica}, + editor = {Preece, Warren E.}, + indextitle = {Encyclop{\ae}dia Britannica, The New}, + title = {The New Encyclop{\ae}dia Britannica}, + shorttitle = {Encyclop{\ae}dia Britannica}, + volumes = {32}, + edition = {15}, + publisher = {Encyclop{\ae}dia Britannica}, + location = {Chicago, Ill.}, + year = {2003}, + annotation = {This is a \texttt{collection} entry for an encyclopedia. Note the + \texttt{useeditor} option in the \texttt{options} field as well as the + \texttt{sorttitle} field. We want this entry to be cited and alphabetized by + title even though there is an editor. In addition to that, we want the title to + be alphabetized under \enquote*{E} rather than \enquote*{T}. Also note the + \texttt{label} field which is provided for author-year citation styles} +} + +@Collection{gaonkar, + hyphenation = {american}, + editor = {Gaonkar, Dilip Parameshwar}, + title = {Alternative Modernities}, + publisher = {Duke University Press}, + location = {Durham and London}, + year = {2001}, + isbn = {0-822-32714-7}, + annotation = {This is a \texttt{collection} entry. Note the format of the \texttt{location} + field in the database file as well as the \texttt{isbn} field} +} + +@Collection{jaffe, + editor = {Jaff{\'e}, Philipp}, + editora = {Loewenfeld, Samuel and Kaltenbrunner, Ferdinand and Ewald, Paul}, + editoratype = {redactor}, + indextitle = {Regesta Pontificum Romanorum}, + title = {Regesta Pontificum Romanorum ab condita ecclesia ad annum post Christum natum + \textsc{mcxcviii}}, + shorttitle = {Regesta Pontificum Romanorum}, + volumes = {2}, + edition = {2}, + location = {Leipzig}, + date = {1885/1888}, + annotation = {A \texttt{collection} entry with \texttt{edition} and \texttt{volumes} fields. + Note the \texttt{editortype} field handling the redactor} +} + +@Collection{westfahl:frontier, + hyphenation = {american}, + editor = {Westfahl, Gary}, + title = {Space and Beyond}, + subtitle = {The Frontier Theme in Science Fiction}, + booktitle = {Space and Beyond}, + booksubtitle = {The Frontier Theme in Science Fiction}, + publisher = {Greenwood}, + location = {Westport, Conn. and London}, + year = {2000}, + annotation = {This is a \texttt{collection} entry. Note the format of the \texttt{location} + field as well as the \texttt{subtitle} and \texttt{booksubtitle} fields} +} + +@InBook{kant:kpv, + shorthand = {KpV}, + hyphenation = {german}, + author = {Kant, Immanuel}, + bookauthor = {Kant, Immanuel}, + title = {Kritik der praktischen Vernunft}, + shorttitle = {Kritik der praktischen Vernunft}, + booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, + maintitle = {Kants Werke. Akademie Textausgabe}, + volume = {5}, + publisher = {Walter de Gruyter}, + location = {Berlin}, + year = {1968}, + pages = {1--163}, + annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an + \texttt{inbook} entry which explicitly refers to the \emph{Critique of Practical + Reason} only, not to the entire fifth volume. Note the \texttt{author} and + \texttt{bookauthor} fields in the database file. By default, the + \texttt{bookauthor} is omitted if the values of the \texttt{author} and + \texttt{bookauthor} fields are identical} +} + +@InBook{kant:ku, + shorthand = {KU}, + hyphenation = {german}, + author = {Kant, Immanuel}, + bookauthor = {Kant, Immanuel}, + title = {Kritik der Urtheilskraft}, + booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, + maintitle = {Kants Werke. Akademie Textausgabe}, + volume = {5}, + publisher = {Walter de Gruyter}, + location = {Berlin}, + year = {1968}, + pages = {165--485}, + annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an + \texttt{inbook} entry which explicitly refers to the \emph{Critique of Judgment} + only, not to the entire fifth volume} +} + +@InBook{nietzsche:historie, + hyphenation = {german}, + sortyear = {1988-01-243}, + sorttitle = {Werke-01-243}, + indexsorttitle = {Vom Nutzen und Nachtheil der Historie fur das Leben}, + author = {Nietzsche, Friedrich}, + bookauthor = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + indextitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, + title = {Unzeitgem{\"a}sse Betrachtungen. Zweites St{\"u}ck}, + subtitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, + shorttitle = {Vom Nutzen und Nachtheil der Historie}, + booktitle = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen I--IV. + Nachgelassene Schriften 1870--1973}, + maintitle = {S{\"a}mtliche Werke}, + mainsubtitle = {Kritische Studienausgabe}, + volume = {1}, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + year = {1988}, + pages = {243--334}, + annotation = {A single essay from the critical edition of Nietzsche's works. This + \texttt{inbook} entry explicitly refers to an essay found in the first volume. + Note the \texttt{title}, \texttt{booktitle}, and \texttt{maintitle} fields. Also + note the \texttt{sorttitle} and \texttt{sortyear} fields. We want this entry to + be listed after the entry referring to the entire first volume} +} + +@InCollection{brandt, + options = {useprefix=false}, + hyphenation = {german}, + indexsorttitle = {Nordischen Lander von der Mitte des 11. Jahrhunderts bis 1448}, + author = {von Brandt, Ahasver and Erich Hoffmann}, + editor = {Ferdinand Seibt}, + indextitle = {Nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448, Die}, + title = {Die nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448}, + shorttitle = {Die nordischen L{\"a}nder}, + booktitle = {Europa im Hoch- und Sp{\"a}tmittelalter}, + series = {Handbuch der europ{\"a}ischen Geschichte}, + number = {2}, + publisher = {Klett-Cotta}, + location = {Stuttgart}, + year = {1987}, + pages = {884--917}, + annotation = {An \texttt{incollection} entry with a \texttt{series} and a \texttt{number}. + Note the format of the printed name and compare the \texttt{useprefix} option in + the \texttt{options} field as well as \texttt{vangennep}. Also note the + \texttt{indextitle, and \texttt{indexsorttitle} fields}} +} + +@InCollection{hyman, + keywords = {secondary}, + hyphenation = {american}, + author = {Arthur Hyman}, + editor = {O'Meara, Dominic J.}, + indextitle = {Aristotle's Theory of the Intellect}, + title = {Aristotle's Theory of the Intellect and its Interpretation by Averroes}, + shorttitle = {Aristotle's Theory of the Intellect}, + booktitle = {Studies in Aristotle}, + series = {Studies in Philosophy and the History of Philosophy}, + number = {9}, + publisher = {The Catholic University of America Press}, + location = {Washington, D.C.}, + year = {1981}, + pages = {161--191}, + annotation = {An \texttt{incollection} entry with a \texttt{series} and \texttt{number} field} +} + +@InCollection{pines, + keywords = {secondary}, + hyphenation = {american}, + author = {Pines, Shlomo}, + editor = {Twersky, Isadore}, + indextitle = {Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and + Maimonides, The}, + title = {The Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and + Maimonides}, + shorttitle = {Limitations of Human Knowledge}, + booktitle = {Studies in Medieval Jewish History and Literature}, + publisher = hup, + location = {Cambridge, Mass.}, + year = {1979}, + pages = {82--109}, + annotation = {A typical \texttt{incollection} entry. Note the \texttt{indextitle} field} +} + +@InProceedings{moraux, + keywords = {secondary}, + hyphenation = {french}, + indexsorttitle = {De Anima dans la tradition grecque}, + author = {Moraux, Paul}, + editor = {Lloyd, G. E. R. and Owen, G. E. L.}, + indextitle = {\emph{De Anima} dans la tradition gr{\`e}cque, Le}, + title = {Le \emph{De Anima} dans la tradition gr{\`e}cque}, + subtitle = {Quelques aspects de l'interpretation du trait{\'e}, de Theophraste {\`a} + Themistius}, + shorttitle = {\emph{De Anima} dans la tradition gr{\`e}cque}, + booktitle = {Aristotle on Mind and the Senses}, + booktitleaddon = {Proceedings of the Seventh Symposium Aristotelicum (1975)}, + publisher = cup, + location = {Cambridge}, + date = {1979-01-02/1980-04-08}, + origdate = {1924-06-07/1924-07-09}, + eventdate = {1924-02-03/1924-02-05}, + urldate = {1979-03-03/1979-03-04}, + url = {http://some/thing}, + pages = {281--324}, + annotation = {This is a typical \texttt{inproceedings} entry. Note the \texttt{booksubtitle}, + \texttt{shorttitle}, \texttt{indextitle}, and \texttt{indexsorttitle} fields} +} + +@InProceedings{stdmodel:salam, + entryset = {stdmodel}, + author = {Salam, Abdus}, + editor = {Svartholm, Nils}, + title = {Weak and Electromagnetic Interactions}, + booktitle = {Elementary particle theory}, + booksubtitle = {Relativistic groups and analyticity}, + booktitleaddon = {Proceedings of the Eighth Nobel Symposium, May 19--25, 1968}, + venue = {Aspen{\"a}sgarden, Lerum}, + publisher = {Almquist \& Wiksell}, + location = {Stockholm}, + year = {1968}, + pages = {367\psqq} +} + +@Manual{cms, + label = {CMS}, + hyphenation = {american}, + sorttitle = {Chicago Manual of Style}, + indextitle = {Chicago Manual of Style, The}, + title = {The Chicago Manual of Style}, + subtitle = {The Essential Guide for Writers, Editors, and Publishers}, + shorttitle = {Chicago Manual of Style}, + edition = {15}, + publisher = {University of Chicago Press}, + location = {Chicago, Ill.}, + year = {2003}, + isbn = {0-226-10403-6}, + annotation = {This is a \texttt{manual} entry without an \texttt{author} or \texttt{editor}. + Note the \texttt{label} field in the database file which is provided for + author-year citation styles. Also note the \texttt{sorttitle} and + \texttt{indextitle} fields. By default, all entries without an \texttt{author} + or \texttt{editor} are alphabetized by \texttt{title} but we want this entry to + be alphabetized under \enquote*{C} rather than \enquote*{T}. There's also an + \texttt{isbn} field} +} + +@Online{baez/online, + hyphenation = {american}, + author = {Baez, John C. and Lauda, Aaron D.}, + title = {Higher-Dimensional Algebra V: 2-Groups}, + version = {3}, + date = {2004-10-27}, + eprint = {math/0307200v3}, + eprinttype = {arxiv}, + annotation = {An \texttt{online} reference from arXiv. Note the \texttt{eprint} and + \texttt{eprinttype} fields. Also note that the arXiv reference is transformed + into a clickable link if \texttt{hyperref} support has been enabled. Compare + \texttt{baez\slash article} which is the same item given as an \texttt{article} + entry with eprint information} +} + +@Online{ctan, + label = {CTAN}, + hyphenation = {american}, + title = {CTAN}, + subtitle = {The Comprehensive TeX Archive Network}, + year = {2006}, + url = {http://www.ctan.org}, + urldate = {2006-10-01}, + annotation = {This is an \texttt{online} entry. The \textsc{url}, which is given in the + \texttt{url} field, is transformed into a clickable link if \texttt{hyperref} + support has been enabled. Note the format of the \texttt{urldate} field + (\texttt{yyyy-mm-dd}) in the database file. It is also possible to use the + fields \texttt{urlday}\slash \texttt{urlmonth}\slash \texttt{urlyear} instead. + Also note the \texttt{label} field which may be used as a fallback by citation + styles which need an \texttt{author} and\slash or a \texttt{year}} +} + +@Online{itzhaki, + hyphenation = {american}, + author = {Itzhaki, Nissan}, + title = {Some remarks on 't Hooft's S-matrix for black holes}, + version = {1}, + date = {1996-03-11}, + eprint = {hep-th/9603067}, + eprinttype = {arxiv}, + annotation = {An \texttt{online} reference from arXiv. Note the \texttt{eprint} and + \texttt{eprinttype} fields. Also note that the arXiv reference is transformed + into a clickable link if \texttt{hyperref} support has been enabled}, + abstract = {We discuss the limitations of 't Hooft's proposal for the black hole S-matrix. + We find that the validity of the S-matrix implies violation of the + semi-classical approximation at scales large compared to the Planck scale. We + also show that the effect of the centrifugal barrier on the S-matrix is crucial + even for large transverse distances.} +} + +@Online{markey, + hyphenation = {american}, + sorttitle = {Tame the Beast}, + author = {Markey, Nicolas}, + title = {Tame the BeaST}, + subtitle = {The B to X of BibTeX}, + version = {1.3}, + url = {http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf}, + urldate = {2006-10-01}, + annotation = {An \texttt{online} entry for a tutorial. Note the format of the \texttt{date} + field (\texttt{yyyy-mm-dd}) in the database file. It is also possible to use the + fields \texttt{day}\slash \texttt{month}\slash \texttt{year} instead.} +} + +@Patent{almendro, + hyphenation = {german}, + author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto and S{\'a}nchez, Alberto and + Nozal, Fernando}, + title = {Elektromagnetisches Signalhorn}, + number = {EU-29702195U}, + location = {countryes and countryfr and countryuk and countryde}, + year = {1998}, + annotation = {This is a \texttt{patent} entry with a \texttt{location} field. The number is + given in the \texttt{number} field. Note the format of the \texttt{location} + field in the database file. Compare \texttt{laufenberg}, \texttt{sorace}, and + \texttt{kowalik}} +} + +@Patent{kowalik, + hyphenation = {french}, + author = {Kowalik, F. and Isard, M.}, + indextitle = {Estimateur d'un d{\'e}faut de fonctionnement}, + title = {Estimateur d'un d{\'e}faut de fonctionnement d'un modulateur en quadrature et + {\'e}tage de modulation l'utilisant}, + type = {patreqfr}, + number = {9500261}, + date = {1995-01-11}, + annotation = {This is a \texttt{patent} entry for a French patent request with a full date. + The number is given in the \texttt{number} field. Note the format of the + \texttt{type} and \texttt{date} fields in the database file. Compare + \texttt{almendro}, \texttt{laufenberg}, and \texttt{sorace}} +} + +@Patent{laufenberg, + hyphenation = {german}, + author = {Laufenberg, Xaver and Eynius, Dominique and Suelzle, Helmut and Usbeck, Stephan + and Spaeth, Matthias and Neuser-Hoffmann, Miriam and Myrzik, Christian and + Schmid, Manfred and Nietfeld, Franz and Thiel, Alexander and Braun, Harald and + Ebner, Norbert}, + holder = {{Robert Bosch GmbH} and {Daimler Chrysler AG} and {Bayerische Motoren Werke + AG}}, + title = {Elektrische Einrichtung und Betriebsverfahren}, + type = {patenteu}, + number = {1700367}, + location = {countryde and countrywo}, + date = {2006-09-13}, + annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. Note the format + of the \texttt{type} and \texttt{location} fields in the database file. Compare + \texttt{almendro}, \texttt{sorace}, and \texttt{kowalik}}, + abstract = {The invention relates to an electric device comprising a generator, in + particular for use in the vehicle electric system of a motor vehicle and a + controller for controlling the generator voltage. The device is equipped with a + control zone, in which the voltage is controlled and zones, in which the torque + is controlled. The invention also relates to methods for operating a device of + this type.}, + file = {http://v3.espacenet.com/textdoc?IDX=EP1700367} +} + +@Patent{sorace, + hyphenation = {american}, + author = {Sorace, Ronald E. and Reinhardt, Victor S. and Vaughn, Steven A.}, + holder = {{Hughes Aircraft Company}}, + title = {High-Speed Digital-to-RF Converter}, + type = {patentus}, + number = {5668842}, + date = {1997-09-16}, + annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. Note the format + of the \texttt{type} and \texttt{date} fields in the database file. Compare + \texttt{almendro}, \texttt{laufenberg}, and \texttt{kowalik}} +} + +@Report{chiu, + hyphenation = {american}, + sorttitle = {Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) Operating + System}, + author = {Chiu, Willy W. and Chow, We Min}, + indextitle = {Hybrid Hierarchical Model, A}, + title = {A Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) Operating + System}, + institution = {IBM and HP and Sun and Sony}, + type = {resreport}, + number = {RC-6947}, + year = {1978}, + annotation = {This is a \texttt{report} entry for a research report. Note the format of the + \texttt{type} field in the database file which uses a localization key. The + number of the report is given in the \texttt{number} field. Also note the + \texttt{sorttitle} and \texttt{indextitle} fields} +} + +@Report{padhye, + hyphenation = {american}, + sorttitle = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, + author = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don}, + indextitle = {Stochastic Model of TCP Reno Congestion Avoidance and Control, A}, + title = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, + institution = {University of Massachusetts}, + type = {techreport}, + number = {99-02}, + location = {Amherst, Mass.}, + year = {1999}, + annotation = {This is a \texttt{report} entry for a technical report. Note the format of the + \texttt{type} field in the database file which uses a localization key. The + number of the report is given in the \texttt{number} field. Also note the + \texttt{sorttitle} and \texttt{indextitle} fields}, + abstract = {The steady state performance of a bulk transfer TCP flow (i.e. a flow with a + large amount of data to send, such as FTP transfers) may be characterized by + three quantities. The first is the send rate, which is the amount of data sent + by the sender in unit time. The second is the throughput, which is the amount of + data received by the receiver in unit time. Note that the throughput will always + be less than or equal to the send rate due to losses. Finally, the number of + non-duplicate packets received by the receiver in unit time gives us the goodput + of the connection. The goodput is always less than or equal to the throughput, + since the receiver may receive two copies of the same packet due to + retransmissions by the sender. In a previous paper, we presented a simple model + for predicting the steady state send rate of a bulk transfer TCP flow as a + function of loss rate and round trip time. In this paper, we extend that work in + two ways. First, we analyze the performance of bulk transfer TCP flows using + more precise, stochastic analysis. Second, we build upon the previous analysis + to provide both an approximate formula as well as a more accurate stochastic + model for the steady state throughput of a bulk transfer TCP flow.}, + file = {ftp://gaia.cs.umass.edu/pub/Padhey99-markov.ps} +} + +@Thesis{geer, + options = {useprefix=false}, + hyphenation = {british}, + author = {de Geer, Ingrid}, + title = {Earl, Saint, Bishop, Skald~-- and Music}, + subtitle = {The Orkney Earldom of the Twelfth Century. A Musicological Study}, + institution = {Uppsala Universitet}, + type = {phdthesis}, + location = {Uppsala}, + year = {1985}, + annotation = {This is a typical \texttt{thesis} entry for a PhD thesis. Note the + \texttt{type} field in the database file which uses a localization key. Also + note the format of the printed name and compare the \texttt{useprefix} option in + the \texttt{options} field as well as \texttt{vangennep}} +} + +@Thesis{loh, + hyphenation = {american}, + author = {Loh, Nin C.}, + title = {High-Resolution Micromachined Interferometric Accelerometer}, + institution = {Massachusetts Institute of Technology}, + type = {mathesis}, + location = {Cambridge, Mass.}, + year = {1992}, + annotation = {This is a typical \texttt{thesis} entry for an MA thesis. Note the + \texttt{type} field in the database file which uses a localization key} +} + +@Thesis{Pimentel00, + author = {Pimentel, Jr.,Joseph J.}, + title = {Sociolinguistic Reflections of Privatization and Globalization: The {Arabic} of {Egyptian} newspaper advertisements}, + school = {University of Michigan}, + year = {2000}, +} + +@Book{luzzatto, + author = {Luzzatto, Moshe Ḥayyim}, + title = {ha-Lashon la-Ramḥal: u-vo sheloshah ḥiburim}, + location = {Yerushalayim}, + publisher = {Makhon Ramḥal}, + year = {2000} +} + +% Without braces round this prefixed lastname, T::B::N fails to get +% the lastname on Windows for some reason +@Book{hasan, + author = {{al-Hasan}, Ê¿AlÄ«}, + editor = {{al-Hasan}, Ê¿AlÄ«}, + translator = {{al-Hasan}, Ê¿AlÄ«}, + title = {Some title}, + publisher = {Some press}, + year = {2000} +} + +@misc{t1, + KEYWORDS = { primary, something,somethingelse}, + AUTHOR = {Bill Brown}, + TITLE = {Normal things {$^{3}$}}, + YEAR = {1992}, + PAGES = {100--} +} + +% SORTNAME should not be output +@misc{t2, + AUTHOR = {Bill Brown}, + SORTNAME = {Bill Brown}, + TITLE = {Signs of W$\frac{o}{a}$nder}, + YEAR = {1994}, + PAGES = {100} +} + +@misc{tvonb, + AUTHOR = {Terrence von Bobble}, + TITLE = {Things}, + YEAR = {1997} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/extrayear.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/extrayear.bcf new file mode 100644 index 00000000000..738bf6489ca --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/extrayear.bcf @@ -0,0 +1,262 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="collection"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shorteditor</bcf:value> + <bcf:value order="2">editor</bcf:value> + <bcf:value order="3">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">labelalpha</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5" sort_direction="descending"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem substring_side="right" substring_width="4" order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1" pad_char="0">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + <bcf:sort order="7"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">extrayear.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>l1</bcf:citekey> + <bcf:citekey>L2</bcf:citekey> + <bcf:citekey>L3</bcf:citekey> + <bcf:citekey>L4</bcf:citekey> + <bcf:citekey>L5</bcf:citekey> + <bcf:citekey>L6</bcf:citekey> + <bcf:citekey>L7</bcf:citekey> + <bcf:citekey>L8</bcf:citekey> + <bcf:citekey>L9</bcf:citekey> + <bcf:citekey>L10</bcf:citekey> + <bcf:citekey>LY1</bcf:citekey> + <bcf:citekey>LY2</bcf:citekey> + <bcf:citekey>companion1</bcf:citekey> + <bcf:citekey>companion2</bcf:citekey> + <bcf:citekey>companion3</bcf:citekey> + <bcf:citekey>vangennep</bcf:citekey> + <bcf:citekey>gennep</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/extrayear.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/extrayear.bib new file mode 100644 index 00000000000..789a895bfa8 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/extrayear.bib @@ -0,0 +1,109 @@ +@BOOK{L1, + AUTHOR = {John Doe}, + TITLE = {Title 1}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L2, + AUTHOR = {John Doe}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L3, + AUTHOR = {John Doe}, + TITLE = {Title 3}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L4, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 1}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L5, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L6, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 1}, + PUBLISHER = {Oxford}, + YEAR = {1996}, +} + +@BOOK{L7, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + YEAR = {1996}, +} + +@BOOK{L8, + AUTHOR = {Bill Shakespeare}, + TITLE = {Works}, + PUBLISHER = {Oxford}, + DATE = {1985}, +} + +@BOOK{L9, + TITLE = {Title with no author}, + DATE = {1985}, +} + +@BOOK{L10, + TITLE = {Another title with no author}, + DATE = {1985}, +} + +@BOOK{companion1, + AUTHOR = {Goossens, M. and Mittelbach, F. and Samarin, A.}, + DATE = {1994}, + TITLE = {Some title} +} + +@BOOK{companion2, + AUTHOR = {Goossens, M. and Mittelbach, F.}, + YEAR = {1994}, + TITLE = {Some title} +} + +@BOOK{companion3, + AUTHOR = {Goossens, M.}, + DATE = {1994}, + TITLE = {Some title} +} + +@BOOK{vangennep, + OPTIONS = {useprefix}, + AUTHOR = {van Gennep, Arnold}, + DATE = {1909}, + TITLE = {Some title} +} + +@BOOK{gennep, + AUTHOR = {van Gennep, Arnold}, + DATE = {1909}, + TITLE = {Some title} +} + +@BOOK{LY1, + AUTHOR = {Arthur Example}, + DATE = {2006/2009}, + TITLE = {Some title} +} + +@BOOK{LY2, + AUTHOR = {Arthur Example}, + DATE = {2006}, + TITLE = {Some title} +} + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/general1.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/general1.bcf new file mode 100644 index 00000000000..9eca6745acb --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/general1.bcf @@ -0,0 +1,248 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">author</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:presort type="misc">ww</bcf:presort> + <bcf:sortexclusion type="misc"> + <bcf:exclusion>year</bcf:exclusion> + <bcf:exclusion>title</bcf:exclusion> + </bcf:sortexclusion> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">examples.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>stdmodel</bcf:citekey> + <bcf:citekey>knuth:ct</bcf:citekey> + <bcf:citekey>angenendtsk</bcf:citekey> + <bcf:citekey>angenendtsa</bcf:citekey> + <bcf:citekey>stdmodel:glashow</bcf:citekey> + <bcf:citekey>stdmodel:ps_sc</bcf:citekey> + <bcf:citekey>murray</bcf:citekey> + <bcf:citekey>aristotle:anima</bcf:citekey> + <bcf:citekey>aristotle:rhetoric</bcf:citekey> + <bcf:citekey>augustine</bcf:citekey> + <bcf:citekey>cotton</bcf:citekey> + <bcf:citekey>chiu</bcf:citekey> + <bcf:citekey>moraux</bcf:citekey> + <bcf:citekey>jaffe</bcf:citekey> + <bcf:citekey>luzzatto</bcf:citekey> + <bcf:citekey>hasan</bcf:citekey> + <bcf:citekey>t1</bcf:citekey> + <bcf:citekey>tvonb</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/general2.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/general2.bcf new file mode 100644 index 00000000000..7d5e5dfeaf7 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/general2.bcf @@ -0,0 +1,236 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">examples.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>murray</bcf:citekey> + <bcf:citekey>t1</bcf:citekey> + <bcf:citekey>t2</bcf:citekey> + <bcf:citekey>kant:ku</bcf:citekey> + <bcf:citekey>kant:kpv</bcf:citekey> + <bcf:citekey>shore</bcf:citekey> + <bcf:citekey>missing1</bcf:citekey> + <bcf:citekey>missing2</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/labelalpha.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/labelalpha.bcf new file mode 100644 index 00000000000..7738247ef99 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/labelalpha.bcf @@ -0,0 +1,259 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="collection"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shorteditor</bcf:value> + <bcf:value order="2">editor</bcf:value> + <bcf:value order="3">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1" substring_side="left" substring_width="2">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">labelalpha</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="7"> + <bcf:sortitem order="1" pad_side="left" pad_width="4" pad_char="0">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">labelalpha.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>L1</bcf:citekey> + <bcf:citekey>L2</bcf:citekey> + <bcf:citekey>L3</bcf:citekey> + <bcf:citekey>L4</bcf:citekey> + <bcf:citekey>L5</bcf:citekey> + <bcf:citekey>L6</bcf:citekey> + <bcf:citekey>L7</bcf:citekey> + <bcf:citekey>L8</bcf:citekey> + <bcf:citekey>L9</bcf:citekey> + <bcf:citekey>L10</bcf:citekey> + <bcf:citekey>knuth:ct</bcf:citekey> + <bcf:citekey>knuth:ct:a</bcf:citekey> + <bcf:citekey>knuth:ct:b</bcf:citekey> + <bcf:citekey>knuth:ct:c</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/labelalpha.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/labelalpha.bib new file mode 100644 index 00000000000..7897f409768 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/labelalpha.bib @@ -0,0 +1,145 @@ +@BOOK{L1, + AUTHOR = {John Doe}, + TITLE = {Title 1}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L2, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L3, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 3}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L4, + AUTHOR = {John Doe and Albert Abrahams and Ernie Edwards}, + TITLE = {Title 4}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L5, + AUTHOR = {John Doe and Albert Abrahams and Ernie Edwards}, + TITLE = {Title 5}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L6, + AUTHOR = {John Doe and Simon Smith and Ernie Edwards}, + TITLE = {Title 6}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L7, + AUTHOR = {John Doe and Simon Smith and James Jones}, + TITLE = {Title 7}, + PUBLISHER = {Oxford}, + YEAR = {1995}, +} + +@BOOK{L8, + AUTHOR = {Bill Shakespeare}, + TITLE = {Works}, + PUBLISHER = {Oxford}, + DATE = {1985/1992}, +} + +% For these two, the shorthand should prevent extraalpha being set for them as +% they are disambiguated by their shorthands and labelalpha is true +@BOOK{L9, + SHORTHAND = {SS1}, + AUTHOR = {Sam Smiley}, + TITLE = {Works}, + PUBLISHER = {Oxford}, + YEAR = {1922}, +} + +@BOOK{L10, + SHORTHAND = {SS2}, + AUTHOR = {Sam Smiley}, + TITLE = {UnWorks}, + PUBLISHER = {Oxford}, + YEAR = {1922}, +} + + +% Some examples from biblatex examples file of collection plus individual volumes +% The date ranges should be handled differently by extrayear and extraalpha +@BOOK{knuth:ct, + hyphenation = {american}, + sortyear = {1984-0}, + sorttitle = {Computers & Typesetting}, + indexsorttitle = {Computers & Typesetting}, + author = {Knuth, Donald E.}, + title = {Computers \& Typesetting}, + volumes = {5}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1984/1986}, + annotation = {A five-volume book cited as a whole. This is a \texttt{book} entry, note the + \texttt{volumes} field} +} + +@BOOK{knuth:ct:a, + hyphenation = {american}, + sortyear = {1984-1}, + sorttitle = {Computers & Typesetting A}, + indexsorttitle = {The TeXbook}, + author = {Knuth, Donald E.}, + indextitle = {\TeX book, The}, + title = {The \TeX book}, + shorttitle = {\TeX book}, + maintitle = {Computers \& Typesetting}, + volume = {A}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1984}, + annotation = {The first volume of a five-volume book. Note the \texttt{sorttitle} and + \texttt{sortyear} fields. We want this volume to be listed after the entry + referring to the entire five-volume set. Also note the \texttt{indextitle} and + \texttt{indexsorttitle} fields} +} + +@BOOK{knuth:ct:b, + hyphenation = {american}, + sortyear = {1986-1}, + sorttitle = {Computers & Typesetting B}, + indexsorttitle = {TeX: The Program}, + author = {Knuth, Donald E.}, + title = {\TeX: The Program}, + shorttitle = {\TeX}, + maintitle = {Computers \& Typesetting}, + volume = {B}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The second volume of a five-volume book. Note the \texttt{sorttitle} and + \texttt{sortyear} fields. Also note the \texttt{indexsorttitle} field} +} + +@BOOK{knuth:ct:c, + hyphenation = {american}, + sortyear = {1986-2}, + sorttitle = {Computers & Typesetting C}, + author = {Knuth, Donald E.}, + indextitle = {METAFONTbook, The}, + title = {The METAFONTbook}, + shorttitle = {METAFONTbook}, + maintitle = {Computers \& Typesetting}, + volume = {C}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The third volume of a five-volume book. Note the \texttt{sorttitle} and + \texttt{sortyear} fields as well as the \texttt{indextitle} field} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/names-biblatexml.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/names-biblatexml.bcf new file mode 100644 index 00000000000..25951f4aadd --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/names-biblatexml.bcf @@ -0,0 +1,263 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="collection"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shorteditor</bcf:value> + <bcf:value order="2">editor</bcf:value> + <bcf:value order="3">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- DISPLAYMODES --> + <bcf:displaymodes> + <bcf:displaymode> + <bcf:target>*</bcf:target> + <bcf:mode>original</bcf:mode> + <bcf:mode>romanised</bcf:mode> + <bcf:mode>uniform</bcf:mode> + <bcf:mode>translated</bcf:mode> + </bcf:displaymode> + <bcf:displaymode> + <bcf:target>title</bcf:target> + <bcf:mode>translated</bcf:mode> + <bcf:mode>romanised</bcf:mode> + <bcf:mode>uniform</bcf:mode> + <bcf:mode>original</bcf:mode> + </bcf:displaymode> + </bcf:displaymodes> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">labelalpha</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5" sort_direction="descending"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem substring_side="right" substring_width="4" order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1" pad_char="0">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + <bcf:sort order="7"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="biblatexml">names.xml</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/names.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/names.bcf new file mode 100644 index 00000000000..d2232179809 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/names.bcf @@ -0,0 +1,246 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="collection"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shorteditor</bcf:value> + <bcf:value order="2">editor</bcf:value> + <bcf:value order="3">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">labelalpha</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5" sort_direction="descending"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem substring_side="right" substring_width="4" order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1" pad_char="0">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + <bcf:sort order="7"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">names.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/names.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/names.bib new file mode 100644 index 00000000000..c7883f778c0 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/names.bib @@ -0,0 +1,130 @@ +@BOOK{L1, + AUTHOR = {Alfred Adler}, +} + +@BOOK{L2, + AUTHOR = {Bertie B. Bull}, +} + +@BOOK{L3, + AUTHOR = {C. Z. Crop}, +} + +@BOOK{L4, + AUTHOR = {Derek D Decket}, +} + +@BOOK{L5, + AUTHOR = {Egbert von Eel}, +} + +@BOOK{L6, + AUTHOR = {Francis van der valt Frome}, +} + +@BOOK{L7, + AUTHOR = {Gregory R. van Gloom}, +} + +@BOOK{L8, + AUTHOR = {Henry F. van Henkel}, +} + +@BOOK{L9, + AUTHOR = {Ian {Iliad Ipswich}}, +} + +@BOOK{L10, + AUTHOR = {Jolly, III, James}, +} + +@BOOK{L10a, + AUTHOR = {Pimentel, Jr. ,Joseph J.}, +} + +@BOOK{L11, + AUTHOR = {van Kluster, Jr., Kevin}, +} + +@BOOK{L12, + AUTHOR = {Charles Louis Xavier Joseph de la Vall{\'e}e Poussin} +} + +@BOOK{L13, + AUTHOR = {Van de Graaff, R. J.} +} + +@BOOK{L14, + AUTHOR = {St John-Mollusc, Oliver} +} + +@BOOK{L15, + AUTHOR = {Roger P.{\,}G. van Gompel} +} + +@BOOK{L16, + AUTHOR = {Roger {P.\,G.} van Gompel} +} + +@BOOK{L17, + AUTHOR = {Lovecraft, Bill H.{\,}P.}, +} + +@BOOK{L18, + AUTHOR = {Lovecraft, Bill {H.\,P.}}, +} + +@BOOK{L19, + AUTHOR = {Mustermann, Klaus-Peter}, +} + +@BOOK{L20, + AUTHOR = {{John Henry} Ford}, +} + +@BOOK{L21, + AUTHOR = {{\v S}omeone Smith}, +} + +@BOOK{L22, + AUTHOR = {Someone {\v S}mith}, +} + +@BOOK{L23, + AUTHOR = {Å omeone Smith}, +} + +@BOOK{L24, + AUTHOR = {Someone Å mith}, +} + +@BOOK{L25, + AUTHOR = {{American Psychological Association, Task Force on the Sexualization of Girls}}, +} +@BOOK{L26, + AUTHOR = {{Sci-Art Publishers}} +} + +% Should skip the first name as it has too many commas +@BOOK{L27, + AUTHOR = {Smith, Jr., Bill, Lee and James Smith} +} + +% This causes Text::BibTeX <=0.4 to segfault +@BOOK{L28, + AUTHOR = {Deux et al.,, O.} +} + +% Should be ok as escaped. Text::BibTeX < 0.41 has a bug however and replaces +% the third comma with a space. +@BOOK{L29, + AUTHOR = {{U.S. Department of Health and Human Services, National Institute of Mental Health, National Heart, Lung and Blood Institute}} +} + +% The protected {M} causes problems for the btparse library so we strip this in biber +@BOOK{L30, + AUTHOR = {E. S. El-{M}allah} +} + + + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/names.xml b/Master/texmf-dist/source/bibtex/biber/t/tdata/names.xml new file mode 100644 index 00000000000..69c79527765 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/names.xml @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/biblatexml.rnc" type="compact"?> +<bib:entries xmlns:bib="http://biblatex-biber.sourceforge.net/biblatexml"> + <bib:entry id="BulgakovRozenfeld:1983" entrytype="book"> + <bib:author> + <bib:person gender="sm"> + <bib:first> + <bib:namepart>Павел</bib:namepart> + <bib:namepart>Георгиевич</bib:namepart> + </bib:first> + <bib:firstinitial>П</bib:firstinitial> + <bib:last>Булгаков</bib:last> + </bib:person> + <bib:person> + <bib:first> + <bib:namepart>БориÑ</bib:namepart> + <bib:namepart>Ðбрамович</bib:namepart> + </bib:first> + <bib:firstinitial>Б. B.</bib:firstinitial> + <bib:last>Розенфельд</bib:last> + <bib:middle>Билл</bib:middle> + <bib:middleinitial>д</bib:middleinitial> + </bib:person> + <bib:person> + <bib:first> + <bib:namepart>Ðшраф</bib:namepart> + <bib:namepart>Ðхмедович</bib:namepart> + </bib:first> + <bib:last>Ðхмедов</bib:last> + </bib:person> + </bib:author> + <bib:author mode="uniform"> + <bib:person> + <bib:first> + <bib:namepart>Pavel</bib:namepart> + <bib:namepart>G.</bib:namepart> + </bib:first> + <bib:last>Bulgakov</bib:last> + </bib:person> + <bib:person> + <bib:first> + <bib:namepart>Boris</bib:namepart> + <bib:namepart>A.</bib:namepart> + </bib:first> + <bib:last>Rozenfeld</bib:last> + <bib:middle>Bill</bib:middle> + </bib:person> + <bib:person> + <bib:first> + <bib:namepart>Ashraf</bib:namepart> + <bib:namepart>A.</bib:namepart> + </bib:first> + <bib:last>Akhmedov</bib:last> + </bib:person> + </bib:author> + <bib:title>Мухаммад ибн муÑа ал-Хорезми. Около 783 – около 850</bib:title> + <bib:title mode="romanised">Mukhammad al-Khorezmi. Okolo 783 – okolo 850</bib:title> + <bib:title mode="translated" xml:lang="en">Mukhammad al-Khorezmi. Ca. 783 – ca. 850</bib:title> + <bib:location>МоÑква</bib:location> + <bib:location mode="romanised">Moskva</bib:location> + <bib:location mode="uniform">Moscow</bib:location> + <bib:publisher>Ðаука</bib:publisher> + <bib:publisher mode="romanised">Nauka</bib:publisher> + <bib:language>Russian</bib:language> + <bib:series>Ðаучно-биографичеÑÐºÐ°Ñ Ð»Ð¸Ñ‚ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°</bib:series> + <bib:series mode="romanised">Nauchno-biograficheskaya literatura</bib:series> + <bib:date>1983</bib:date> + <bib:date datetype="orig">1985-04-02</bib:date> + <bib:date datetype ="event"> + <bib:start>1990-05-16</bib:start> + <bib:end>1990-05-17</bib:end> + </bib:date> + <bib:date datetype="url"> + <bib:start>1991-07-01</bib:start> + <bib:end></bib:end> + </bib:date> + <bib:pagetotal>240</bib:pagetotal> + <bib:related> + <bib:item type="reprint" string="Somestring" ids="rel1,rel2"/> + </bib:related> + </bib:entry> +</bib:entries>
\ No newline at end of file diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/options.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/options.bcf new file mode 100644 index 00000000000..d11985a60c0 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/options.bcf @@ -0,0 +1,235 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>88</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">author</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="book"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">author</bcf:value> + <bcf:value order="2">editor</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">options.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/options.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/options.bib new file mode 100644 index 00000000000..9160db881f0 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/options.bib @@ -0,0 +1,7 @@ +@BOOK{L1, + AUTHOR = {John Doe}, + TITLE = {Title 1}, + PUBLISHER = {Oxford}, + ORIGDATE = {1985-10-30}, + DATE = {1998-04-05}, +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/papers.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/papers.bib new file mode 100644 index 00000000000..31c1c675f23 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/papers.bib @@ -0,0 +1,15133 @@ +% +% THE PAPERS +% +% +% + +%A + +%Aa + +@article{AardalHLT02, +author = {K. I. Aardal and C. A. J. Hurkens and J. K. Lenstra and S. R. Tiourine}, +title = {Algorithms for radio link frequency assignment: The {CALMA} project}, +journal = or, volume = 50, year = 2003, number = 6, pages = {968 - 980}} + +@article{AardalHKMS03, +author = {K. Aardal and C. van Hoesel and A. Koster and C. Mannino and A. Sassano}, +title = {Models and solution techniques for the frequency assignment problem}, +journal = {4OR}, volume = 1, year = 2003, pages = {261-317}} + +%Ab + +%Abd + +@article{AbdelbarH98, +author = {A.M. Abdelbar and S.M. Hedetniemi}, +title = {Approximating {MAP}s for belief networks is {NP}-hard and other theorems}, +journal = artint, volume = 102, year = 1998, pages = {21-38}} + +%Abr + +%Abrahamson89 + +@article{AbrahamsonDKP89, +author = {Karl R. Abrahamson and N. Dadoun and D. G. Kirkpatrick and T. Przytycka}, +title = {A simple parallel tree contraction algorithm}, +journal = ja, volume = 10, year = 1989, pages = {287-302}} + +@inproceedings{AbrahamsonEFM89, +author = {Karl R. Abrahamson and John A. Ellis and Michael R. Fellows and Manuel E. Mata}, +title = {On the Complexity of Fixed-Parameter Problems}, +booktitle = focs89, year = 1989, pages = {210-215}} + +@inproceedings{AbrahamsonFLM89, +author = {Karl R. Abrahamson and Michael R. Fellows and Michael A. Langston and B. M. E. Moret}, +title = {Constructive Complexity}, +year = 1989, +booktitle = {Proceedings of the Capital City Conference on Combinatorics and Theoretical Computer Science}} + +%Abrahamson90 + +@techreport{AbrahamsonEFM90, +author = {Karl R. Abrahamson and John A. Ellis and Michael R. Fellows and Manuel E. Mata}, +title = {Completeness for Families of Fixed Parameter Problems}, +institution = {University of Victoria}, +address = {Victoria, B.C., Canada}, +number = {DCS-141-IR}, +year = 1990, +note = {Extended abstract in Proc. 30th ACM Foundations of Computer Science, 1989, p. 210-215}} + +%Abrahamson93 + +@inproceedings{AbrahamsonDF93, +author = {Karl R. Abrahamson and Rodney G. Downey and Michael R. Fellows}, +title = {Fixed-parameter intractability {II}}, +editor = {Patrice Enjalbert and Alain Finkel and Klaus W. Wagner}, +booktitle = stacs93, year = 1993, publisher = lncs665, pages = {374-385}} + +@inproceedings{AbrahamsonF93, +author = {Karl R. Abrahamson and Michael R. Fellows}, +title = {Finite Automata, Bounded Treewidth and Well-Quasiordering}, +year = 1993, +editor = {N. Robertson and P. Seymour}, +booktitle = {Proceedings of the AMS Summer Workshop on Graph Minors, Graph Structure Theory, Contemporary Mathematics vol. 147}, +publisher = {American Mathematical Society}, pages = {539-564}} + +%Abrahamson95 + +@article{AbrahamsonDF95, +author = {Karl A. Abrahamson and Rodney G. Downey and Michael R. Fellows}, +title = {Fixed-Parameter Tractability and Completeness {IV}: On Completeness for {$W[P]$} and {PSPACE} Analogues}, +journal = apal, volume = 73, year = 1995, pages = {235-276}} + +@article{Abramson89, +author = {Bruce Abramson}, +title = {Control strategies for two-player games}, +journal = acmcs, volume = 21, year = 1989, pages = {137-162}} + +%Abu + +@article{AbuKhzamL07, +author = {Faisal N. Abu-Khzam and Michael A. Langston}, +title = {Linear-time algorithms for problems on planar graphs with fixed disk dimension}, +journal = ipl, volume = 101, year = 2007, pages = {36-40}} + +@inproceedings{AbuKhzamCFLSS04, +author = {Faisal N. Abu-Khzam and R. L. Collins and Michael R. Fellows and Michael A. Langston and +W. Henry Suters and C. T. Symons}, +title = {Kernelization algorithms for the Vertex Cover problem: Theory and experiments}, +booktitle = alenex04, pages = {62-69}, publisher = {ACM-SIAM}, year = 2004} + +@inproceedings{AbuKhzamLS05, +author = {Faisal N. Abu-Khzam and Michael A. Langston and W. Henry Suters}, +title = {Fast, effective vertex cover kernelization: a tal of two algorithms}, +booktitle = {Proceedings of the IEEE International Conference on Computer Systems and Applications, AICCSA 2005}, +year = 2005, pages = 16} + +@article{AbuKhzamFLS07, +author = {Faisal N. Abu-Khzam and Michael R. Fellows and Michael A. Langston and W. Henry Suters}, +title = {Crown structures for vertex cover kernelization}, +journal = tocs, volume = 41, year = 2007, pages = {411-430}} + +%Ad + +%Ada + +@inproceedings{AdachiIK81, +author = {A. Adachi and S. Iwata and T. Kasai}, +title = {Low level complexity for combinatorial games}, +booktitle = stoc81, year = 1981, pages = {228-237}, publisher = {Assoc. Comp. Mach.}, +address = {New York}} + +@article{AdachiIK84, +author = {A. Adachi and S. Iwata and T. Kasai}, +title = {Some combinatorial game problems require {$\Omega (n^k) $} time}, +journal = jacm, volume = 31, year = 1984, pages = {361-376}} + +@article{AdachiIK87, +author = {A. Adachi and S. Iwata and T. Kasai}, +title = {Shogi on $n \times n$ board is complete in exponential time ({I}n {J}apanese)}, +journal = {Trans. IEICE}, volume = {J70-D}, year = 1987, pages = {1843-1852}} + +%Adh + +@article{AdharP90, +author = {Gur Saran Adhar and Shietung Peng}, +title = {Parallel algorithms for cographs and parity graphs with applications}, +journal = ja, volume = 11, year = 1990, pages = {252-284}} + +%Adl + +@article{Adler04, +author = {Isolde Adler}, +title = {Marshals, monotone marshals, and hypertree-width}, +journal = jgt, volume = 47, year = 2004, pages = {275-296}} + +@article{Adler07, +author = {Isolde Adler}, +title = {Directed tree-width examples}, +journal = jctb, volume = 97, year = 2007, pages = {718-725}} + +%Ag + +%Aga + +@article{AgarwalKS98, +author = {P. K. Agarwal and M. {van Kreveld} and S. Suri}, +title = {Label placement by maximum independent set in rectangles}, +journal = cg, volume = 11, year = 1998, pages = {209-218}} + +@inproceedings{AgarwalaF93, +author = {Richa Agarwala and David Fern{\'a}ndez-Baca}, +title = {A polynomial-time algorithm for the perfect phylogeny problem when the number of character states is fixed}, +booktitle = focs93, year = 1993, pages = {140-147}} + +@inproceedings{AgarwalaFS92, +author = {Richa Agarwala and David Fern{\'a}ndez-Baca and G. Slutzki}, +title = {Fast algorithms for inferring evolutionary trees}, +booktitle = {Proceedings of the 30th Alllerton Conference on Comm., Control, and Comput.}, +year = 1992, pages = {594-603}} + +%Age + +@unpublished{Ageev99, +author = {A. A. Ageev}, +title = {Approximation schemes for the planar graph cases of feedback vertex set and uncapacitated facility location}, +year = 1999, +note = {Unpublished manuscript}} + +%Agg + +@article{AggarwalKLLW91, +author = {A. Aggarwal and M. Klawe and D. Lichtenstein and N. Linial and A. Wigderson}, +title = {A lower bound on the area of permutation layents}, +journal = alg, volume = 6, year = 1991, pages = {241-255}} + +@article{AggarwalKS91, +author = {A. Aggarwal and M. Klawe and P. Shor}, +title = {Multilayer grid embeddings in {VLSI}}, +journal = alg, volume = 6, year = 1991, pages = {129-151}} + +%Agr + +@incollection{AgrawalKR93, +author = {Ajir Agrawal and Philip N. Klein and R. Ravi}, +title = {Cutting down on fill using nested dissection: provably good elimination orderings}, +booktitle = {Graph Theory and Sparse Matrix Computation}, +editor = {A. George and J. Gilbert and J. W. H. Liu}, +series = {IMA Volumes in Mathematics and its Applicatins}, +publisher = {Springer-Verlag}, year = 1993, volume = 56, pages = {31-55}} + +%Ah + +%Aho + +@book{AhoHU74, +author = {A. V. Aho and J. E. Hopcroft and J. D. Ullman}, +title = {The Design and Analysis of Computer Algorithms}, +year = 1974, publisher = {Addison-Wesley}} + +%Ahu + +@book{AhujaMO93, +author = {R. K. Ahuja and T. L. Magnanti and J. B. Orlin}, +title = {Network Flows: Theory, Algorithms, and Applications}, +address = {Upper Saddle River, NJ, USA}, +publisher = {Prentice Hall}, year = 1993} + +%Ai + +@article{AignerF84, +author = {M. Aigner and M. Fromme}, +title = {A game of cops and robbers}, +journal = dam, volume = 8, year = 1984, pages = {1-12}} + +%Ak + +@article{AkiyamaNS80, +author = {T. Akiyama and Takao Nishizeki and N. Saito}, +title = {{NP}-completeness of the {H}amiltonian cycle problem for bipartite graphs}, +journal = jip, volume = 3, year = 1980, pages = {73-76}} + +@article{AkiyamaEH83, +author = {Jin Akiyama and Hiroski Era and Frank Harary}, +title = {Regular graphs containing a given graph}, +journal = elemmath, volume = 83, year = 1983, pages = {15-17}} + +%Al + +%Alb + +%Alber 2001 + +@article{AlberFN01, +author = {Jochen Alber and Henning Fernau and Rolf Niedermeier}, +title = {Parameterized complexity: {E}xponential speed-up for planar graph problems}, +journal = {Electronic Colloquium on Computational Complexity (ECCC)}, +year = 2001} + +@inproceedings{AlberFN01a, +author = {Jochen Alber and Henning Fernau and Rolf Niedermeier}, +title = {Parameterized complexity: exponential speed-up for planar graph problems}, +editor = {Fernando Orejas and Paul G. Spirakis and Jan van Leeuwen}, +booktitle = icalp01, publisher = lncs2076, year = 2001, pages = {261-272}} + +@article{AlberGN01, +author = {Jochen Alber and J. Gramm and Rolf Niedermeier}, +title = {Faster exact algorithms for hard problems: {A} parameterized point of view}, +journal = dm, volume = 229, year = 2001, pages = {3-27}} + +%Alber 2002 + +@phdthesis{Alber02, +author = {Jochen Alber}, +title = {Exact Algorithms for {NP}-hard Problems on Networks: Design, Analysis, and Implementation}, +year = 2002, school = {Universit\"at T\"ubingen}, +address = {T\"ubingen, Germany}} + +@article{AlberBFKN02, +author = {Jochen Alber and Hans L. Bodlaender and Henning Fernau and Ton Kloks and Rolf Niedermeier}, +title = {Fixed parameter algorithms for dominating set and related problems on planar graphs}, +journal = alg, volume = 33, year = 2002, pages = {461-493}} + +@inproceedings{AlberN02, +author = {Jochen Alber and Rolf Niedermeier}, +title = {Improved tree decomposition based algorithms for domination-like problems}, +editor = {Sergio Rajsbaum}, +booktitle = latin02, publisher = lncs2286, year = 2002, pages = {613-627}} + +%Alber 2003 + +@article{AlberFN03, +author = {Jochen Alber and Henning Fernau and Rolf Niedermeier}, +title = {Graph separators: A parameterized view}, +journal = jcss, volume = 67, year = 2003, pages = {808-832}} + +%Alber 2004 + +@article{AlberDN04, +author = {Jochen Alber and F. Dorn and Rolf Niedermeier}, +title = {Experimental evaluation of a tree decomposition based algorithm for vertex cover on planar graphs}, +journal = dam, volume = 145, pages = {210-219}, year = 2005} + +@article{AlberFN04, +author = {Jochen Alber and Michael R. Fellows and Rolf Niedermeier}, +title = {Polynomial-time data reduction for dominating sets}, +journal = jacm, volume = 51, year = 2004, pages = {363-384}} + +@article{AlberFN04a, +author = {Jochen Alber and Henning Fernau and Rolf Niedermeier}, +title = {Parameterized complexity: Exponential speed-up for planar graph problems}, +journal = ja, volume = 52, year = 2004, pages = {26-56}} + +%Alber 2005 + +@article{AlberFFFNRS05, +author = {J. Alber and H. Fan and M. R. Fellows and H. Fernau and R. Niedermeier and F. A. Rosamond and U. Stege}, +title = {A refined search tree technique for dominating set on planar graphs}, +journal = jcss, volume = 71, year = 2005, pages = {385-405}} + +%Alber 2006 + +@article{AlberBN06, +author = {J. Alber and N. Betzler and R. Niedermeier}, +title = {Experiments in data reduction for optimal domination in networks}, +journal = aor, volume = 146, year = 2006, pages = {105-117}} + +@inproceedings{AlberDN06, +author = {Jochen Alber and Britta Dorn and Rolf Niedermeier}, +title = {A general data reduction scheme for domination in graphs}, +editor = {Jir\'{\i} Wiedermann and Gerard Tel and Jaroslav Pokorn{\'y} and M{\'a}ria Bielikov{\'a} and Julius Stuller}, +booktitle = sofsem06, year = 2006, publisher = lncs3831, pages = {137-147}} + +%All + +@article{AllanL78, +author = {R. B. Allan and R. C. Laskar}, +title = {On domination and independent domination number of graphs}, +journal = dm, volume = 23, year = 1978, pages = {73-76}} + +%Als + +@article{AlspachDHY08, +author = {Brian Alspach and Danny Dyer and Denis Hanson and Boting Yang}, +title = {Time constrained graph searching}, +journal = tcs, volume = 399, year = 2008, pages = {158-168}} + +@article{AlstrupLT00, +author = {S. Alstrup and P. W. Lauridsen and M. Thorup}, +title = {Generalized dominators for structured programs}, +journal = alg, volume = 27, pages = {244-253}, year = 2000} + +%Alt + +@inproceedings{AltBKRT07, +author = {Helmut Alt and Hans L. Bodlaender and Marc van Kreveld and G\"{u}nther Rote and Gerard Tel}, +title = {Wooden Geometric Puzzles: {D}esign and Hardness Proofs}, +editor = {Pierluigi Crescenzi and Giuseppe Prencipe and Geppino Pucci}, +booktitle = {Proceedings 4th International Conference on Fun with Algorithms, FUN 2007}, +publisher = lncs4475, year = 2007, pages = {16 - 29}} + + +%Alo + +%Alon 1986 + +@article{AlonBI86, +author = {Noga Alon and L. Babai and A. Itai}, +title = {A fast and simple randomized parallel algorithm for the maximal independent set problem}, +journal = ja, volume = 7, year = 1986, pages = {567-583}} + +%Alon 1989 + +@techreport{AlonST89, +author = {Noga Alon and Paul D. Seymour and Robin Thomas}, +title = {A separator theorem for non-planar graphs}, +year = 1989, institution = {DIMACS}, type = {Technical Report}, +number = {89-18}, pages = {1-9}, month = {11}} + +%Alon 1990 + +@inproceedings{AlonST90, +author = {Noga Alon and Paul D. Seymour and Robin Thomas}, +title = {A separator theorem for graphs with an excluded minor and applications}, +booktitle = stoc90, publisher = {ACM Press}, year = 1990, +address = {New York}} + +@article{AlonST90a, +author = {Noga Alon and Paul D. Seymour and Robin Thomas}, +title = {A separator theorem for non-planar graphs}, +journal = jacm, volume = 3, year = 1990, pages = {801-808}} + +%Alon 1994 + +@article{AlonST94, +author = {Noga Alon and Paul D. Seymour and Robin Thomas}, +title = {Planar separators}, +journal = sjdm, volume = 7, year = 1994, pages = {184-193}} + +%Alon 2002 + +@article{AlonHL02, +author = {N. Alon and S. Hoory and N. Linial}, +title = {The {M}oore bound for irregular graphs}, +journal = gc, volume = 18, year = 2002, pages = {53-57}} + +%Alon 2009 + +@article{AlonG09, +author = {Noga Alon and Shai Gutner}, +title = {Linear time algorithms for finding a dominating set of fixed size in degenerate graphs}, +journal = alg, volume = 54, year = 2009, pages = {544-556}} + +@article{AlonS09, +author = {Noga Alon and Uri Stav}, +title = {Hardness of edge-modification problems}, +journal = tcs, volume = 410, year = 2009, pages = {4920-4927}} + +%Am + +%Ame + +@article{AmestoyDD96, +author = {Patrick R. Amestoy and Timothy A. Davis and Iain S. Duff}, +title = {An Approximate Minimum Degree Ordering Algorithm}, +journal = sjmaa, volume = 17, year = 1996, pages = {886-905}} + +%Ami + +@inproceedings{Amir01, +author = {E. Amir}, +title = {Efficient approximation for triangulation of minimum treewidth}, +editor = {Jack S. Breese and Daphne Koller}, +booktitle = uai01, pages = {7-15}, year = 2001, publisher = {Morgan Kaufmann}} + +@article{Amir10, +author = {E. Amir}, +title = {Approximation algorithms for treewidth}, +journal = alg, volume = 56, year = 2010, pages = {448-479}} + +%An + +%And + +@article{Andrea84, +author = {T. Andrea}, +title = {Note on a pursuit game played on graphs}, +year = 1984, journal = dam, volume = 9, pages = {111-115}} + +@article{Andrea86, +author = {T. Andrea}, +title = {On a pursuit game played on graphs for which a minor is excluded}, +year = 1986, journal = jctb, volume = 41, pages = {37-47}} + +@article{Andres06, +author = {Stephan Dominique Andres}, +title = {The game chromatic index of forests of maximum degree}, +journal = dam, volume = 154, year = 2006, pages = {1317-1323}} + +@article{Andrzejak98, +author = {A. Andrzejak}, +title = {An algorithm for the {T}utte polynomials of graphs of bounded treewidth}, +journal = dm, volume = 190, year = 1998, pages = {39-54}} + +%Ans + +@article{Anstee85, +author = {R. P. Anstee}, +title = {An algorithmic proof of {T}utte's $f$-factor theorem}, +journal = ja, volume = 6, year = 1985, pages = {112-131}} + +%Ap + +%Apo + +@article{ApostolicoH87, +author = {Alberto Apostolico and Susanne E. Hambrusch}, +title = {Finding maximum cliques on circular-arc graphs}, +journal = ipl, volume = 26, year = 1987, pages = {209-215}} + +%App + +@article{AppelH77, +author = {K. Appel and W. Haken}, +title = {Every planar map is 4-colorable}, +journal = {Illinois Journal of Mathematics}, volume = 21, year = 1977, pages = {429-567}} + +@inproceedings{AppelgateBCC98, +author = {D. Appelgate and B. Bixby and V. CHv{\'{a}}tal and W. Cook}, +title = {On the solution of travelling salesman problems}, +booktitle = {Proceedings of the International Congress of Mathematicians}, +volume = {III}, address = {Berlin}, year = 1998, pages = {645-656}} + +%Ar + +%Ara + +@article{Araki09, +author = {Toru Araki}, +title = {Labeling bipartite permutation graphs with a condition at distance two}, +journal = dam, volume = 157, year = 2009, pages = {1677-1686}} + +%Arc + +@article{Archdeacon83, +author = {D. Archdeacon}, +title = {A {K}uratowski theorem for the projective plane}, +journal = jgt, volume = 7, year = 1983, pages = {325-334}} + +@unpublished{ArchdeaconFL88, +author = {D. Archdeacon and Michael R. Fellows and Michael A. Langston}, +title = {Fixed Genus Embedding in {$O(n^4)$} Time}, +note = {In preparation}, +year = 1988 +} + +%Ari + +@article{ArikatiCZ98, +author = {Srinivasa R. Arikati and Shiva Chaudhuri and Christos D. Zaroliagis}, +title = {All-pairs min-cut in sparse networks}, +journal = ja, volume = 29, year = 1998, pages = {82-110}} + +%Arn + +%Arnborg 1978 + +@article{Arnborg78, +author = {Stefan Arnborg}, +title = {Reduced State Enumeration --- Another Algorithm for Reliability Evaluation}, +journal = {IEEE Transactions on Reliability}, volume = {R-27}, year = 1978, pages = {101-105}} + +%Arnborg 1985 + +@article{Arnborg85, +author = {Stefan Arnborg}, +title = {Efficient algorithms for combinatorial problems on graphs with bounded decomposability -- {A} Survey}, +journal = bit, volume = 25, year = 1985, pages = {2-23}} + +@article{ArnborgP85, +author = {Stefan Arnborg and Andrzej Proskurowski}, +title = {Recognition of partial $k$-trees}, +journal = cn, volume = 47, year = 1985, pages = {69-75}} + +%Arnborg 1986 + +@article{ArnborgP86, +author = {Stefan Arnborg and Andrzej Proskurowski}, +title = {Characterization and recognition of partial 3-trees}, +journal = sjadm, volume = 7, year = 1986, pages = {305-314}} + +%Arnborg 1987 + +@article{ArnborgCP87, +author = {Stefan Arnborg and Derek G. Corneil and Andrzej Proskurowski}, +title = {Complexity of finding embeddings in a $k$-tree}, +journal = sjadm, volume = 8, year = 1987, pages = {277-284}} + +%Arnborg 1989 + +@article{ArnborgP89, +author = {Stefan Arnborg and Andrzej Proskurowski}, +title = {Linear time algorithms for {NP}-hard problems restricted to +partial $k$-trees}, +journal = dam, volume = 23, year = 1989, pages = {11-24}} + +%Arnborg 1990 + +@article{ArnborgPC90, +author = {Stefan Arnborg and Andrzej Proskurowski and Derek G. Corneil}, +title = {Forbidden minors characterization of partial 3-trees}, +journal = dm, volume = 80, year = 1990, pages = {1-19}} + +@inproceedings{ArnborgPS90, +author = {S. Arnborg and A. Proskurowski and D. Seese}, +title = {Monadic second order logic, tree automata and forbidden minors}, +editor = {E. B\"{o}rger and H. {Kleine B\"{u}ning} and M. M. Richter and W. Sch\"{o}nfeld}, +booktitle = {Proceedings 4th Workshop on Computer Science Logic, CSL'90}, +publisher = lncs533, year = 1991, pages = {1-16}} + +%Arnborg 1991 + +@unpublished{Arnborg91a, +author = {Stefan Arnborg}, +title = {Some {PSPACE}-Complete Logic Decision Problems that become +Linear Time Solvable on Formula Graphs of Bounded Treewidth}, +year = 1991, note = {Manuscript}} + +@article{ArnborgLS91, +author = {Stefan Arnborg and Jens Lagergren and Detlef Seese}, +title = {Easy problems for tree-decomposable graphs}, +journal = ja, year = 1991, volume = 12, pages = {308-340}} + +%Arnborg 1992 + +@unpublished{Arnborg92, +author = {Stefan Arnborg}, +title = {Decomposability helps for deciding logics of knowledge and belief}, +year = 1992, note = {Manuscript}} + +@article{ArnborgP92, +author = {S. Arnborg and A. Proskurowski}, +title = {Canonical representations of partial 2- and 3-trees}, +journal = bit, volume = 32, year = 1992, pages = {197-214}} + +%Arnborg 1993 + +@article{Arnborg93, +author = {Stefan Arnborg}, +title = {Graph Decompositions and Tree Automata in Reasoning with Uncertainty}, +journal = {Journal of Experimental \& Theoretical Artificial Intelligence}, +volume = 5, year = 1993, pages = {335-357}} + +@article{ArnborgCPS93, +author = {Stefan Arnborg and Bruno Courcelle and Andrzej Proskurowski and Detlef Seese}, +title = {An algebraic theory of graph reduction}, +journal = jacm, volume = 40, year = 1993, pages = {1134-1164}} + +%Aro + +@inproceedings{AroraKM95, +author = {S. Arora and D. Karger and M. Karpinski}, +title = {Polynomial time approximation schemes for dense instances of {NP}-hard problems}, +year = 1995, booktitle = stoc95, pages = {284-293}} + +@article{Arora03, +author = {S. Arora}, +title = {Approximation schemes for {NP}-hard geometric optimization problems: A survey}, +journal = mp, volume = 97, year = 2003, pages = {43-69}} + +%As + +%Asa + +@article{Asano85, +author = {T. Asano}, +title = {An approach to the subgraph homeomorphism problem}, +journal = tcs, volume = 38, year = 1985, pages = {249-267}} + +%Asp + +@article{AspvallH94, +author = {Bengt Aspvall and P. Heggernes}, +title = {Finding minimum height elimination trees for interval graphs in polynomial time}, +journal = bit, volume = 34, year = 1994, pages = {484-509}} + +@article{Aspvall95, +author = {Bengt Aspvall}, +title = {Minimizing elimination tree height can increase fill more than linearly}, +journal = ipl, volume = 56, year = 1995, pages = {115-120}} + +@article{AspvallPT00, +author = {B. Aspvall and A. Proskurowski and J. A. Telle}, +title = {Memory requirements for table computations in partial $k$-tree algorithms}, +journal = alg, volume = 27, year = 2000, pages = {382-394}} + +%Ass + +@article{AssmanPSZ81, +author = {S. F. Assman and G. W. Peck and Maciej M. Sys{\l}o and J. Zak}, +title = {The bandwidth of caterpillars with hairs of length 1 and 2}, +year = 1981, journal = sjadm, volume = 2, pages = {387-392}} + +%At + +%Ata + +@article{AtallahMJ88, +author = {M. J. Atallah and G. K. Manacher and J. Urrutia}, +title = {Finding a maximum independent dominating set in a permutation graph}, +journal = dam, volume = 21, year = 1988, pages = {177-183}} + +@inproceedings{AtallahCL93, +author = {M. J. Atallah and D. Z. Chen and D. T. Lee}, +title = {An optimal algorithm for shortest paths on weighted interval and +circular-arc graphs, with applications}, +editor = {Thomas Lengauer}, +year = 1993, booktitle = esa93, pages = {13-24}, publisher = lncs726} + +%Au + +%Aus + +@book{AusielloCGKMP99, +author = {Giorgio Ausiello and Pierluigi Crescenzi and Giorgio Gambosi and +Viggo Kann and Alberto {Marchetti-Spaccamela} and Marco Protasi}, +title = {Complexity and Approximation: Combinatorial Optimization Problems and Their Approximability Properties}, +publisher = {Springer}, +address = {Berlin}, +year = 1999} + +%B + +%Ba + +%Bab + +@article{Babel98, +author = {Luitpold Babel}, +title = {Triangulating graphs with few {$P_4$}'s}, +journal = dam, volume = 89, year = 1998, pages = {45-57}} + +@article{BabelO98, +author = {Luitpold Babel and S. Olariu}, +title = {On the structure of graphs with few {$P_4$}'s}, +journal = dam, volume = 84, year = 1998, pages = {1-13}} + +@article{Babel00, +author = {Luitpold Babel}, +title = {Recognition and isomorphism of tree-like {$P_4$}-connected graphs}, +journal = dam, volume = 99, year = 2000, pages = {295-315}} + +%Bac + +%Bachoore 2004 + +@misc{Bachoore04, +author = {Emgad Bachoore}, +note = {Work in progress}, +year = 2004} + +@techreport{BachooreB04, +author = {Emgad Bachoore and Hans L. Bodlaender}, +title = {New upper bound heuristics for treewidth}, +number = {UU-CS-2004-036}, +institution = {Institute for Information and Computing Sciences, Utrecht University}, +year = 2004, address = {Utrecht, The Netherlands}} + +%Bachoore 2005 + +@inproceedings{BachooreB05, +author = {Emgad H. Bachoore and Hans L. Bodlaender}, +title = {New upper bound heuristics for treewidth}, +editor = {Sotiris E. Nikoletseas}, +booktitle = wea05, publisher = lncs3503, year = 2005, pages = {217-227}} + +%Bachoore 2006 + +@inproceedings{BachooreB06, +author = {Emgad H. Bachoore and Hans L. Bodlaender}, +title = {A branch and bound algorithm for exact, upper, and lower bounds on treewidth}, +editor = {Siu-Wing Cheng and Chung Keung Poon}, +booktitle = {Proceedings of the 2nd International Conference on Algorithmic Aspects +in Information and Management, AAIM 2006}, +publisher = lncs4041, year = 2006, pages = {255-266}} + +@techreport{BachooreB06a, +author = {Emgad H. Bachoore and Hans L. Bodlaender}, +title = {Weighted Treewidth. Algorithmic Techniques and Results}, +number = {UU-CS-2006-012}, +institution = {Department of Information and Computing Sciences, Utrecht +University}, +year = 2006, address = {Utrecht, The Netherlands}, +note = {Available at http://www.cs.uu.nl/people/bachoore}} + +@techreport{BachooreB06b, +author = {Emgad H. Bachoore and Hans L. Bodlaender}, +title = {Convex recoloring of leaf-colored trees}, +number = {UU-CS-2006-010}, +institution = {Department of Information and Computing Sciences, Utrecht +University}, +year = 2006, address = {Utrecht, The Netherlands}} + +%Bad + +@inproceedings{BaderW97, +author = {M. Bader and R. Weibel}, +title = {Detecting and resolving size and proximity conflicts in the generalization of polygonal maps}, +booktitle = {Proceedings of the 18th International Cartographic Conference}, +address = {Stockholm}, +year = 1997} + +%Baf + +@article{BafnaBF99, +author = {V. Bafna and P. Berman and T. Fujito}, +title = {A 2-approximation algorithm for the undirected feedback vertex set problem}, +journal = sjdm, volume = 12, year = 1999, pages = {289-297}} + +%Bak + +@article{Baker94, +author = {B. S. Baker}, +title = {Approximation algorithms for {NP}-complete problems on planar graphs}, +journal = jacm, volume = 41, year = 1994, pages = {153-180}} + +@techreport{BakkerLT90, +author = {Erwin M. Bakker and Jan {van Leeuwen} and Richard B. Tan}, +title = {Perfect Colorings}, +number = {RUU-CS-90-35}, +year = 1990, +institution = {Department of Computer Science, Utrecht University}, +address = {Utrecht}, +type = {Technical Report}} + +@article{BakkerLT91, +author = {Erwin M. Bakker and Jan {van Leeuwen} and Richard B. Tan}, +title = {Linear Interval Routing Schemes}, +journal = {Algorithms Review}, volume = 2, year = 1991, pages = {45-61}} + +@misc{BakkerLT94, +author = {Erwin M. Bakker and Jan {van Leeuwen} and Richard B. Tan}, +note = {Work in progress}} + +@article{BalakrishnanD03, +author = {Hemant Balakrishnan and Narsingh Deo}, +title = {Parallel algorithm for radiocoloring a graph}, +journal = cn, volume = 160, year = 2003, pages = {193-204}} + +%Ban + +@article{BandeltM86, +author = {Hans-J{\"{u}}rgen Bandelt and Henry Martijn Mulder}, +title = {Distance-Hereditary Graphs}, +journal = jctb, volume = 41, year = 1986, pages = {182-208}} + +@techreport{BandeltDMMS88, +author = {Hans-J\"{u}rgen Bandelt and Allessandro D'Atri and Marina Moscarini +and Henry Martijn Mulder and Anselm Schultze}, +title = {Operations on Distance-Hereditary Graphs}, +year = 1988, number = {R.226}, +institution = {Istitutio di Analisi dei Sistemi ed Informatica}, +address = {Rome}} + +%Bar + +@article{BarYehudaE85, +author = {Reuven Bar-Yehuda and Simon Even}, +title = {A local-ratio theorem for approximating the weighted vertex cover problem}, +journal = adm, volume = 25, year = 1985, pages = {27-46}} + +@inproceedings{BarYehudaFR05, +author = {Reuven Bar-Yehuda and Ido Feldman and Dror Rawitz}, +title = {Improved approximation algorithm for convex recoloring of trees}, +editor = {Thomas Erlebach and Giuseppe Persiano}, +booktitle = waoa05, publisher = lncs3879, pages = {55-68}, year = 2006} + +@article{BarYehudaFR08, +author = {Reuven Bar-Yehuda and Ido Feldman and Dror Rawitz}, +title = {Improved approximation algorithm for convex recoloring of trees}, +journal = tocs, volume = 43, year = 2008, pages = {3-18}} + +@inproceedings{BarYehudaGNR94, +author = {Reuven Bar-Yehuda and D. Geiger and J. Naor and R. M. Roth}, +title = {Approximation algorithms for the vertex feedback set problem with +applications to constraint satisfaction and {B}ayesian inference}, +booktitle = soda94, year = 1994, pages = {344-354}} + +@article{BarrettJM00, +author = {Christopher L. Barrett and Riko Jacob and Madhav V. Marathe}, +title = {Formal-language-constrained path problems}, +journal = siamjc, volume = 30, year = 2000, pages = {809-837}} + +@article{BarrettHMRRS06, +author = {Christopher L. Barrett and Harry B. {Hunt III} and Madhav V. Marathe +and S. S. Ravi and Daniel J. Rosenkrantz and Richard E. Stearns}, +title = {Complexity of reachability problems for finite discrete dynamical systems}, +journal = jcss, year = 2006, volume = 72, pages = {1317-1345}} + +@article{BarthFH02, +author = {D. Barth and P. Fragopoulou and M.-C. Heydemann}, +title = {Uniform emulations of {C}artesian-product and {C}ayley graphs}, +journal = dam, volume = 116, year = 2002, pages = {37-54}} + +%Bat + +@inproceedings{BattistaN86, +author = {Di Battista, G. and E. Nardelli}, +title = {An Algorithm for Testing Planarity of Hierarchical Graphs}, +booktitle = wg86, publisher = lncs246, year = 1986, pages = {277-289}} + +@techreport{BattistaT89, +author = {Di Battista, Giuseppe and Roberto Tamassia}, +title = {On-Line Planarity Testing}, +number = {CS-89-31}, +institution = {???}, +year = 1989} + +@book{BattistaETT99, +author = {Di Battista, Giuseppe and Peter Eades and Roberto Tamassia and +Ioannis G. Tollis}, +title = {Graph Drawing. Algorithms for the Visualization of Graphs}, +publisher = {Prentice Hall}, +address = {Upper Saddle River, New Jersey, USA}, +year = 1999} + +%Bau + +@article{BauderonC87, +author = {M. Bauderon and Bruno Courcelle}, +title = {Graph expressions and graph rewritings}, +journal = mst, volume = 20, year = 1987, pages = {83-127}} + +%Bax + +@article{Bax93, +author = {E. T. Bax}, +title = {Inclusion and exclusion algorithm for the {H}amiltonian path problem}, +journal = ipl, volume = 47, year = 1993, pages = {203-207}} + +%Baz + +@article{BazganTV06, +author = {Christina Bazgan and Zsolt Tuza and Daniel Vanderpooten}, +title = {Degree-constrained decompositions of graphs: Bounded treewidth and planarity}, +journal = tcs, volume = 355, year = 2006, pages = {389-395}} + +%Be + +%Bec + +@inproceedings{BeckerG96, +author = {A. Becker and D. Geiger}, +title = {A sufficiently fast algorithm for finding close to optimal junction trees}, +editor = {Dan Geiger and Prakash P. Shenoy}, +booktitle = uai96, publisher = {Morgan Kaufmann}, year = 1996, pages = {81-96}} + +@article{BeckerG96a, +author = {A. Becker and D. Geiger}, +title = {Optimization of {P}earl's method of conditioning and greedy-like +approximation algorithms for the vertex feedback set problem}, +journal = artint, volume = 83, year = 1996, pages = {167-188}} + +@article{BeckerBG00, +author = {Ann Becker and Reuven Bar-Yehuda and Dan Geiger}, +title = {Randomized algorithms for the loop cutset problem}, +journal = jair, volume = 12, year = 2000, pages = {219-234}} + +@article{BeckerG01, +author = {Ann Becker and Dan Geiger}, +title = {A sufficiently fast algorithm for finding close to optimal clique trees}, +journal = artint, volume = 125, year = 2001, pages = {3-17}} + +%Beh + +@book{BehzadCL79, +author = {M. Behzad and G. Chartrand and L. Lesniak-Foster}, +title = {Graphs and Digraphs}, +year = 1979, +publisher = {Pindle, Weber \& Schmidt}, +address = {Boston}} + +%Bei + +@article{BeigelE05, +author = {R. Beigel and D. Eppstein}, +title = {3-coloring in {$O(1.3289^n)$} time}, +journal = ja, volume = 54, year = 2005, pages = {168-204}} + +@article{BeinBT85, +author = {W. W. Bein and P. Bruckner and A. Tamir}, +title = {Minimum cost flow algorithms for series-parallel networks}, +journal = dam, volume = 10, year = 1985, pages = {117-124}} + +@article{BeinekeP71, +author = {L. W. Beineke and R. E. Pippert}, +title = {Properties and characterizations of $k$-trees}, +journal = math, volume = 18, year = 1971, pages = {141-151}} + +@inproceedings{BeinlichSCC89, +author = {I. Beinlich and G. Suermondt and R. Chavez and G. Cooper}, +title = {The {ALARM} monitoring system: A case study with two probabilistic inference techniques for belief networks}, +booktitle = {Proceedings of the 2nd European Conference on AI and Medicine}, +publisher = {Springer-Verlag}, +year = 1989, pages = {247-256}} + +%Bel + +@article{BellenbaumD02, +author = {P. Bellenbaum and R. Diestel}, +title = {Two short proofs concerning tree-decompositions}, +journal = cpc, volume = 11, year = 2002, pages = {541-547}} + +@book{BellmanD62, +author = {R. E. Bellman and S. E. Dreyfus}, +title = {Applied Dynamic Programming}, +publisher = {Princeton University Press}, +address = {Princeton, N.J., USA}, +year = 1962} + +%Ben + +@article{Bentz08, +author = {C\'{e}dric Bentz}, +title = {On the complexity of the multicut problem in bounded tree-width graphs and digraphs}, +journal = dam, volume = 156, year = 2008, pages = {1908-1917}} + +%Ber + +%Berg + +@techreport{BergOK89, +author = {Mark de Berg and Mark Overmars and Marc van Kreveld}, +title = {Finding Complete Bipartite Subgraphs in Bipartite Graphs}, +institution = {Department of Computer Science, Utrecht University}, +number = {RUU-CS-89-30}, year = 1989, address = {Utrecht, The Netherlands}} + +@book{Berge73, +author = {C. Berge}, +title = {Graphs and Hypergraphs}, +publisher = {North-Holland}, address = {Amsterdam}, +year = 1973 } + +@book{Berge85, +author = {C. Berge}, +title = {Graphs}, +publisher = {North-Holland}, address = {Amsterdam}, +year = 1985 } + +@article{BergerFNP07, +author = {A. Berger and Takuro Fukunaga and Hiroshi Nagamochi and Ojas Parekh}, +title = {Approximability of the capacitated $b$-edge dominating set problem}, +journal = tcs, volume = 385, year = 2007, pages = {202-213}} + +%Berl + +@book{BerlekampCG82a, +author = {E. R. Berlekamp and J. H. Conway and R. K. Guy}, +title = {Winning Ways for your mathematical plays, Volume 1: Games in +General}, +publisher = {Academic Press}, +address = {New York}, +year = 1982 } + +@book{BerlekampCG82b, +author = {E. R. Berlekamp and J. H. Conway and R. K. Guy}, +title = {Winning Ways for your mathematical plays, Volume 2: Games in +Particular}, +publisher = {Academic Press}, +address = {New York}, +year = 1982 } + +%Berm + +@article{BermanJLSS90, +author = {Fran Berman and David Johnson and Tom Leighton and Peter W. Shor and Larry Snyder}, +title = {Generalized planar matching}, +journal = ja, volume = 11, year = 1990, pages = {153-185}} + +%Bern + +@article{BernLW87, +author = {M. W. Bern and Eugene L. Lawler and A. L. Wong}, +title = {Linear time computation of optimal subgraphs of decomposable graphs}, +journal = ja, volume = 8, year = 1987, pages = {216-235}} + +@article{BernP90, +author = {Marshall Bern and Paul Plassmann}, +title = {The {S}teiner problem with edge lengths 1 and 2}, +journal = ipl, volume = 32, year = 1989, pages = {171-176}} + +@inproceedings{BernH96, +author = {Marshall W. Bern and Barry Hayes}, +title = {The Complexity of Flat Origami}, +year = 1996, pages = {175-183}, +booktitle = soda96} + +@article{BernhartK79, +author = {F. Bernhart and B. Kainen}, +title = {The book thickness of a graph}, +journal = jctb, volume = 27, year = 1979, pages = {320-331}} + +%Berr + +%Berry 1997 + +@techreport{BerryB97, +author = {A. Bery and J.-P. Bordat}, +title = {Decomposition by clique minimal separators}, +type = {Research Report}, +institution = {LIM}, address = {Marseille}, year = 1997} + +%Berry 1998 + +@phdthesis{Berry98, +author = {A. Berry}, +title = {D\'{e}sarticulation d'un graphe}, +school = {Universit\'{e} Montpellier II}, +year = 1998} + +@article{BerryB98, +author = {A. Berry and J.-P. Bordat}, +title = {Separability generalizes {D}irac's theorem}, +journal = dam, volume = 84, year = 1998, pages = {43-53}} + +%Berry 1999 + +@inproceedings{Berry99, +author = {A. Berry}, +title = {A Wide-Range Efficient Algorithm for Minimal Triangulation}, +booktitle = "{SODA}'99: {ACM}-{SIAM} Symposium on Discrete Algorithms", +year = "1999", pages ={860-861}} + +@inproceedings{BerryBC99, +author = {A. Berry and J.-P. Bordat and O. Cogis}, +title = {Generating all the minimal separators of a graph}, +editor = {Peter Widmayer and Gabriele Neyer and Sephan Eidenbenz}, +booktitle = wg99, publsiher = lncs1665, year = 1999, pages = {167-172}} + +%Berry 2000 + +@article{BerryBC00, +author = {Anne Berry and Jean-Paul Bordat and Olivier Cogis}, +title = {Generating all the minimal separators of a graph}, +journal = ijfcs, volume = 11, year = 2000, pages = {397-404}} + +@article{BerryBH00, +author = {Anne Berry and Jean-Paul Bordat and Pinar Heggernes}, +title = {Recognizing weakly triangulated graphs by edge separability}, +journal = nordicjc, volume = 7, year = 2000, pages = {164-177}} + +%Berry 2001 + +@inproceedings{BerryB01, +author = {Anne Berry and Jean-Paul Bordat}, +title = {Moplex elimination orderings}, +editor = {Johann Hurink and Stefan Pickl and Hajo Broersma and Ulrich Faigle}, +booktitle = {Proceedings of the 1st Cologne-Twente Workshop on Graphs and Combinatorial +Optimization, Electronic Notes in Discrete Mathematics 8}, +year = 2001, pages = {6 -- 9}} + +%Berry 2002 + +@inproceedings{BerryBH02, +author = {Anne Berry and Jean R. S. Blair and Pinar Heggernes}, +title = {Maximum cardinality search for computing minimal triangulations}, +editor = {Lud\u{e}k Ku\u{c}era}, +booktitle = wg02, publisher = lncs2573, year = 2002, pages = {1-12}} + +%Berry 2003 + +@inproceedings{BerryHS03, +author = {Anne Berry and Pinar Heggernes and Genevi\`{e}ve Simonet}, +title = {The minimum degree heuristic and the minimal triangulation process}, +editor = {Hans L. Bodlaender}, +booktitle = wg03, publisher = lncs2880, year = 2003, pages = {58-70}} + +@inproceedings{BerryJV03, +author = {Anne Berry and Pinar Heggernes and Yngve Villanger}, +title = {A vertex incremental approach for dynamically maintaining chordal graphs}, +editor = {Toshihide Ibaraki and Naoki Katoh and Hirotaka Ono}, +booktitle = isaac03, publisher = lncs2906, pages = {47-57}, year = 2003} + +%Berry 2004 + +@article{BerryBHP04, +author = {Anne Berry and Jean Blair and Pinar Heggernes and Barry Peyton}, +title = {Maximum cardinality search for computing minimal triangulations of graphs}, +journal = alg, volume = 39, year = 2004, pages = {287-298}} + +%Berry 2005 + +@inproceedings{BerryKS05, +author = {Anne Berry and Richard Krueger and Genevi\`{e}ve Simonet}, +title = {Ultimate generalizations of {LexBFS} and {LEX M}}, +editor = {Dieter Kratsch}, +booktitle = wg05, year = 2005, publisher = lncs3787, pages = {199-213}} + +%Berry 2006 + +@article{BerryBHSV06, +author = {Anne Berry and Jean-Paul Bordat and Pinar Heggernes and Genevi\`{e}ve Simonet and Yngve Villanger}, +title = {A wide-range algorithm for minimal triangulation from an arbitrary ordering}, +journal = ja, volume = 58, year = 2006, pages = {33-66}} + +@article{BerryHV06, +author = {Anne Berry and Pinar Heggernes and Yngve Villanger}, +title = {A vertex incremental approach for maintaining chordality}, +journal = dm, volume = 306, year = 2006, pages = {318-336}} + +%Berry 2008 + +@article{BerryDHS08, +author = {Anne Berry and Elias Dahlhaus and Pinar Heggernes and Genevi\`{e}ve Simonet}, +title ={Sequential and parallel triangulating algorithms for {E}limination {G}ame and +new insights on {M}inimum {D}egree}, +journal = tcs, volume = 409, year = 2008, pages = {601-616}} + +%Bert + +@book{BerteleB72, +author = {U. Bertele and F. Brioschi}, +title = {Nonserial Dynamic Programming}, +publisher = {Academic Press}, address = {New York}, +year = 1972 } + +@inproceedings{BertolazziCDTT92, +author = {P. Bertolazzi and Robert F. Cohen and G. {Di Battista} and Roberto Tamassia and I. G. Tollis}, +title = {How to draw a series-parallel digraph}, +editor = {O. Nurmi and E. Ukkonen}, +booktitle = swat92, publisher = lncs621, year = 1992, pages = {272-283}} + +%Bertossi 1981 + +@article{Bertossi81, +author = {Alan A. Bertossi}, +title = {The edge {H}amiltonian path problem is {NP}-complete}, +journal = ipl, volume = 13, year = 1981, pages = {157-159}} + +%Bertossi 1983 + +@article{Bertossi83, +author = {Alan A. Bertossi}, +title = {Finding {H}amiltonian Circuits in Proper Interval Graphs}, +journal = ipl, volume = 17, year = 1983, pages = {97-102}} + +%Bertossi 1984 + +@article{Bertossi84, +author = {Alan A. Bertossi}, +title = {Dominating set for split and bipartite graphs}, +journal = ipl, volume = 19, year = 1984, pages = {37-40}} + +%Bertossi 1986 + +@article{Bertossi86, +author = {Alan A. Bertossi}, +title = {Total domination in interval graphs}, +journal = ipl, volume = 23, year = 1986, pages = {131-134}} + +@article{BertossiB86, +author = {Alan A. Bertossi and M. A. Bonucelli}, +title = {Hamiltonian circuits in interval graph generalizations}, +journal = ipl, volume = 23, year = 1986, pages = {195-200}} + +%Bertossi 1987 + +@article{BertossiB87, +author = {Alan A. Bertossi and M. A. Bonuccelli}, +title = {Some parallel algorithms on interval graphs}, +journal = dam, volume = 16, year = 1987, pages = {101-111}} + +%Bertossi 1988 + +@article{Bertossi88, +author = {Alan A. Bertossi}, +title = {On the domatic number of interval graphs}, +journal = ipl, volume = 28, year = 1988, pages = {275-280}} + +%Bes + +@unpublished{BessyFGPST09, +author = {St{\'e}phane Bessy and Fedor V. Fomin and Serge Gaspers and Christophe Paul and +Anthony Perez and Saket Saurabh and St{\'e}phan Thomass{\'e}}, +title = {Kernels for feedback arc set in tournaments}, +year = 2009, note = {The Computing Research Repository, abs/0907.2165. To appear in proceedings FSTTCS 2009.}} + +%Bet + +%Betzler 2006 + +@article{BetzlerNU06, +author = {Nadja Betzler and Rolf Niedermeier and Johannes Uhlmann}, +title = {Tree decompositions of graphs: Saving memory in dynamic programming}, +journal = do, volume = 3, year = 2006, pages = {220-229}} + +%Betzler 2009 + +@article{BetzlerFGNR09, +author = {Nadja Betzler and Michael R. Fellows and Jiong Guo and Rolf Niedermeier and Frances A. Rosamond}, +title = {Fixed-parameter algorithms for {K}emeny rankings}, +journal = tcs, volume = 410, year = 2009, pages = {4554-4570}} + +@article{BetzlerU09, +author = {Nadja Betzler and Johannes Uhlmann}, +title = {Parameterized complexity of candidate control in elections and related digraph problems}, +journal = tcs, volume = 410, year = 2009, pages = {5425-5442}} + +%Betzler 2010 + +@article{BetzlerGN10, +author = {Nadja Betzler and Jiong Guo and Rolf Niedermeier}, +title = {Parameterized computational complexity of {D}odgson and {Y}oung elections}, +journal = ic2, volume = 208, year = 2010, pages = {165-177}} + +%Bey + +@inproceedings{BeyerPHM77, +author = {T. Beyer and Andrzej Proskurowski and S. Hedetniemi and S. Mitchell}, +title = {Independent domination in trees}, +booktitle = {Proceedings of the 8th S. E. Conf. on Combinatorics, Graph Theory, and Computing}, +pages = {321-328}, publisher = {Utilitas Mathematica}, address = {Winnipeg}, +year = 1977 } + +@article{BeyerJM79, +author = {T. Beyer and W. Jones and S. Mitchell}, +title = {Linear algorithms for isomorphism of maximal outerplanar graphs}, +journal = jacm, volume = 26, year = 1979, pages = {603-610}} + +%Bi + +%Bia + +@inproceedings{BianG08, +author = {Zhengbing Bian and Qian-Ping Gu}, +title = {Computing branch decompositions of large planar graphs}, +editor = {Catherine C. McGeoch}, +booktitle = wea08, publisher = lncs5038, pages = {87-100}, year = 2008} + +%Bie + +@article{BiedlK98, +author = {Therese C. Biedl and Goos Kant}, +title = {A better heuristic for orthogonal graph drawings}, +journal = cg, volume = 9, year = 1998, pages = {159-180}} + +@article{BiedlCGHW05, +author = {Therese Biedl and Timothy Chan and Yashar Ganjali and Mohammad Taghi Hajiaghayi and David R. Wood}, +title = {Balanced vertex-orderings of graphs}, +journal = dam, volume = 148, year = 2005, pages = {27-48}} + +%Bienstock 1988 + +@article{BienstockM88, +author = {Daniel Bienstock and Clyde L. Monma}, +title = {On the complexity of covering vertices by faces in a planar graph}, +journal = siamjc, volume = 17, year = 1988, pages = {53-76}} + +%Bienstock 1989 + +@article{BienstockM89, +author = {Daniel Bienstock and Clyde L. Monma}, +title = {Optimal enclosing regions in planar graphs}, +journal = netw, volume = 19, year = 1989, pages = {79-94}} + +%Bienstock 1990 + +@article{Bienstock90, +author = {Daniel Bienstock}, +title = {Embedding graphs in trees}, +journal = jctb, volume = 49, year = 1990, pages = {103-136}} + +@article{BienstockM90, +author = {Daniel Bienstock and Clyde L. Monma}, +title = {On the complexity of embedding planar graphs to minimize certain distance measures}, +journal = alg, volume = 5, year = 1990, pages = {93-109}} + +%Bienstock 1991 + +@article{Bienstock91, +author = {Daniel Bienstock}, +title = {Graph searching, Path-width, Tree-width and Related Problems (A Survey)}, +journal = {DIMACS Series in Discrete Mathematics and Theoretical Computer Science}, +volume = 5, year = 1991, pages = {33-49}} + +@article{BienstockRST91, +author = {Daniel Bienstock and Neil Robertson and Paul D. Seymour and Robin Thomas}, +title = {Quickly excluding a forest}, +journal = jctb, volume = 52, year = 1991, pages = {274-283}} + +@article{BienstockS91, +author = {Daniel Bienstock and Paul Seymour}, +title = {Monotonicity in Graph Searching}, +journal = ja, volume = 12, year = 1991, pages = {239 - 245}} + +%Bienstock 1992 + +@article{BienstockD92, +author = {Daniel Bienstock and N. Dean}, +title = {On obstructions to small face covers in planar graphs}, +journal = jctb, volume = 55, year = 1992, pages = {163-189}} + +%Bienstock 1995 + +@incollection{BienstockL95, +author = {Daniel Bienstock and Michael A. Langston}, +title = {Algorithmic implications of the graph minor theorem}, +booktitle = {Handbook of Operations Research and Management Science: Network Models}, +editor = {M. O. Ball and T. L. Magnanti and C. L. Monma and G. L. Nemhauser}, +year = 1995, pages = {481-502}, +publisher = {North-Holland}, +address = {Amsterdam, the Netherlands}} + +%Bienstock 2006 + +@article{BienstockO06, +author = {Daniel Bienstock and Nuri \"{O}zbay}, +title = {Tree-width and the {S}herali-{A}dams operator}, +journal = do, volume = 1, year = 2004, pages = {13-21}} + +%Bir + +@article{Birmele03, +author = {Etienne Birmele}, +title = {Tree-width and circumference of graphs}, +journal = jgt, volume = 43, year = 2003, pages = {24-25}} + +@article{BirmeleBR09, +author = {E. Birmel\'{e} and J. A. Bondy and B. A. Reed}, +title = {Tree-width of graphs without a 3$\times$3 grid minor}, +journal = dam, volume = 157, year = 2009, pages = {2577-2596}} + +%Bj + +@inproceedings{BjorklundHKK07, +author = {Andreas Bj\"orklund and Thore Husfeldt and Petteri Kaski and Mikko Koivisto}, +title = {Fourier meets {M}\"obius: {F}ast subset convolution}, +booktitle = stoc07, pages = {67-74}, year = 2007, punlisher = {ACM}} + +@article{BjorklundHK09, +author = {Andreas Bj{\"o}rklund and Thore Husfeldt and Mikko Koivisto}, +title = {Set Partitioning via Inclusion-Exclusion}, +journal = siamjc, volume = 39, year = 2009, pages = {546-563}} + +%Bl + +%Bla + +%Blair 1993 + +@inproceedings{BlairP93, +author = {Jean R. S. Blair and B. Peyton}, +title = {An introduction to chordal graphs and clique trees}, +booktitle = {Graph Theory and Sparse Matrix Computations}, +editor = {A. George and J. R. Gilbert and J. H. U. Liu}, +publisher = {Springer-Verlag}, address = {New York}, year = 1993, +pages = {1-29}} + +%Blair 1994 + +@article{BlairP94, +author = {J. R. S. Blair and B. W. Peyton}, +title = {On finding minimum-diameter clique trees}, +journal = nordicjc, volume = 1, year = 1994, pages = {173-201}} + +%Blair 2001 + +@article{BlairHT01, +author = {Jean R. S. Blair and Pinar Heggernes and {Jan Arne} Telle}, +title = {A practical algorithm for making filled graphs minimal}, +journal = tcs, volume = 250, year = 2001, pages = {125-141}} + +%Blair 2008 + +@article{BlairGHHJK08, +author = {Jean R. S. Blair and Wayne Goddard and Stephen T. Hedetniemi and +Steve Horton and Patrick Jones and Grzegorz Kubicki}, +title = {On domination and reinforcement numbers in trees}, +journal = dm, volume = 308, year = 2008, pages = {1165-1175}} + +%Bli + +@article{BlinFHV08, +author = {G. Blin and G. Fertin and D. Hermelin and S. Vialette}, +title = {Fixed-parameter algorithms for protein similarity search under {mRNA} structure constraints}, +journal = jda, volume = 6, year = 2008, pages = {618-626}} + +%Blo + +@article{BlokhuisK95, +author = {A. Blokhuis and T. Kloks}, +title = {On the equivalence covering number of splitgraphs}, +journal = ipl, volume = 54, year = 1995, pages = {301-304}} + +%Bo + +%Boc + +@article{BockerBBT09, +author = {S. B\"{o}cker and S. Briesemeister and Q. B. A. Bui and A. Truss}, +title = {Going weighted: parameterized algorithms for cluster editing}, +journal = tcs, volume = 410, year = 2009, pages = {5467-5480}} + +@unpublished{BockerBK09, +author = {Sebastian B\"{o}cker and Sebastian Briesemeister and Gunnar W. Klau}, +title = {Exact algorithms for cluster editing: Evaluation and experiments}, +note = {To appear in Algorithmica. Online publication: doi 10.1007/s00453-009-9339-7}, +year = 2009} + +%Bod + +%Bodlaender 1985 + +@article{Bodlaender85, +author = {Hans L. Bodlaender}, +title = {The complexity of finding uniform emulations on paths and ring networks}, +journal = ic2, volume = 86, year = 1990, pages = {87 - 106}} + +%Bodlaender 1986 + +@techreport{Bodlaender86, +author = {Hans L. Bodlaender}, +title = {Classes of Graphs with Bounded Treewidth}, +institution = {Dept. of Computer Science, Utrecht University}, +year = 1986, number = {RUU-CS-86-22}, address = {Utrecht, The Netherlands}} + +%Bodlaender 1987 + +@techreport{Bodlaender87-, +author = {Hans L. Bodlaender}, +title = {Dynamic Programming Algorithms on Graphs with Bounded Tree-width}, +institution = {Lab. for Computer Science, M.I.T.}, +type = {Tech. Rep.}, year = 1987} + +@inproceedings{Bodlaender87, +author = {Hans L. Bodlaender}, +title = {Dynamic programming algorithms on graphs with bounded tree-width}, +editor = {Timo Lepist\"{o} and Arto Salomaa}, +booktitle = icalp88, publisher = lncs317, year = 1988, pages = {105-119}} + +@techreport{Bodlaender87b, +author = {Hans L. Bodlaender}, +title = {The Maximum Cut and Minimum Cut Into Bounded Sets Problems on Cographs}, +institution = {Dept. of Computer Science, Utrecht University}, +year = 1987, address = {Utrecht, The Netherlands}, number = {RUU-CS-87-12}} + +%Bodlaender 1988 + +@inproceedings{Bodlaender88, +author = {Hans L. Bodlaender}, +title = {{NC}-algorithms for graphs with small treewidth}, +editor = {J. van Leeuwen}, +booktitle = wg88, publisher = lncs344, year = 1988, pages = {1-10}} + +@techreport{Bodlaender88a, +author = {Hans L. Bodlaender}, +title = {Planar Graphs with Bounded Treewidth}, +type = {Technical Report}, +number = {RUU-CS-88-14}, +institution = {Dept. of Computer Science, Utrecht University}, +address = {Utrecht, The Netherlands}, +year = 1988 } + +@article{Bodlaender88c, +author = {Hans L. Bodlaender}, +title = {Some classes of graphs with bounded treewidth}, +journal = beatcs, volume = 36, year = 1988, pages = {116-126}} + +@article{Bodlaender88d, +author = {Hans L. Bodlaender}, +title = {Improved self-reduction algorithms for graphs with bounded treewidth}, +journal = dam, volume = 54, year = 1994, pages = {101-115}} + +%Bodlaender 1989 + +@article{Bodlaender89, +author = {Hans L. Bodlaender}, +title = {On linear time minor tests with depth first search}, +journal = ja, volume = 14, year = 1993, pages = {1-23}} + +@article{Bodlaender89z, +author = {Hans L. Bodlaender}, +title = {On the complexity of some coloring games}, +journal = ijfcs, volume = 2, number = 2, year = 1991, pages = {133-147}} + +%Bodlaender 1990 + +@article{Bodlaender90b, +author = {Hans L. Bodlaender}, +title = {Polynomial algorithms for Graph Isomorphism and Chromatic Index on partial $k$-trees}, +journal = ja, volume = 11, year = 1990, pages = {631-643}} + +@techreport{BodlaenderK90, +author = {Hans L. Bodlaender and Ton Kloks}, +title = {Fast Algorithms for the {\sc Tron} Game on Trees}, +type = {Technical Report}, +institution = {Department of Computer Science, University of Utrecht}, +number = {RUU-CS-90-11}, +year = 1990 } + +%Bodlaender 1991 + +@inproceedings{BodlaenderK91, +author = {Hans L. Bodlaender and Ton Kloks}, +title = {Better algorithms for the pathwidth and treewidth of graphs}, +editor = {Javier Leach Albert and Burkhard Monien and Mario Rodr\'{\i}guez-Artalejo}, +booktitle = icalp91, publisher = lncs510, year = 1991, pages = {544-555}} + +%Bodlaender 1992 + +@inproceedings{Bodlaender92b, +author = {Hans L. Bodlaender}, +title = {Dynamic algorithms for graphs with treewidth 2}, +editor = {Jan van Leeuwen}, +booktitle = wg93, publisher = lncs790, year = 1994, pages = {112-124}} + +@article{Bodlaender92c, +author = {Hans L. Bodlaender}, +title = {A Tourist Guide through Treewidth}, +journal = actacybernetica, volume = 11, pages = {1-23}, year = 1993} + +@inproceedings{BodlaenderFW92, +author ={Hans L. Bodlaender and Michael R. Fellows and Tandy J. Warnow}, +title = {Two Strikes Against Perfect Phylogeny}, +editor = {W. Kuich}, +booktitle = icalp92, year = 1992, pages = {273-283}, publisher = lncs623} + +@misc{BodlaenderKKM92, +author = {Hans L. Bodlaender and Ton Kloks and Dieter Kratsch and Haiko M{\"u}ller}, +year = 1993, +note = {Unpublished results}} + +%Bodlaender 1993 + +@article{Bodlaender93, +author = {Hans L. Bodlaender}, +title = {Complexity of path-forming games}, +journal = tcs, volume = 110, year = 1993, pages = {215-245}} + +@inproceedings{Bodlaender93b, +author = {Hans L. Bodlaender}, +title = {On reduction algorithms for graphs with small treewidth}, +editor = {Jan van Leeuwen}, +booktitle = wg93, publisher = lncs790, year = 1994, pages = {45-56}} + +@inproceedings{Bodlaender93c, +author = {Hans L. Bodlaender}, +title = {Kayles on special classes of graphs --- {An} application of {S}prague-{G}rundy theory}, +editor = {Ernst W. Mayr}, +booktitle = wg92, publisher = lncs657, year = 1993, pages = {90-102}} + +@article{BodlaenderDFW93, +author = {Hans L. Bodlaender and Rodney G. Downey and Michael R. Fellows and Harold T. Wareham}, +title = {The parameterized complexity of sequence alignment and consensus }, +journal = tcs, volume = 147, year = 1995, pages = {31-54}} + +@inproceedings{BodlaenderG93, +author = {Hans L. Bodlaender and Jens Gustedt}, +title = {A Conjecture on the Pathwidth of $k$-Trees}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147. In section ``Open Problems'', editor N. Dean}, +pages = {678-679}, +year = 1993} + +@article{BodlaenderK93, +author = {Hans L. Bodlaender and Ton Kloks}, +title = {A simple linear time algorithm for triangulating three-colored graphs}, +journal = ja, volume = 15, year = 1993, pages = {160-172}} + +@article{BodlaenderM93, +author = {Hans L. Bodlaender and Rolf H. M{\"{o}}hring}, +title = {The pathwidth and treewidth of cographs}, +journal = sjdm, volume = 6, year = 1993, pages = {181-188}} + +%Bodlaender 1994 + +@article{Bodlaender94, +author = {Hans L. Bodlaender}, +title = {Improved self-reduction algorithms for graphs with bounded treewidth}, +journal = dam, volume = 54, year = 1994, pages = {101-115}} + +@article{Bodlaender94c, +author = {Hans L. Bodlaender}, +title = {On disjoint cycles}, +journal = ijfcs, volume = 5, number = 1, year = 1994, pages = {59-68}} + +@inproceedings{BodlaenderFH94, +author = {Hans L. Bodlaender and Michael R. Fellows and Michael Hallett}, +title = {Beyond {{\it NP}}-Completeness for Problems of Bounded Width: Hardness for the {$W$} Hierarchy}, +year = 1994, +booktitle = stoc94, +address = {New York}, +pages = {449-458}, +publisher = {ACM Press}} + +@article{BodlaenderJW94, +author = {Hans L. Bodlaender and Klaus Jansen and Gerhard J. Woeginger}, +title = {Scheduling with incompatible jobs}, +journal = dam, volume = 55, year = 1994, pages = {219-232}} + +%Bodlaender 1995 + +@article{BodlaenderDFHW95, +author = {Hans L. Bodlaender and Rodney G. Downey and Michael R. Fellows and Michael T. Hallett and H. Todd Wareham}, +title = {Parameterized complexity analysis in computational biology}, +journal = {Computer Applications in the Biosciences}, volume = 11, year = 1995, pages = {49-57}} + +@article{BodlaenderDFW95, +author = {Hans L. Bodlaender and Rodney G. Downey and Michael R. Fellows and Harold T. Wareham}, +title = {The parameterized complexity of sequence alignment and consensus}, +journal = tcs, volume = 147, year = 1995, pages = {31-54}} + +@article{BodlaenderGHK95, +author = {Hans L. Bodlaender and John R. Gilbert and H. Hafsteinsson and Ton Kloks}, +title = {Approximating Treewidth, Pathwidth, Frontsize, and Minimum Elimination Tree Height}, +journal = ja, volume = 18, year = 1995, pages = {238-255}} + +@inproceedings{BodlaenderF95, +author = {Hans L. Bodlaender and Babette de Fluiter}, +title = {Intervalizing $k$-Colored Graphs}, +editor = {Zolt\'{a}n F\"{u}l\"{o}p and Ferenc G\'{e}cseg}, +booktitle = icalp95, publisher = lncs944, year = 1995, pages = {87-98}} + +@techreport{BodlaenderF95a, +author = {Hans L. Bodlaender and Babette de Fluiter}, +title = {Reduction Algorithms for Graphs with Small Treewidth}, +number = {UU-CS-1995-37}, +year = 1995, +institution = {Department of Computer Science, Utrecht University}, +address = {Utrecht}, +type = {Technical Report}} + +@article{BodlaenderF95b, +author = {Hans L. Bodlaender and Michael R. Fellows}, +title = {{$W[2]$}-hardness of precedence constrained {$K$}-processor scheduling}, +journal = orl, volume = 18, year = 1995, pages = {93-97}} + +@techreport{BodlaenderFHWW95, +author = {Hans L. Bodlaender and Michael R. Fellows and Michael T. Hallett and H. Todd Wareham and Tandy J. Warnow}, +title = {The hardness of problems on thin colored graphs}, +institution = vi, +address = {Utrecht}, +type = tr, +number = {UU-CS-1995-36}, +year = 1995 +} + +@article{BodlaenderKK95, +author = {Hans L. Bodlaender and Ton Kloks and Dieter Kratsch}, +title = {Treewidth and pathwidth of permutation graphs}, +journal = sjdm, volume = 8, number = 4, year = 1995, pages = {606-616}} + +%Bodlaender 1996 + +@article{Bodlaender96, +author = {Hans L. Bodlaender}, +title = {A linear time algorithm for finding tree-decompositions of small treewidth}, +journal = siamjc, year = 1996, volume = 25, pages = {1305-1317}} + +@inproceedings{BodlaenderF96, +author = {Hans L. Bodlaender and Babette de Fluiter}, +title = {Parallel Algorithms for Series Parallel Graphs}, +editor = {Joseph Diaz and Maria Serna}, +booktitle = esa96, year = 1996, publisher = lncs1136, pages = {277-289}} + +@inproceedings{BodlaenderF96a, +author = {Hans L. Bodlaender and Babette de Fluiter}, +title = {Reduction algorithms for constructing solutions in graphs with small treewidth}, +editor = {Jin-Yi Cai and Chak Kuen Wong}, +booktitle = cocoon96, publisher = lncs1090, year = 1996, pages = {199-208}} + +@article{BodlaenderF96b, +author = {Hans L. Bodlaender and Babette de Fluiter}, +title = {On intervalizing $k$-colored graphs for {DNA} physical mapping}, +journal = dam, volume = 71, year = 1996, pages = {55-77}} + +@inproceedings{BodlaenderFE96, +author = {Hans L. Bodlaender and Michael R. Fellows and Patricia A. Evans}, +title = {Finite-State Computability of Annotations of Strings and Trees}, +editor = {Daniel S. Hirshberg and Eugene W. Myers}, +booktitle = {Proceedings of the 7th Annual Symposium on Combinatorial Pattern Matching, CPM'96}, +publisher = lncs1075, year = 1996, pages = {384-391}} + +@article{BodlaenderK96, +author = {Hans L. Bodlaender and Ton Kloks}, +title = {Efficient and constructive algorithms for the pathwidth and treewidth of graphs}, +journal = ja, volume = 21, year = 1996, pages = {358-402}} + +%Bodlaender 1997 + +@inproceedings{Bodlaender97, +author = {Hans L. Bodlaender}, +title = {Treewidth: Algorithmic Techniques and Results}, +editor = {Igor Privara and Peter Ruzicka}, +booktitle = mfcs97, publisher = lncs1295, year = 1997, pages = {19-36}} + +@article{BodlaenderE97, +author = {Hans L. Bodlaender and Joost Engelfriet}, +title = {Domino treewidth}, +journal = ja, volume = 24, pages = {94-123}, year = 1997} + +@techreport{BodlaenderF97, +author = {Hans L. Bodlaender and Babette de Fluiter}, +title = {Parallel Algorithms for Series Parallel Graphs}, +institution = {Dept. of Computer Science, Utrecht University}, +year = 1997, number = {UU-CS-1997-21}, address = {Utrecht, The Netherlands}} + +@techreport{BodlaenderF97a, +author = {Babette de Fluiter and Hans L. Bodlaender}, +title = {Parallel algorithms for graphs of treewidth two}, +institution = {Dept. of Computer Science, Utrecht University}, +year = 1997, number = {UU-CS-1997-23}, address = {Utrecht, The Netherlands}} + +@inproceedings{BodlaenderT97, +author = {Hans L. Bodlaender and Dimitrios M. Thilikos}, +title = {Constructive Linear Time Algorithms for Branchwidth}, +editor = {Pierpaolo Degano and Roberto Gorrieri and Alberto Marchetti-Spaccamela}, +booktitle = icalp97, publisher = lncs1256, year = 1997, pages = {627-637}} + +@article{BodlaenderT97a, +author = {Hans L. Bodlaender and Dimitrios M. Thilikos}, +title = {Treewidth for graphs with small chordality}, +journal = dam, volume = 79, year = 1997, pages = {45-61}} + +@article{BodlaenderTTL97, +author = {Hans L. Bodlaender and Jan van Leeuwen and Richard Tan and Dimitrios Thilikos}, +title = {On interval routing schemes and treewidth}, +journal = ic2, volume = 139, number = 1, year = 1997, pages={92-109}} + +%Bodlaender 1998 + +@article{Bodlaender98, +author = {Hans L. Bodlaender}, +title = {A partial $k$-arboretum of graphs with bounded treewidth}, +journal = tcs, volume = 209, year = 1998, pages = {1-45}} + +@article{BodlaenderDJKKMT98, +author = {Hans L. Bodlaender and J. S. Deogun and K. Kansen and Ton Kloks and Dieter Kratsch and Haiko M{\"u}ller and Z. Tuza}, +title = {Rankings of graphs}, +journal = sjdm, volume = 11, year = 1998, pages = {168-181}} + +@inproceedings{BodlaenderGT98, +author = {Hans Bodlaender and Jens Gustedt and Telle, Jan Arne}, +title = {Linear-time register allocation for a fixed number of registers}, +booktitle = soda98, pages = {574--583}, +publisher = {ACM}, +year = {1998}} + +@article{BodlaenderH98, +author = {Hans L. Bodlaender and Torben Hagerup}, +title = {Parallel algorithms with optimal speedup for bounded treewidth}, +journal = comp, volume = 27, year = 1998, pages = {1725-1746}} + +@article{BodlaenderKKM98, +author = {Hans L. Bodlaender and Ton Kloks and Dieter Kratsch and Haiko Mueller}, +title = {Treewidth and minimum fill-in on $d$-trapezoid graphs}, +journal = jgaa, volume = 2, number = 5, year = 1998, pages = {1-23}} + +%Bodlaender 1999 + +@article{BodlaenderT99, +author = {Hans L. Bodlaender and Dimitrios M. Thilikos}, +title = {Graphs with branchwidth at most three}, +journal = ja, volume = 32, year = 1999, pages = {167-194}} + +%Bodlaender 2000 + +@article{BodlaenderFHWW00, +author = {Hans L. Bodlaender and Michael R. Fellows and Michael T. Hallett and H. Todd Wareham and Tandy J. Warnow}, +title = {The hardness of perfect phylogeny, feasible register assignment and other problems on thin colored graphs}, +journal = tcs, volume = 244, year = 2000, pages = {167-188}} + +%Bodlaender 2001 + +@article{BodlaendervA01, +author = {Hans L. Bodlaender and Babette van Antwerpen-de Fluiter}, +title = {Parallel algorithms for series parallel graphs and graphs with treewidth two}, +journal = alg, volume = 29, year = 2001, pages = {543-559}} + +@article{BodlaendervA01a, +author = {Hans L. Bodlaender and Babette van Antwerpen-de Fluiter}, +title = {Reduction algorithms for graphs of small treewidth}, +journal = ic2, volume = 167, year = 2001, pages = {86-119}} + +@inproceedings{BodlaenderEG01, +author = {Hans L. Bodlaender and Eijkhof, Frank {v}an {d}en and Linda C. van der Gaag}, +title = {On the complexity of the {MPA} problem in probabilistic networks}, +editor = {Frank van Harmelen}, +booktitle = {Proceedings of the 15th European Conference on Artificial Intelligence, ECAI 2001}, +publisher = {IOS Press}, address = {Amsterdam}, pages = {675-679}, +year = 2002} + +@inproceedings{BodlaenderKEG01, +author = {Hans L. Bodlaender and Arie M. C. A. Koster and Eijkhof, Frank {v}an {d}en and Linda C. van der Gaag}, +title = {Pre-processing for triangulation of probabilistic networks}, +editor = {Jack S. Breese and Daphne Koller}, +booktitle = uai01, publisher = {Morgan Kaufmann}, year = 2001, pages = {32-39}} + +%Bodlaender 2002 + +@inproceedings{BodlaenderEG02, +author = {Hans L. Bodlaender and Frank van den Eijkhof and Linda C. van der Gaag}, +title = {On the complexity of the {MPA} problem in probabilistic networks}, +editor = {Frank van Harmelen}, +booktitle = ecai2002, publisher = {IOS Press}, year = 2002, pages = {675-679}} + +@techreport{BodlaenderFT02, +author = {Hans L. Bodlaender and Michael R. Fellows and Dimitrios M. Thilikos}, +title = {Derivation of algorithms for cutwidth and related graph layout problems}, +type= {Technical Report}, +year = 2002, number = {UU-CS-2002-032}, +institution = {Institute of Information and Computing Sciences, Utrecht University}, +address = {Utrecht, The Netherlands}} + +@article{BodlaenderF02, +author = {Hans L. Bodlaender and Fedor V. Fomin}, +title = {Approximation of pathwidth of outerplanar graphs}, +journal = ja, volume = 43, year = 2002, pages = {190-200}} + +%Bodlaender 2003 + +@article{Bodlaender2003, +author = {Hans L. Bodlaender}, +title = {Necessary edges in $k$-chordalizations of graphs}, +journal = jco, volume = 7, year = 2003, pages = {283-290}} + +@article{BodlaenderR03, +author = {Hans L. Bodlaender and Udi Rotics}, +title = {Computing the treewidth and the minimum fill-in with the modular decomposition}, +journal = alg, volume = 36, year = 2003, pages = {375-408}} + +%Bodlaender 2004 + +@inproceedings{BodlaenderK04, +author = {Hans L. Bodlaender and Arie M. C. A. Koster}, +title = {On the {M}aximum {C}ardinality {S}earch lower bound for treewidth}, +editor = {J. Hromkovi\u{c} and M. Nagl and B. Westfechtel}, +booktitle = wg04, year = 2004, pages = {81-92}, publisher = lncs3353} + +@misc{BodlaenderK04a, +author = {Hans L. Bodlaender and Arie M. C. A. Koster}, +note = {Work in progress}, +year = 2004} + +@inproceedings{BodlaenderKW04, +author = {Hans L. Bodlaender and Arie M. C. A. Koster and Thomas Wolle}, +title = {Contraction and treewidth lower bounds}, +editor = {Susanne Albers and Tomasz Radzik}, +booktitle = esa04, year = 2004, pages = {628-639}, publisher = lncs3221} + +@article{BodlaenderKTvL04, +author = {Hans L. Bodlaender and Ton Kloks and Richard Tan and Jan {van Leeuwen}}, +title = {Approximations for $\lambda$-colorings of graphs}, +journal = tcj, volume = 47, year = 2004, pages = {193-204}} + +@techreport{BodlaenderKW2004vol, +author = {Hans L. Bodlaender and Arie M. C. A. Koster and Thomas Wolle}, +title = {Contraction and Treewidth Lower Bounds}, +institution = {Dept. of Computer Science, Utrecht University}, +year = 2004, +address = {Utrecht, The Netherlands}, +number = {UU-CS-2004-34} +} + +@techreport{BodlaenderW04, +author = {Hans L. Bodlaender and Thomas Wolle}, +title = {Contraction Degeneracy on Cographs}, +institution = {Institute for Information and Computing Sciences, Utrecht University}, +address = {Utrecht, The Netherlands}, +year = 2004, +number = {UU-CS-2004-031}} + +%Bodlaender 2005 + +@inproceedings{Bodlaender05, +author = {Hans L. Bodlaender}, +title = {Discovering treewidth}, +editor = {Peter Vojt\'{a}\u{s} and M\'{a}ria Bielikov\'{a} and Bernadette Charron-Bost}, +booktitle = sofsem05, year = 2005, publisher = lncs3381, pages = {1-16}} + +@misc{Bodlaender05a, +author = {Hans L. Bodlaender}, +year = 2005, +note = {Work in progress}} + +@article{BodlaenderF05, +author = {Hans L. Bodlaender and Fedor V. Fomin}, +title = {Tree decompositions with small cost}, +journal = dam, volume = 145, year = 2004, pages = {143-154}} + +@article{BodlaenderF05a, +author = {Hans L. Bodlaender and Fedor V. Fomin}, +title = {Equitable colorings of bounded treewidth graphs}, +journal = tcs, volume = 349, year = 2005, pages = {22-30}} + +@inproceedings{BodlaenderGK05, +author = {Hans L. Bodlaender and Alexander Grigoriev and Arie M. C. A. Koster}, +title = {Treewidth Lower Bounds with Brambles}, +editor = {G. S. Brodal and S. Leonardi}, +booktitle = esa05, year = 2005, pages = {391--402}, publisher = lncs3669} + +@article{BodlaenderKE05, +author = {Hans L. Bodlaender and Arie M. C. A. Koster and Eijkhof, Frank {v}an {d}en}, +title = {Pre-processing rules for triangulation of probabilistic networks}, +journal = {Computational Intelligence}, year = 2005, volume = 21, number = 3, pages = {286-305}} + +@unpublished{BodlaenderW05, +author = {Hans L. Bodlaender and Mark Weyer}, +title = {Convex and connected recolourings of trees and graphs of small treewidth}, +note = {Unpublished manuscript}, year = 2005} + +@article{BodlaenderKW05, +author = {Hans L. Bodlaender and Arie M. C. A. Koster and Thomas Wolle}, +title = {Contraction and treewidth lower bounds}, +journal = jgaa, volume = 10, year = 2006, pages = {5-49}} + +%Bodlaender 2006 + +@techreport{Bodlaender06, +author = {Hans L. Bodlaender}, +title = {A cubic kernel for Feedback Vertex Set}, +institution = {Department of Information and Computing Sciences, Utrecht University}, +address = {Utrecht, The Netherlands}, +year = 2006, +number = {UU-CS-2006-042}} + +@inproceedings{Bodlaender06a, +author = {Hans L. Bodlaender}, +title = {Treewidth: Characterizations, Applications, and Computations}, +editor = {Fedor V. Fomin}, +booktitle = wg06, year = 2006, pages = {1 - 14}, publisher = lncs4271} + +@techreport{BodlaenderCCFTM06, +author = {Hans L. Bodlaender and Leizhen Cai and Jianer Chen and Michael R. Fellows and Jan Arne Telle and D\'{a}niel Marx}, +title = {Open Problems in Parameterized and Exact Computation - {IWPEC} 2006}, +institution = {Department of Information and Computing Sciences, Utrecht University}, +address = {Utrecht, The Netherlands}, +year = 2006, +number = {UU-CS-2006-052}} + +@inproceedings{BodlaenderFKKT06, +author = {Hans L. Bodlaender and Fedor V. Fomin and Arie M. C. A. Koster and Dieter Kratsch and Dimitrios M. Thilikos}, +title = {On exact algorithms for treewidth}, +editor = {Y. Azar and T. Erlebach}, +booktitle = esa06, publisher = lncs4168, year = 2006, pages = {672-683}} + +@techreport{BodlaenderFKKT06a, +author = {Hans L. Bodlaender and Fedor V. Fomin and Arie M. C. A. Koster and +Dieter Kratsch and Dimitrios M. Thilikos}, +title = {On exact algorithms for treewidth}, +type = {Technical Report}, +institution = {Department of Information and Computing Sciences, Utrecht University}, +address = {Utrecht, the Netherlands}, +year = 2006, +number = {UU-CS-2006-032}} + +@unpublished{BodlaenderK06, +author = {Hans L. Bodlaender and Arie M. C. A. Koster}, +title = {Treewidth Computations {I}. {U}pper Bounds}, +year = 2008, +note = {http://www.cs.uu.nl/research/techreps/UU-CS-2008-032.html. To appear in Information and Computation}} + +@unpublished{BodlaenderK06a, +author = {Hans L. Bodlaender and Arie M. C. A. Koster}, +title = {Treewidth Computations {II}. {L}ower Bounds}, +year = 2009, +note = {Paper in preparation}} + +@unpublished{BodlaenderK06b, +author = {Hans L. Bodlaender and Arie M. C. A. Koster}, +title = {Treewidth Computations {III}. {E}xact Algorithms and Preprocessing}, +note = {Paper in preparation}, +year = 2010} + +@article{BodlaenderK06c, +author = {Hans L. Bodlaender and Arie M. C. A. Koster}, +title = {Safe separators for treewidth}, +journal = dm, volume = 306, year = 2006, pages = {337-350}} + +@article{BodlaenderWK06, +author = {Hans L. Bodlaender and Thomas Wolle and Arie M. C. A. Koster}, +title = {Contraction and treewidth lower bounds}, +journal = jgaa, volume = 10, year = 2006, pages = {5-49}} + +%Bodlaender 2007 + +@inproceedings{Bodlaender07, +author = {Hans L. Bodlaender}, +title = {A cubic kernel for feedback vertex set}, +editor = {W. Thomas and P. Well}, +booktitle = stacs07, publisher = lncs4393, year = 2007, pages = {320-331}} + +@inproceedings{Bodlaender07a, +author = {Hans L. Bodlaender}, +title = {Treewidth: {S}tructure and Algorithms}, +editor = {Giuseppe Prencipe and Shmuel Zaks}, +booktitle = {Proceedings of the 14th International Colloquium on Structural Information and +Communication Complexity, SIROCCO 2007}, +publisher = lncs4474, year = 2007, pages = {11-25}} + +@inproceedings{BodlaenderFLRRW07, +author = {Hans L. Bodlaender and Michael R. Fellows and Michael Langston and Mark Ragan and Frances Rosamond and Mark Weyer}, +title = {Quadratic kernelization for convex recoloring of trees}, +editor = {G. Lin}, +booktitle = cocoon07, publisher = lncs4598, year = 2007, pages = {86-96}} + +@article{BodlaenderK07, +author = {Hans L. Bodlaender and Arie M. C. A. Koster}, +title = {On the {M}aximum {C}ardinality {S}earch lower bound for treewidth}, +journal = dam, volume = 155, year = 2007, number = 11, pages = {1348-1372}} + +%Bodlaender 2008 + +@inproceedings{BodlaenderDFH08, +author = {Hans L. Bodlaender and Rodney G. Downey and Michael R. Fellows and Danny Hermelin}, +editor = {Luca Aceto and Ivan Damg{\aa}rd and Leslie Ann Goldberg and +Magn\'{u}s M. Halld\'{o}rsson and Anna Ing\'{o}lfsd\'{o}ttir and Igor Walukuewics}, +title = {On Problems Without Polynomial Kernels (Extended Abstract)}, +booktitle = icalp08-1, pages = {563-574}, year = 2008, publisher = lncs5125} + +@inproceedings{BodlaenderFHMPR08, +author = {Hans L. Bodlaender and Michael R. Fellows and Pinar Heggernes +and Federico Mancini and Charis Papadopoulos and Frances A. Rosamond}, +title = {Clustering with partial information}, +editor = {Edward Ochmanski and Jerzy Tyszkiewicz}, +booktitle = mfcs08, publisher = lncs5162, pages = {144-155}, year = 2008} + +@inproceedings{BodlaenderGGH08, +author = {Hans L. Bodlaender and Alexander Grigoriev and Nadejda V. Grigorieva and Albert Hendriks}, +title = {The Valve Location Problem in Simple Network Topologies}, +editor = {Hajo Broersma and Thomas Erlebach and Tom Friedetzky and Dani\"{e}l Paulusma}, +booktitle = wg08, publisher = lncs5344, year = 2008, pages = {55-65}} + +@article{BodlaenderGK08, +author = {Hans L. Bodlaender and Alexander Grigoriev and Arie M. C. A. Koster}, +title = {Treewidth lower bounds with brambles}, +journal = alg, volume = 51, year = 2008, pages = {81-98}} + +@inproceedings{BodlaenderHV08, +author = {Hans L. Bodlaender and Pinar Heggernes and Yngve Villanger}, +title = {Faster parameterized algorithms for minimum fill-in}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {282-293}} + +@article{BodlaenderK08, +author = {Hans L. Bodlaender and Arie M. C. A. Koster}, +title = {Combinatorial optimization on graphs of bounded treewidth}, +journal = tcj, volume = 51, number = 3, year = 2008, pages = {255-269}} + +@inproceedings{BodlaenderP08, +author = {Hans L. Bodlaender and Eelko Penninkx}, +title = {A linear kernel for planar feedback vertex set}, +editor = {Martin Grohe and Rolf Niedermeier}, +booktitle = iwpec08, year = 2008, pages = {160-171}, publisher = lncs5018} + +@inproceedings{BodlaenderPT08, +author = {Hans L. Bodlaender and Eelko Penninkx and Richard B. Tan}, +title = {A linear kernel for the $k$-disjoint cycle problem on planar graphs}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {294-305}} + +@techreport{BodlaenderTDL08, +author = {Hans L. Bodlaender and Richard B. Tan and Thomas C. van Dijk and Jan van Leeuwen}, +title = {Integer Maximum Flow in Wireless Networks with Energy Constraint}, +number = {UU-CS-2008-005}, +institution = {Department of Information and Computing Sciences, Utrecht University}, +year = 2008, address = {Utrecht, The Netherlands}} + +@techreport{BodlaenderTY08, +author = {Hans L. Bodlaender and St\'{e}phan Thomass\'{e} and Anders Yeo}, +title = {Analysis of Data Reduction: Transformations give evidence for non-existence of polynomial kernels}, +institution = {Department of Information and Computer Sciences, Utrecht University}, +address = {Utrecht, the Netherlands}, +year = 2008, +number = {UU-CS-2008-030}} + +%Bodlaender 2009 + +@unpublished{Bodlaender09, +author = {Hans L. Bodlaender}, +title = {Kernelization: New upper and lower bound techniques}, +year = 2009, +note = {To appear in Proceedings IWPEC 2009}} + +@article{BodlaenderDFH09, +author = {Hans L. Bodlaender and Rodney G. Downey and Michael R. Fellows and Danny Hermelin}, +title = {On problems without polynomial kernels}, +journal = jcss, volume = 75, year = 2009, pages = {423-434}} + +@unpublished{BodlaenderFLPST09, +author = {Hans L. Bodlaender and Fedor V. Fomin and Daniel Lokshtanov and Eelko Penninkx and Saket Saurabh and Dimitrios M. Thilikos}, +title = {({M}eta) Kernelization}, +year = 2009, +note = {To appear in Proceedings FOCS 2009}} + +@techreport{BodlaenderFLPST09a, +author = {Hans L. Bodlaender and Fedor V. Fomin and Daniel Lokshtanov and Eelko Penninkx and Saket Saurabh and Dimitrios M. Thilikos}, +title = {({M}eta) Kernelization}, +institution = {Department of Information and Computer Sciences, Utrecht University}, +address = {Utrecht, the Netherlands}, +year = 2009, +number = {UU-CS-2009-012}} + +@techreport{BodlaenderKKTV09, +author = {Hans L. Bodlaender and Fedor V. Fomin and Arie M. C. A. Koster and Dieter Kratsch and Dimitrios M. Thilikos}, +title = {A note on exact algorithms for vertex ordering problems on graphs}, +institution = {Department of Information and Computer Sciences, Utrecht University}, +address = {Utrecht, the Netherlands}, +year = 2009, +number = {UU-CS-2009-???}} + +@unpublished{BodlaenderLP09, +author = {Hans L. Bodlaender and Daniel Lokshtanov and Eelko Penninkx}, +title = {Planar Capacitated Dominating Set is {$W[1]$}-hard}, +year = 2009, +note = {In Proceedings IWPEC 2009}} + +@inproceedings{BodlaenderTY09, +author = {Hans L. Bodlaender and St\'{e}phan Thomass\'{e} and Anders Yeo}, +title = {Kernel bounds for Disjoint Cycles and Disjoint Paths}, +editor = {Amos Fiat and Peter Sanders}, +booktitle = esa09, publisher = lncs5757, year = 2009, pages = {635-646}} + +%Bodlaender 2010 + +@article{BodlaendervD10, +author = {Hans L. Bodlaender and Thomas C. van Dijk}, +title = {A cubic kernel for feedback vertex set and loop cutset}, +journal = tocs, volume = 46, year = 2010, pages = {566-597}} + +@article{BodlaenderK10, +author = {Hans L. Bodlaender and Arie M. C. A. Koster}, +title = {Treewidth Computations {I}. {U}pper Bounds}, +journal = ic2, volume = 208, year = 2010, pages = {259-275}} + +@article{BodlaenderFHMPR10, +author = {Hans L. Bodlaender and Michael R. Fellows and Pinar Heggernes and Federico Mancini and Charis Papadopoulos and Frances Rosamond}, +title = {Clustering with partial information}, +journal = tcs, volume = 411, year = 2010, pages = {1202-1211}} + +%Boh + +@article{BohmeKMM09, +author = {Thomas B\"{o}hme and Ken-ichi Kawarabayashi and John Maharry and Bojan Mohar}, +title = {Linear connectivity forces large complete bipartite minors}, +journal = jctb, volume = 99, year = 2009, pages = {557-582}} + +@article{BohraCR06, +author = {Ankur Bohra and L. Sunil Chandran and J. Krishnam Raju}, +title = {Boxicity of series-parallel graphs}, +journal = dm, volume = 306, year = 2006, pages = {2219-2221}} + +%Bol + +@book{Bollobas78, +author = {B. Bollob\'{a}s}, +title = {Extremal Graph Theory}, +publisher = {Academic Press}, +address = {London}, +year = 1978 +} + +@book{Bollobas85, +author = {B. Bollob\'{a}s}, +title = {Random Graphs}, +address = {London}, +publisher = {Academic Press}, +year = 1985 +} + +@book{Bollobas98, +author = {B\'{e}la Bollob\'{a}s}, +title = {Modern Graph Theory}, +publisher = {Graduate Texts in Mathematics, Springer}, +address = {New York}, +year = 1998} + +%Bon + +%Bond + +@book{BondyM76, +author = {J. A. Bondy and U. S. R. Murty}, +title = {Graph Theory with Applications}, +publisher = {American Elsevier, MacMillan}, +address = {New York, London}, +year = 1976 } + +%Bone + +@unpublished{BonetB93, +author = {Maria Luisa Bonet and Samuel R. Buss}, +title = {The Serial Transitive Closure Problem for Trees}, +note = {Manuscript}, +year = 1993} + +%Bons + +@inproceedings{BonsmaBW03, +author = {P. Bonsma and T. Brueggemann and G. Woeginger}, +title = {A faster {FPT} algorithm for finding spanning trees with many leaves}, +booktitle = mfcs03, publisher = lncs2747, year = 2003, pages = {259-268}} + +@inproceedings{BonsmaZ08, +author = {Paul S. Bonsma and Florian Zickfeld}, +title = {Spanning trees with many leaves in graphs without diamonds and blossoms}, +editor = {Eduardo Sany Laber and Claudson F. Bornstein and Loana Tito Nogueira and Luerbio Faria}, +booktitle = latin08, year = 2008, publisher = lncs4957, pages = {531-543}} + +%Bonu + +@article{BonucelliB79, +author = {M. A. Bonucelli and D. P. Bovet}, +title = {Minimum node disjoint path covering for circular-arc graphs}, +journal = ipl, volume = 8, year = 1979, pages = {159-161}} + +@article{Bonuccelli85, +author = {M. A. Bonuccelli}, +title = {Dominating sets and domatic number of circular-arc graphs}, +journal = dam, volume = 12, year = 1985, pages = {203-213}} + +%Boo + +%Booth 1976 + +@article{BoothL76, +author = {Kellogg S. Booth and George S. Lueker}, +title = {Testing for the consecutive ones property, interval graphs, and graph planarity using {PQ}-tree algorithms}, +journal = jcss, volume = 13, year = 1976, pages = {335-379}} + +%Booth 1982 + +@article{BoothJ82, +author = {Kellogg S. Booth and J. H. Johnson}, +title = {Dominating sets in chordal graphs}, +journal = siamjc, volume = 11, year = 1982, pages = {191-199}} + +%Booth 1993 + +@article{BoothT93, +author = {H. Booth and R. E. Tarjan}, +title = {Finding the minimum-cost maximum flow in a series parallel network}, +journal = ja, volume = 15, year = 1993, pages = {416-446}} + +%Booth 1994 + +@techreport{BoothGLR94, +author = {H. Booth and R. Govindran and M. Langston and S. Ramachandramurthi}, +title = {Sequential and Parallel Algorithms for {$K_4$} Immersion Testing}, +institution = {Department of Computer Science, University of Tennessee}, +address = {Knoxville, Tennessee, USA}, +month = {2}, year = 1994} + +%Booth 1999 + +@article{BoothGLR99, +author = {Heather Booth and Rajeev Govindran and Michael A. Langston and Siddharthan Ramachandramurthi}, +title = {Fast algorithms for {$K_4$} immersion testing}, +journal = ja, volume = 30, year = 1999, pages = {344-378}} + +%Bor + +%Borg + +@book{Borger85, +author = {E. B\"{o}rger}, +title = {Berechenbarkeit, Komplexit\"{a}t, Logik}, +publisher = {Vieweg-Verlag}, +address = {Wiesbaden}, +year = 1985} + +%Bori + +%Borie 1988 + +@phdthesis{Borie88, +author = {Richard B. Borie}, +title = {Recursively Constructed Graph Families}, +school = {School of Information and Computer Science, Georgia Institute of Technology}, +year = 1988 } + +@unpublished{BoriePT88, +author = {Richard B. Borie and R. Gary Parker and Craig A. Tovey}, +title = {Unambiguous Factorization of Recursive Graph Classes}, +year = 1988, note = {Manuscript}} + +%Borie 1991 + +@article{BoriePT91, +author = {Richard B. Borie and R. Gary Parker and Craig A. Tovey}, +title = {Deterministic decomposition of recursive graph classes}, +journal = sjdm, volume = 4, year = 1991, pages = {481 - 501}} + +%Borie 1992 + +@article{BoriePT92, +author = {Richard B. Borie and R. Gary Parker and Craig A. Tovey}, +title = {Automatic generation of linear-time algorithms from predicate +calculus descriptions of problems on recursively constructed graph families}, +journal = alg, volume = 7, year = 1992, pages = {555-581}} + +%Borie 1993 + +@article{BorieG93, +author = {Richard Borie and Arobinda Gupta}, +title = {Balanced decompositions for partial $k$-trees}, +journal = cn, volume = 98, year = 1993, pages = {33-38}} + +@unpublished{BorieG93a, +author = {Richard Borie and Arobinda Gupta}, +title = {Balanced $2k$-Terminal Tree Decompositions for $k$-Terminal Recursive Graph Classes}, +year = 1993, note = {Manuscript}} + +%Borie 1995 + +@article{Borie95, +author = {Richard B. Borie}, +title = {Generation of polynomial-time algorithms for some optimization problems on tree-decomposable graphs}, +journal = alg, volume = 14, year = 1995, pages = {123-137}} + +@article{BoriePT08, +author = {R. B. Borie and R. G. Parker and C. A. Tovey}, +title = {Solving problems on recursively constructed graphs}, +journal = acmcs, volume = 41, year = 2008, number = 4} + +%Born + +@article{BornsteinV04, +author = {Claudson F. Bornstein and Santosh Vempala}, +title = {Flow metrics}, +journal = tcs, volume = 321, year = 2004, pages = {13-24}} + +%Boro + +@article{BorowieckiS07, +author = {M. Borowiecki and E. Sidorowicz}, +title = {Generalised game colouring of graphs}, +journal = dm, volume = 307, year = 2007, pages = {1225-1231}} + +%Bou + +%Bouchitte 1998 + +@inproceedings{BouchitteT98, +author = {Vincent Bouchitt{\'{e}} and Ioan Todinca}, +title = {Minimal triangulations for graphs with ``few'' minimal separators}, +booktitle = esa98, publisher = lncs1461, pages = {344-355}, year = 1998} + +%Bouchitte 1999 + +@inproceedings{BouchitteT99, +author = {Vincent Bouchitt{\'{e}} and Ioan Todinca}, +title = {Treewidth and minimum fill-in of weakly triangulated graphs}, +booktitle = stacs99, publisher = lncs1563, pages = {197-208}, year = 1999} + +%Bouchitte 2000 + +@inproceedings{BouchitteT00, +author = {Vincent Bouchitt{\'{e}} and Ioan Todinca}, +title = {Listing all potential maximal cliques of a graph}, +editor = {H. Reidel and S. Tison}, +booktitle = stacs00, publisher = lncs1770, pages = {503-515}, year = 2000} + +%Bouchitte 2001 + +@article{BouchitteT01a, +author = {Vincent Bouchitt{\'{e}} and Ioan Todinca}, +title = {Treewidth and minimum fill-in: {G}rouping the minimal separators}, +journal = siamjc, volume = 31, year = 2001, pages = {212-232}} + +%Bouchitte 2002 + +@article{BouchitteT02, +author = {Vincent Bouchitt{\'{e}} and Ioan Todinca}, +title = {Listing all potential maximal cliques of a graph}, +journal = tcs, volume = 276, year = 2002, pages = {17-32}} + +%Bouchitte 2003 + +@article{BouchitteT03, +author = {Vincent Bouchitt{\'{e}} and Ioan Todinca}, +title = {Approximating the treewidth of {AT}-free graphs}, +journal = dam, volume = 131, pages = {11-37}, year = 2003} + +@article{BouchitteMT03, +author = {V. Bouchitt{\'{e}} and F. Mazoit and I. Todinca}, +title = {Chordal embeddings of planar graphs}, +journal = dm, volume = 273, year = 2003, pages = {85-102}} + +%Bouchitte 2004 + +@article{BouchitteKMT04, +author = {V. Bouchitt{\'{e}} and Dieter Kratsch and Haiko M\"{u}ller and Ioan Todinca}, +title = {On treewidth approximations}, +journal = dam, volume = 136, year = 2004, pages = {183-196}} + +%Bous + +@inproceedings{BousquetDTY09, +author = {Nicolas Bousquet and Jean Daligault and St\'{e}phan Thomass\'{e} and Anders Yeo}, +title = {A polynomial kernel for multicut in trees}, +editor = {Susanne Albers and Jean-Yves Marion}, +series = {Dagstuhl Seminar Proceedings}, +publisher = {Leibniz-Zentrum f\"{u}r Informatik}, +address = {Schloss Dagstuhl, Germany}, +volume = {09001}, +booktitle = stacs09, pages = {183-194}, year = 2009} + +%Boy + +@article{BoyarK87, +author = {J. Boyar and H. Karloff}, +title = {Coloring planar graphs in parallel}, +journal = ja, year = 1987, volume = 8, pages = {470-479}} + +%Br + +%Bra + +@techreport{Brandenburg88, +author = {Franz J. Brandenburg}, +title = {Nice Drawings of Graphs and of Trees are Computationally hard}, +number = {MIP 8820}, institution = {University Passau}, year = 1988 } + +%Brandstadt 1987 + +@article{Brandstadt87, +author = {Andreas Brandst\"{a}dt}, +title = {The computational complexity of feedback vertex set, {H}amiltonian circuit, dominating set, +{S}teiner tree, and bandwidth on special perfect graphs}, +journal = {J. Inf. Process. Cybern. EIK}, +year = 1987, pages = {471-477}, volume = 23 } + +@article{BrandstadtK87, +author = {Andreas Brandst\"{a}dt and Dieter Kratsch}, +title = {On domination problems for permutation and other graphs}, +journal = tcs, volume = 54, year = 1987, pages = {181-198}} + +%Brandstadt 1991 + +@article{Brandstadt91, +author = {Andreas Brandst\"{a}dt}, +title = {Classes of bipartite graphs related to chordal graphs}, +journal = dam, volume = 32, year = 1991, pages = {51-60}} + +@techreport{Brandstadt91a, +author = {Andreas Brandst\"{a}dt}, +title = {Special Graph Classes --- A Survey (preliminary version)}, +institution = {University of Duisburg}, +year = 1991} + +%Brandstadt 1993 + +@inproceedings{Brandstadt93, +author = {Andreas Brandst\"{a}dt}, +title = {On improved time bounds for permutation graph classes}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {1-10}} + +@techreport{BrandstadtDCV93, +author = {Andreas Brandst\"{a}dt and Feodor F. Dragan and Victor D. Chepoi and Vitaly I. Voloshin}, +title = {Dually chordal graphs}, +institution = {University of Duisburg}, +number = {SM-DU-225}, year = 1993} + +%Brandstadt 1999 + +@book{BrandstadtLS99, +author = {Andreas Brandst\"{a}dt and {Van Bang} Le and Jeremy P. Spinrad}, +title = {Graph Classes. {A} Survey}, +year = 1999, +series = {SIAM Monographs on Discrete Mathematics and Applications}, +publisher = {SIAM}, address = {Philadelphia, USA}} + +%Brandstadt 2002 + +@inproceedings{BrandstadtDL02, +author = {Andreas Brands\"{a}dt and Feodor F. Dragan and Ho\`{a}ng-Oanh Le and Raffaele Mosca}, +title = {New graph classes of bounded clique-width}, +editor = {Lud\u{e}k Ku\u{c}era}, +booktitle = wg02, publisher = lncs2573, year = 2002, pages = {57-67}} + +%Brandstadt 2003 + +@article{BrandstadtL03, +author = {Andreas Brands\"{a}dt and Vadim Lozin}, +title = {On the linear structure and clique-width of bipartite permutation graphs}, +journal = arscomb, year = 2003, volume = 67, pages = {273-281}} + +%Brandstadt 2004 + +@article{BrandstadtLM04, +author = {Andreas Brandst\"{a}dt and Ho\`{a}ng-Oanh Le and Raffaele Mosca}, +title = {Chordal co-gem-free and (${P_5}$,gem)-free graphs have bounded clique-width}, +journal = dam, volume = 145, year = 2004, pages = {232-241}} + +@article{BrandstadtDLL04, +author = {Andreas Brandst\"{a}dt and F. F. Dragan and Ho\`{a}ng-Oanh Le and V. B. Le}, +title = {Tree spanners on chordal graphs: complexity and algorithms}, +journal = tcs, volume = 310, year = 2004, pages = {329-354}} + +%Brandstadt 2006 + +@article{BrandstadtB06, +author = {Andreas Brandst\"{a}dt and Van Bang Le}, +title = {Structure and linear time recognition of 3-leaf powers}, +journal = ipl, volume = 98, year = 2006, pages = {133-138}} + +%Brandstadt 2008, + +@article{BrandstadtH08, +author = {Andreas Brandst\"{a}dt and Ch{\'{\i}}nh T. Ho\'{a}ng}, +title = {On clique separators, nearly chordal graphs, and the Maximum Weight Stable Set Problem}, +journal = tcs, volume = 389, year = 2008, pages = {295-306}} + +@article{BrandstadtH08a, +author = {Andreas Brandst\"{a}dt and Ch{\'{\i}}nh T. Ho\'{a}ng}, +title = {Maximum induced matchings for chordal graphs in linear time}, +journal = alg, volume = 52, year = 2008, pages = {440-447}} + +%Brandstadt 2009 + +@article{BrandstadtB09, +author = {Andreas Brandst\"{a}dt and Van {Bang Le}}, +title = {Simplicial powers of graphs}, +journal = tcs, volume = 410, year = 2009, pages = {5443-5454}} + +%Bre + +@inproceedings{BretscherCHP2003, +author = {Anna Bretscher and Derek Corneil and Michel Habib and Christophe Paul}, +title = {A simple linear time {LexBFS} cograph recognition algorithm}, +editor = {Hans L. Bodlaender}, +booktitle = wg03, publisher = lncs2880, year = 2003, pages = {119-130}} + +%Bri + +@article{BrinkmannKM01, +author = {Gunnar Brinkmann and Jack H. Koolen and V. Moulton}, +title = {On the hyperbolicity of chordal graphs}, +journal = {Annals of Combinatorics}, volume = 5, year = 2001, pages = {61-69}} + +%Bro + +%Broersma 1997 + +@inproceedings{BroersmaDK97a, +author = {H. Broersma and Elias Dahlhaus and Ton Kloks}, +title = {Algorithms for the treewidth and minimum fill-in of {HHD}-free graphs}, +editor = {Rolf H. M\"{o}hring}, +booktitle = wg97, publisher = lncs1335, pages = {109-117}, year = 1997} + +%Broersma 1998 + +@inproceedings{BroersmaKKM98, +author = {Hajo Broersma and Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {A generalization of {AT}-free graphs and a generic algorithm for solving treewidth, minimum fill-in, and vertex ranking}, +editor = {Juraj Hromkovic and Ondrej S\'{y}kora}, +booktitle = wg98, publisher = lncs1517, year = 1998, pages = {88-99}} + +%Broersma 1999 + +@article{BroersmaKKM99, +author = {Hajo Broersma and Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {Independent sets in asteroidal triple-free graphs}, +journal = sjdm, volume = 12, year = 1999, pages = {276-287}} + +%Broersma 2000 + +@article{BroersmaDK00, +author = {H. Broersma and Elias Dahlhaus and Ton Kloks}, +title = {A linear time algorithm for minimum fill in and tree width for distance hereditary graphs}, +journal = dam, volume = 99, year = 2000, pages = {367-400}} + +%Broersma 2002 + +@article{BroersmaKKM02, +author = {Hajo Broersma and Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {A generalization of {AT}-free graphs and a generic algorithm for solving triangulation problems}, +journal = alg, volume = 32, year = 2002, pages = {594-610}} + +%Broersma 2007 + +@article{BroersmaL07, +author = {Hajo Broersma and Xueliang Li}, +title = {On the complexity of dominating set problems related to the minimum all-ones problem}, +journal = tcs, volume = 385, year = 2007, pages = {60-70}} + +%Broersma 2009 + +@article{BroersmaJP09, +author = {Hajo Broersma and Matthew Johnson and Dani\"{e}l Paulusma}, +title = {Upper bounds and algorithms for parallel knock-out numbers}, +journal = tcs, volume = 410, year = 2009, pages = {1319-1327}} + +%Brown + +@article{BrownFL89, +author = {D. J. Brown and Michael R. Fellows and Michael A. Langston}, +title = {Polynomial-time self-reducibility: Theoretical motivations and practical results}, +journal = ijcm, volume = 31, year = 1989, pages = {1-9}} + +%Bru + +@article{BruglieriME04, +author = {Maurizio Bruglieri and Francesco Maffioli and Matthias Ehrgott}, +title = {Cardinality constrained minimum cut problems: complexity and algorithms}, +journal = dam, volume = 137, year = 2004, pages = {311-341}} + +@article{BruglieriEHM06, +author = {Maurizio Bruglieri and Matthias Ehrgott and Horst W. Hamacher and Francesco Maffioli}, +title = {An annotated bibliography of combinatorial optimization problems with fixed cardinality constraints}, +journal = dam, volume = 154, year = 2006, pages = {1344-1357}} + +@article{BrunoW70, +author = {John Bruno and Louis Weinberg}, +title = {A Constructive Graph-Theoretic Solution of the {S}hannon Switching Game}, +journal = ieeetct, volume = {CT-17}, year = 1970, pages = {74-81}} + +%Bry + +@inproceedings{BryantFKL87, +author = {R. L. Bryant and Michael R. Fellows and N. G. Kinnersley and Michael A. Langston}, +title = {On finding obstruction sets and polynomial-time algorithms for gate matrix layout}, +booktitle = {Proceedings of the 25th Allerton Conference on Communication, Control and Computing}, +year = 1987, pages = {397-398}} + +@article{BryantL06, +author = {David Bryant and Jens Lagergren}, +title = {Compatibility of unrooted phylogenetic trees is {FPT}}, +journal = tcs, volume = 351, year = 2006, pages = {296-302}} + +%Bu + +%Bub + +@article{BubeckB09, +author = {Uwe Bubeck and Hans {Kleine B\"{u}ning}}, +title = {A new {3-CNF} transformation by parallel-serial graphs}, +journal = ipl, volume = 109, year = 2009, pages = {376-379}} + +%Buc + +@article{Buchi60, +author = {J. R. B\"{u}chi}, +title = {Weak second order logic and finite automata}, +journal = {S. Math. Grundlagen Math.}, volume = 5, year = 1960, pages = {66-92}} + +%Bue + +@article{BuerM83, +author = {Hermann Buer and Rolf H. M{\"{o}}hring}, +title = {A fast algorithm for the decomposition of graphs and posets}, +journal = mor, volume = 8, number = 2, year = 1983, pages = {170-184}} + +%Bui + +@article{BuiXuanHLM09, +author = {B.-M. Bui-Xuan and M. Habib and V. Limouzy and F. {de Montgolfier}}, +title = {Algorithmic aspects of a general modular decomposition theory}, +journal = dam, volume = 157, year = 2009, pages = {1993-2009}} + +@article{BuiXuanTV10, +author = {Binh-Minh Bui-Xuan and Jan Arne Telle and Martin Vatshelle}, +title = {$H$-join decomposable graphs and algorithms with runtime single exponential in rankwidth}, +journal = dam, volume = 158, year = 2010, pages = {809-819}} + +%Bul + +@article{BultW08, +author = {Fokko J. {van de Bult} and Gerhard J. Woeginger}, +title = {The problem of the moody chess players}, +journal = ipl, volume = 108, pages = {336-337}, year = 2008} + +%Bun + +@article{Buneman74, +author = {P. Buneman}, +title = {A characterization of rigid circuit graphs}, +journal = dm, volume = 9, year = 1974, pages = {205-212}} + +%Bur + +@inproceedings{BurgstallerBS04, +author = {Bernd Burgstaller and Johann Blieberger and Bernhard Scholz}, +title = {On the Tree Width of {A}da Programs}, +booktitle = {Ada-Europe 2004}, year = 2004, pages = {78-90}} + +@article{Burke10, +author = {Edmund K. Burke and Jakub Mare\u{c}ek and Andrew J. Parkes and Hana Rudov\'{a}}, +title = {Decomposition, reformulation, and diving in university course timetabling}, +journal = cor, volume = 37, year = 2010, pages = {582-597}} + +@inproceedings{BurrageEFLMR06, +author = {Kevin Burrage and Vladimir Estivill-Castro and Michael R. Fellows and Michael A. Langston and Shev Mac +and Frances A. Rosamond}, +title = {The undirected feedback vertex set problem has a poly($k$) kernel}, +editor = {Hans L. Bodlaender and Michael A. Langston}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {192-202}} + +%Bus + +@book{BusackerS65, +author = {R. G. Busacker and U. S. R. Murty}, +title = {Finite Graphs and Networks: an Introduction with Applications}, +publisher = {McGraw-Hill}, address = {New York}, year = 1965 } + +@unpublished{BussFM89, +author = {S. R. Buss and Michael R. Fellows and Burkhard Monien}, +title = {Linear-Time Algorithms for Some Well-Known Fixed Parameter Problems}, +note = {Manuscript, Department of Computer Science, University of Idaho}, +year = 1989 } + +@article{BussG93, +author = {Jonathan F. Buss and Judy Goldsmith}, +title = {Nondeterminism within {P}}, +journal = siamjc, volume = 22, year = 1993, pages = {560-572}} + +%By + +%Byl + +@article{BylanderATJ91, +author = {T. Bylander and D. Allemang and M.C. Tanner and J.R. Josephson}, +title = {The computational complexity of abduction}, +journal = artint, volume = 49, pages = {25-60}, year = 1991} + +%Bys + +@article{Byskov04, +author = {Jesper Makholm Byskov}, +title = {Enumerating maximal independent sets with applications to graph coloring}, +journal = orl, year = 2004, pages = {547-556}, volume = 32} + +@phdthesis{Byskov04a, +author = {Jesper Makholm Byskov}, +title = {Exact Algorithms for Graph Colouring and Exact Satisfiability}, +type = {PhD thesis}, +school = {University of Aarhus}, +address = {Aarhus, Denmark}, +year = {August, 2005}} + +%C + +%Ca + +%Cai + +%Cai 1989 + +@unpublished{CaiC89, +author = {Leizhen Cai and Derek G. Corneil}, +title = {Cycle Double Covers of Line Graphs}, +year = 1989, note = {Manuscript}} + +@unpublished{CaiE89, +author = {Leizhen Cai and John A. Ellis}, +title = {Linear time algorithms for edge colouring line graphs of trees and of unicyclic graphs}, +year = 1989, note = {Manuscript}} + +@unpublished{CaiE89a, +author = {Leizhen Cai and John A. Ellis}, +title = {{NP}-completeness of edge coloring some restricted graphs}, +year = 1989, note = {Manuscript}} + +%Cai 1993 + +@techreport{CaiCDF93, +author = {L. Cai and J. Chen and Rodney G. Downey and Michael R. Fellows}, +title = {The parameterized complexity of short computations and factorizations}, +institution = {Department of Computer Science, University of Victoria}, +type = {Technical Report}, +year = 1993, month = {7}} + +%Cai 1996 + +@article{Cai96, +author = {Leizhen Cai}, +title = {Fixed-parameter tractability of graph modification problems for heriditary properties}, +journal = ipl, volume = 58, year = 1996, pages = {171-176}} + +%Cai 1997 + +@article{CaiC97, +author = {Liming Cai and Jianer Chen}, +title = {On Fixed-Parameter Tractability and Approximability of {NP} Optimization Problems}, +journal = jcss, volume = 54, year = 1997, pages = {465-474}} + +@article{CaiCDF97, +author = {L. Cai and J. Chen and R. G. Downey and M. R. Fellows}, +title = {Advice classes of parameterized tractability}, +journal = apal, volume = 84, year = 1997, pages = {119-138}} + +%Cai 2000 + +@unpublished{Cai00, +author = {Leizhen Cai}, +title = {The complexity of colouring parameterized graphs}, +year = 2000, note = {Manuscript}} + +%Cai 2001 + +@article{CaiZ01, +author = {Leizhen Cai and Xuding Zhu}, +title = {Game chromatic index of $k$-degenerate graphs}, +journal = jgt, volume = 36, pages = {144-155}, year = 2001} + +@article{CaiJ03, +author = {Leitzhen Cai and D. Juedes}, +title = {On the existence of subexponential parameterized algorithms}, +journal = jcss, volume = 67, year = 2003, pages = {789-807}} + +%Cai 2006 + +@unpublished{Cai06, +author = {Leizhen Cai}, +title = {Parameterized complexity of cardinality constrained optimization problems}, +note = {Manuscript}, +year = {2006}} + +@inproceedings{CaiCC06, +author = {Leizhen Cai and S. M. Chan and S. O. Chan}, +title = {Random separation: a new method for solving fixed-cardinality +optimization problems}, +editor = {Hans L. Bodlaender and Michael A. Langston}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {239-250}} + +%Cai 2009 + +@article{Cai09, +author = {Xuan Cai}, +title = {Linear kernelizations for restricted {3-Hitting Set} problems}, +journal = ipl, volume = 109, year = 2009, pages = {730-738}} + +%Cai 2010 + +@article{CaiH10, +author = {Liming Cai and Xiuzhen Huang}, +title = {Fixed-parameter approximation: Conceptual framework and approximability results}, +journal = alg, volume = 57, year = 2010, pages = {398-412}} + +%Cal + +@article{CalamoneriPP06, +author = {Tiziana Calamoneri and Andrzej Pelc and Rossella Petreschi}, +title = {Labeling trees with a condition at distance two}, +journal = dm, volume = 306, pages = {1534-1539}, year = 2006} + +%Can + +@inproceedings{CanoM94, +author = {A. Cano and S. Moral}, +title = {Heuristic algorithms for the triangulation of graphs}, +editor = {B. Bouchon-Meunier and R. R. Yager and I. A. Zadeh}, +booktitle = {Advances in Intelligent Computing, Selected Papers from the 5th +International Conference on Precessing and Management of Uncertainty in +Knowledge-Based Systems IPMU94}, +year = 1994, pages = {98-107}, +publisher = lncs945} + +%Car + +@article{CaragiannisFKP06, +author = {Ioannis Caragiannis and Aleksei V. Fishkin and +Christos Kaklamanis and Evi Papaioannou}, +title = {Randomized on-line algorithms and lower bounds for computing large +independent sets in disk graphs}, +journal = dam, volume = 155, pages = {119-136}, year = 2007} + +%Cas + +@article{CastelinoHS96, +author = {D. Castelino and S. Hurley and N. M. Stephens}, +title = {A tabu search algorithm for frequency assignment}, +journal = aor, volume = 63, pages = {301-319}, year = 1996} + +%Cat + +@inproceedings{CattellD94, +author = {Kevin Cattell and Michael J. Dinneen}, +title = {A characterization of graphs with vertex cover up to five}, +booktitle = {Proceedings International Workshop on Orders, Algorithms, and Applications, ORDAL'94}, +publisher = lncs831, year = 1994, pages = {86-99}} + +@article{CattellDF96, +author = {Kevin Cattell and Michael J. Dinneen and Michael R. Fellows}, +title = {A simple linear-time algorithm for finding path-decompositions of +small width}, +journal = ipl, volume = 57, year = 1996, pages = {197-204}} + +@inproceedings{CattellDF95, +author = {Kevin Cattell and Michael J. Dinneen and Michael R. Fellows}, +title = {Obstructions to Within a Few Vertices or Edges of Acyclic}, +editor = {Selim G. Akl and Frank K. H. A. Dehne and J\"{o}rg-R\"{u}diger Sack and Nicola Santoro}, +booktitle = wads95, pages = {415-427}, publisher = lncs955, year = 1995} + +@article{CattellDDFL00, +author = {Kevin Cattell and Michael J. Dinneen and Rodney G. Downey and +Michael R. Fellows and Michael A. Langston}, +title = {On computing graph minor obstruction sets}, +journal = tcs, volume = 233, year = 2000, pages = {107-127}} + +%Ce + +%Cer + +@article{CeraDGV07, +author = {M. Cera and A. Dianez and P. Garcia-Vazquez and J.C. Valenzuela}, +title = {Graphs without minor complete subgraphs}, +journal = dm, volume = 307, year = 2007, pages = {1276-1284}} + +%Ces + +@article{Cesati02, +author = {M. Cesati}, +title = {Perfect code is {$W[1]$}-complete}, +journal = ipl, volume = 81, year = 2002, pages = {163-168}} + +%Ch + +%Cha + +%Chan + +@inproceedings{ChanD06, +author = {Hei Chan and Adnan Darwiche}, +title = {On the robustness of most probable explanations}, +booktitle = uai06, year = 2006, pages = {63-71}, publisher = {AUAI Press}} + +@article{ChandraKS81, +author = {A. K. Chandra and D. C. Kozen and L. J. Stockmeyer}, +title = {Alternation}, +journal = jacm, volume = 28, pages = {114-133}, year = 1981 } + +@article{ChandranS03, +author = {L. {Sunil Chandran} and C. R. Subramanian}, +title = {A spectral lower bound for the treewidth of a graph and its consequences}, +journal = ipl, volume = 87, year = 2003, pages = {195-200}} + +@article{ChandranS05, +author = {L. {Sunil Chandran} and C. R. Subramanian}, +title = {Girth and treewidth}, +journal = jctb, volume = 93, year = 2005, pages = {23-32}} + +@article{ChandraG06, +author = {L. {Sunil Chandran} and Fabrizio Grandoni}, +title = {A linear time algorithm to list the minimal separators of chordal graphs}, +journal = dm, volume = 306, pages = {351-358}, year = 2006} + +@article{ChandranK06, +author = {L. {Sunil Chandran} and T. Kavitha}, +title = {The treewidth and pathwidth of hypercubes}, +journal = dm, volume = 306, pages = {359-365}, year = 2006} + +@article{ChandranS07, +author = {L. {Sunil Chandran} and Naveen Sivadasan}, +title = {Boxicity and treewidth}, +journal = jctb, volume = 97, pages = {733-744}, year = 2007} + +%Chandrasekharan 1980 + +@article{ChandrasekharanT80, +author = {R. Chandrasekharan and A. Tamir}, +title = {An {$O((n \log p)^2 )$ } Algorithm for the Continuous +$p$-Center Problem on a Tree}, +journal = sjadm, volume = 1, pages = {370-375}, year = 1980 } + +%Chandrasekharan 1982 + +@article{ChandrasekharanT82, +author = {R. Chandrasekharan and A. Tamir}, +title = {Polynomially Bounded Algorithms for Locating $p$-Centers on a +Tree}, +journal = mp, volume = 22, year = 1982, pages = {304-315}} + +%Chandrasekharan 1988 + +@article{ChandrasekharanI88, +author = {Narayanan Chandrasekharan and S. Sitharama Iyengar}, +title = {{NC} algorithms for recognizing chordal graphs and +$k$-Trees}, +journal = ietc, volume = 37, year = 1988, pages = {1178-1183}} + +@article{ChandrasekhasanLI88, +author = {Narayanan Chandrasekharan and R. Laskar and S. S. Iyengar}, +title = {Maximal clique separators of chordal graphs}, +journal = cn, volume = 62, year = 1988, pages = {203-215}} + +@inproceedings{ChandrasekharanH88, +author = {Narayanan Chandrasekharan and S. T. Hedetniemi}, +title = {Fast parallel algorithms for tree decomposing and parsing partial $k$-Trees}, +booktitle = {Proceedings of the 26th Annual Allerton Conference on Communication, Control, and Computing}, +year = 1988, +pages={283-292}, +address = {Urbana-Champaign, Illinois}} + +%Chandrasekharan 1989 + +@phdthesis{Chandrasekharan89, +author = {Narayanan Chandrasekharan}, +title = {Fast Parallel Algorithms and Enumeration Techniques for Partial $k$-Trees}, +school = {Clemson University}, +year = 1989} + +%Chandrasekharan 1990 + +@article{Chandrasekharan90a, +author = {Narayanan Chandrasekharan}, +title = {Isomorphism testing of $k$-trees is in {NC}, for fixed $k$}, +journal = ipl, volume = 34, year = 1990, pages = {283-287}} + +%Chang + +@article{ChangD87, +author = {K. Chang and D. Du}, +title = {Efficient algorithms for the layer assignment problem}, +journal = {IEEE Trans CAD}, volume = 6, year = 1987, pages = {67-78}} + +@article{ChangK96, +author = {G. J. Chang and D. Kuo}, +title = {The {$L(2,1)$}-labelling problem on graphs}, +journal = sjdm, volume = 9, year = 1996, pages = {309-316}} + +@article{Chang98, +author = {M.-S. Chang}, +title = {Efficient algorithms for the domination problems on interval and +circular arc-graphs}, +journal = siamjc, volume = 27, year = 1998, pages = {1671-1694}} + +@article{ChangKKLY00, +author = {G. J. Chang and W.-T. Ke and D. Kuo and D.D.-F. Liu and R. K. Yeh}, +title = {On {$L(d,1)$}-labelings of graphs}, +journal = dm, volume = 220, pages = {57-66}, year = 2000} + +@inproceedings{ChangT00, +author = {J. Chang and L. Tassiulas}, +title = {Fast Approximate Algorithms for Maximum Lifetime Routing +in Wireless Ad-hoc Networks}, +booktitle = {Proceedings Networking 2000}, year = 2000, +pages = {702-713}} + +@article{ChangL03, +author = {G. J. Chang and C. Lu}, +title = {Distance-two labelings of graphs}, +journal = ejcom, year = 2003, volume = 24, pages = {53-58}} + +@article{ChangT04, +author = {J. Chang and L. Tassiulas}, +title = {Maximum lifetime routing in wireless sensor networks}, +journal = {IEEE/ACM Transaction on Networking}, +volume = 12, number = 4, year = 2004, pages = {609-619}} + +%Chap + +@inproceedings{ChapelleMT09, +author = {Mathieu Chapelle and Fr{\'e}d{\'e}ric Mazoit and Ioan Todinca}, +title = {Constructing brambles}, +editor = {Rastislav Kr{\'a}lovic and Damian Niwinski}, +booktitle = mfcs09, year = 2009, publisher = lncs5734, pages = {223-234}} + +%Char + +@article{CharniakS94, +author = {Eugene Charniak and Solomon Eyal Shimony}, +title = {Cost-based abduction and {MAP} explanation}, +journal = ai, volume = 66, year = 1994, pages = {345-374}} + +%Chau + +@inproceedings{ChaudhuriZ95, +author = {Shiva Chaudhuri and Christos D. Zaroliagis}, +title = {Optimal parallel shortest paths in small treewidth digraphs}, +booktitle = esa95, +editor = {Paul Spirakis}, +publisher = lncs979, year = 1995, pages = {31-45}} + +@article{ChaudhuriZ98, +author = {Shiva Chaudhuri and Christos D. Zaroliagis}, +title = {Shortest paths in digraphs of small treewidth. {P}art {II}: {O}ptimal +parallel algorithms}, +journal = tcs, volume = 203, year = 1998, pages = {205-223}} + +@article{ChaudhuriZ00, +author = {Shiva Chaudhuri and Christos D. Zaroliagis}, +title = {Shortest paths in digraphs of small treewidth. {P}art {I}: +{S}equential Algorithms}, +journal = alg, volume = 27, year = 2000, pages = {212-226}} + + +@article{ChavezT98, +author = {J. D. Chavez and R. Trapp}, +title = {The cyclic cutwidth of trees}, +journal = dam, volume = 87, year = 1998, pages = {25-32}} + +%Che + +%Chek + +@article{ChekuriK05, +author = {C. Chekuri and S. Khanna}, +title = {A Polynomial Time Approximation Scheme for the Multiple +Knapsack Problem}, +journal = siamjc, volume = 35, number = 3, year = 2005, +pages = {713-728}} + + +%Chen 1988 + +@article{ChenKS88, +author = {G. H. Chen and M. T. Kuo and J. P. Sheu}, +title = {An optimal time algorithm for finding a maximum weight +independent set in a tree}, +journal = bit, year = 1988 } + +%Chen 1992 + +@inproceedings{ChenL92, +author = {Maw-Hwa Chen and Sing-Ling Lee}, +title = {Linear time algorithms for $k$-cutwidth problem}, +editor = {Toshihide Ibaraki and Yasuyoshi Inagaki and Kazuo Iwama and Takao Nishizeki and Masafumi Yamashita}, +booktitle = isaac92, year = 1992, publisher = lncs650, pages = {21-30}} + +%Chen 1993 + +@inproceedings{Chen93, +author = {J. Chen}, +title = {A linear time algorithm for isomorphism of graphs of bounded average genus}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {103-113}} + +%Chen 1995 + +@article{ChenMS95, +author = {Guantao Chen and Lisa R. Markus and R. H. Schelp}, +title = {Vertex Disjoint Cycles for Star Free Graphs}, +journal = {Australasian Journal of Combinatorics}, volume = 11, year = 1995, +pages = {157-167}} + +%Chen 1998 + +@article{Chen98, +author = {Z.-Z. Chen}, +title = {Efficient approximation schemes for maximization problems on +{$K_{3,3}$}-free or {$K_5$}-free graphs}, +journal = ja, volume = 26, year = 1998, pages = {166-187}} + +%Chen 2001 + +@article{Chen01, +author = {Z.-Z. Chen}, +title = {Approximation algorithms for independent sets in map graphs}, +journal = ja, volume = 41, pages = {20-40}, year = 2001} + +@inproceedings{ChenFJK01, +author = {Jianer Chen and Donald K. Friesen and Weijia Jia and Iyad Kanj}, +title = {Using nondeterminism to design deterministic algorithms}, +booktitle = fsttcs01, year = 2001, pages = {120-131}, publisher = lncs2245} + +@article{ChenKJ01, +author = {J. Chen and I. A. Kanj and W. Jia}, +title = {Vertex cover: Further observations and further improvements}, +journal = ja, volume = 41, year = 2001, pages = {280-301}} + +%Chen 2003 + +@inproceedings{ChenKPSX03, +author = {Jianer Chen and Iyad A. Kanj and Ljubomir Perkovic and Eric Sedgwick and Ge Xia}, +title = {Genus characterizes the complexity of graph problems: Some tight results}, +editor = {Jos Baeten and Jan Karel Lenstra and Joachim Parrow and Gerhard J. Woeginger}, +booktitle = icalp03, publisher = lncs2719, year = 2003, pages = {845-856}} + +%Chen 2004 + +@inproceedings{Chen04, +author = {Hubie Chen}, +editor = {Ramon L\'{o}pez {de M\'{a}ntaras} and Lorenza Saitta}, +title = {Quantified Constraint Satisfaction and Bounded Treewidth}, +booktitle = ecai2004, pages = {161-165}, year = 2004} + +@inproceedings{ChenCFHJKX04, +author = {J. Chen and B. Chor and M. Fellows and X. Huang and D. Juedes and I. Kanj and G. Xia}, +title= {Tight Lower Bounds for Certain Parameterized {N}{P}-hard Problems}, +booktitle={Proceedings of 19th Annual IEEE Conference on Computational Complexity}, +year = {2004}, +pages = {150--160}, +location = {Amherst, Massachusetts, United States}} + +%Chen 2005 + +@article{Chen05, +author = {J.-E. Chen}, +title = {Parameterized computation and complexity: A new approach dealing with +{NP}-hardness}, +journal = jcss, volume = 20, pages = {18-37}, year = 2005} + +@article{ChenCMXJKX05, +author = {Jianer Chen and Benny Chor and Mike Fellows and Xiuzhen Huang and +David W. Juedes and Iyad A. Kanj and Ge Xia}, +title = {Tight lower bounds for certain parameterized {NP}-hard problems}, +journal = ic2, volume = {201}, year = {2005}, pages = {216-231}} + +%Chen 2006 + +@article{ChenHS06, +author = {Xujin Chen and Xiaodong Hu and Tianping Shuai}, +title = {Inapproximability and approximability of maximal tree routing and coloring}, +journal = jco, volume = 11, year = 2006, pages = {219-229}} + +@article{ChenHKX06, +author = {Jianer Chen and X. Huang and I. A. Kanj and G. Xia}, +title = {On the computational hardness based on linear {FPT}-reductions}, +journal = jco, volume = 11, year = 2006, pages = {231-247}} + +@article{ChenHKX06a, +author = {Jianer Chen and X. Huang and I. A. Kanj and G. Xia}, +title = {Strong computational lower bounds via parameterized complexity}, +journal = jcss, volume = 72, year = 2006, pages = {1346-1367}} + +%Chen 2007 + +@article{ChenFKX07, +author = {Jianer Chen and Henning Fernau and Iyad A. Kanj and Ge Xia}, +title = {Parametric duality and kernelization: Lower bounds and upper bounds on kernel size}, +journal = siamjc, volume = 37, year = 2007, pages = {1077-1106}} + +@article{ChenHKX07, +author = {Jianer Chen and Xiuzhen Huang and Iyad A. Kanj and Ge Xia}, +title = {Polynomial time approximation schemes and parameterized complexity}, +journal = dam, volume = 155, year = 2007, pages = {180-193}} + +@article{ChenLLLW07, +author = {Mingxia Chen and Jianbo Li and Jianping Li and Weidong Li +and Lusheng Wang}, +title = {Some approximation algorithms for the clique partition problem +in weighted interval graphs}, +journal = tcs, volume = 381, year = 2007, pages = {124-133}} + +@inproceedings{ChenLSZ07, +author = {Jianer Chen and Songjian Lu and Sing-Hoi Sze and Fenghui Zhang}, +title = {Improved algorithms for path, matching, and packing problems}, +booktitle = soda07, +editor = {Nikhil Bansal and Kirk Pruhs and Clifford Stein}, +pages = {298-307}, year = 2007} + +%Chen 2008 + +@article{ChenFLLV08, +author = {Jianer Chen and Fedor V. Fomin and Yang Liu and Songjian Lu and Yngve Villanger}, +title = {Improved algorithms for feedback vertex set problems}, +journal = jcss, volume = 74, year = 2008, pages = {1188-1198}} + +@inproceedings{ChenLLSR08, +author = {Jianer Chen and Yang Liu and Songjian Lu and Barry {O'Sullivan} and Igor Razgon}, +title = {A fixed-parameter algorithm for the directed feedback vertex set problem}, +editor = {Richard E. Ladner and Cynthia Dwork}, +booktitle = stoc08, pages = {177-186}, year = 2008} + +%Chen 2009 + +@article{ChenKX09, +author = {Jianer Chen and Iyad A. Kanj and Ge Xia}, +title = {On parameterized exponential time complexity}, +journal = tcs, year = 2009, volume = 410, pages = {2641-2648}} + +@article{ChenLL09, +author = {Jianer Chen and Yang Liu and Songjian Lu}, +title = {An improved parameterized algorithm for the minimum node multiway cut problem}, +journal = alg, year = 2009, volume = 55, pages = {1-13}} + +@article{ChenL09, +author = {Jianer Chen and Songjian Lu}, +title = {Improved parameterized set splitting algorithms: A probabilistic approach}, +journal = alg, volume = 54, year = 2009, pages = {472-489}} + +%Cher + +@article{CheritonT76, +author = {D. Cheriton and R. E. Tarjan}, +title = {Finding minimum spanning trees}, +journal = siamjc, year = 1976, pages = {724-742}} + +@article{CheriyanM88, +author = {J. Cheriyan and S. N. Maheshwari}, +title = {Finding nonseparating induced cycles and independent spanning +trees in 3-connected graphs}, +journal = ja, volume = 9, pages = {507-537}, year = 1988 } + +%Chi + +@article{ChibaNS81, +author = {N. Chiba and Takao Nishizeki and N. Saito}, +title = {A linear algorithm for five-coloring a planar graph}, +journal = ja, year = 1981, volume = 2, pages = {317-327}} + +@article{ChibaN85, +author = {N. Chiba and Takao Nishizeki}, +title = {Arboricity and Subgraph Listing Algorithms}, +journal = siamjc, volume = 14, pages = {210-223}, year = 1985} + +@article{ChibaN89, +author = {N. Chiba and Takao Nishizeki}, +title = {The {H}amiltonian Cycle problem is linear-time solvable for +4-connected planar graphs}, +journal = ja, volume = 10, pages = {187-211}, year = 1989} + +@article{ChinnCDG82, +author = {P. Z. Chinn and J. Chv\'{a}talov\'{a} and A. K. Dewdney and N. E. +Gibbs}, +title = {The bandwidth problem for graphs and matrices --- A survey}, +journal = jgt, volume = 6, year = 1982, pages = {223-254}} + +%Chl + +@article{Chlebik08, +author = {Miroslav Chleb{\'\i}k and Janka Chleb{\'\i}kov{\'{a}}}, +title = {Crown reductions for the {M}inimum {W}eighted {V}ertex {C}over problem}, +journal = dam, volume = 156, year = 2008, pages = {292-312}} + +@article{Chlebikova92, +author = {J. Chleb{\'\i}kov{\'{a}}}, +title = {On the tree width of a graph}, +journal = {Acta Mathematica Universitatis Comenianae}, +volume = {LXI}, number = 2, pages = {225-236}, year = 1992} + +@article{Chlebikova02, +author = {J. Chleb{\'\i}kov{\'{a}}}, +title = {The structure of obstructions to treewidth and pathwidth}, +journal = dam, volume = 120, pages = {61-71}, year = 2002} + +@article{ChlebikovaJ07, +author = {Janka Chleb{\'\i}kov{\'{a}} and Klaus Jansen}, +title = {The $d$-precoloring problem for $k$-degenerate graphs}, +journal = dm, volume = 307, year = 2007, pages = {2082-2093}} + +%Cho + +@inproceedings{ChorFRRRS07, +author = {B. Chor and M. Fellows and M. Ragan and F. Rosamond and I. Razgon and S. Snir}, +title = {Connected coloring completion for general graphs: algorithms and complexity}, +editor = {Guohui Lin}, +booktitle = cocoon07, publisher = lncs4598, pages = {75-85}, year = 2007} + +@article{ChouWZ03, +author = {C. Chou and W. Wang and X. Zhu}, +title = {Relaxed game chromatic number of graphs}, +journal = dm, year = 2007, volume = 262, pages = {89-98}} + +@article{ChouKHC07, +author = {Hsin-Hung Chou and Ming-Tat Ko and Chin-Wen Ho and Gen-Huey Chen}, +title = {Node-searching problem on block graphs}, +journal = dam, volume = 156, year = 2007, pages = {55-75}} + +%Chr + +@book{Christofides75, +author = {N. Christofides}, +title = {Graph Theory: An Algorithmic Approach}, +publisher = {Academic Press}, +address = {New York}, +year = 1975 } + +@article{ChrobakN90, +author = {Marek Chrobak and Takao Nishizeki}, +title = {Improved Edge-Coloring Algorithms for Planar Graphs}, +journal = ja, volume = 102, year = 1990, pages = {102 - 116}} + +@techreport{ChrobakK93, +author = {M. Chrobak and G. Kant}, +title = {Convex Grid Drawings of 3-Connected Planar Graphs}, +type = tr, institution = vi, number = {RUU-CS-93-45}, year = 1993} + +%Chu + +%Chud + +@article{ChudakGHW98, +author = {F. A. Chudak and M. X. Goemans and D. S. Hochbaum and D. P. Williamson}, +title = {A primal--dual interpretation of two 2-approximation algorithms +for the feedback vertex set problem in undirected graphs}, +journal = orl, volume = 22, year = 1998, pages = {111-118}} + +@article{ChudnovskyRST06, +author = {Maria Chudnovsky and Neil Robertson and Paul D. Seymour and Robin Thomas}, +title = {The strong perfect graph theorem}, +journal = {Annals of Mathematics}, volume = 164, pages = {51-229}, year = 2006} + +@article{ChudnovskyRST10, +author = {Maria Chudnovsky and Neil Robertson and Paul D. Seymour and Robin Thomas}, +title = {$K_4$-free graphs with no odd holes}, +journal = jctb, volume = 100, year = 2010, pages = {313-331}} + +%Chung 1984 + +@article{Chung84, +author = {F. R. K. Chung}, +title = {On Optimal Linear Arrangement of Trees}, +journal = {Computers \& Mathematics with Applications}, volume = 10, year = 1984, pages = {43-60}} + +%Chung 1985 + +@article{Chung85, +author = {F. R. K. Chung}, +title = {On the Cutwidth and Topological Bandwidth of a Tree}, +journal = sjadm, volume = 6, year = 1985, pages = {268-277}} + +@article{ChungMST85, +author = {M.-J. Chung and F. S. Makedon and Ivan Hal Sudborough and J. +Turner}, +title = {Polynomial Time Algorithms for the Min Cut Problem on Degree +Restricted Trees}, +journal = siamjc, year = 1985, volume = 14, pages = {158-177}} + +%Chung 1986 + +@article{ChungLR86, +author = {F. R. K. Chung and F. T. Leighton and A. L. Rosenberg}, +title = {Embedding graphs in books: {A} graph layout problem with +applications to {VLSI} design}, +year = 1986, journal = sjadm } + +%Chung 1989 + +@article{ChungS89, +author = {F. R. K. Chung and Paul D. Seymour}, +title = {Graphs with small bandwidth and cutwidth}, +journal = dm, volume = 75, pages = {113-119}, year = 1989} + +%Chung 1994 + +@article{ChungM94, +author = {F. R. K. Chung and David Mumford}, +title = {Chordal Completions of Planar Graphs}, +journal = jctb, volume = {62}, pages = {96-106}, year = 1994} + +%Cl + +%Cla + +@inproceedings{ClautiauxCMN03, +author = {F. Clautiaux and J. Carlier and A. Moukrim and S. N\'{e}gre}, +title = {New lower and upper bounds for graph treewidth}, +editor = {J. D. P. Rolim}, +booktitle = wea03, publisher = lncs2647, year = 2003, pages = {70-80}} + +@article{ClautiauxMNC04, +author = {F. Clautiaux and A. Moukrim and S. N{\'e}gre and J. Carlier}, +title = {Heuristic and Meta-Heuristic Methods for Computing Graph Treewidth}, +journal = {RAIRO Operations Research}, volume = 38, year = 2004, pages = {13-26}} + +%Cle + +@article{ClearyJ09, +author = {Sean Cleary and Katherine {St. John}}, +title = {Rotation distance is fixed-parameter tractable}, +journal = ipl, volume = 109, year = 2009, pages = {918-922}} + +%Co + +%Coc + +%Cockayne 1975 + +@article{CockayneGH75, +author = {E. J. Cockayne and S. E. Goodman and S. T. Hedetniemi}, +title = {A Linear Algorithm for the Domination Number of a Tree}, +journal = ipl, volume = 4, year = 1975, pages = {41-44}} + +%Cockayne 1981 + +@article{CockayneFPT81, +author = {E. J. Cockayne and O. Favaron and C. Payan and A. Thomason}, +title = {Contributions to the Theory of Domination, Independence, and +Irredundance in Graphs}, +journal = dm, vol = 33, year = 1981, pages = {249-258}} + +%Cockayne 1986 + +@article{CockayneH86, +author = {E. J. Cockayne and D. E. Hewgill}, +title = {Exact computation of {S}teiner minimal trees in the plane}, +journal = ipl, volume = 2, year = 1986, pages = {151-156}} + +%Cockayne 2004 + +@article{CockayneDHH04, +author = {E. J. Cockayne and P. A. Dreyer and S. M. Hedetniemi and S. T. +Hedetniemi}, +title = {Roman domination in graphs}, +journal = dm, volume = 278, year = 2004, pages = {11-22}} + +%Cockayne 2007 + +@article{Cockayne07, +author = {E. J. Cockayne}, +title = {Irredundance, secure domination and maximum degree in trees}, +journal = dm, volume = 307, year = 2007, pages = {12-17}} + + +%Coh + +@techreport{CohenSTV92, +author = {Robert F. Cohen and S. Sairam and Roberto Tamassia and J. S. Vitter}, +title = {Dynamic Algorithms for Bounded Tree-Width Graphs}, +type = {Technical Report}, +number = {CS-92-19}, +institution = {Department of Computer Science, Brown University}, +year = 1992} + +@inproceedings{CohenSTV93, +author = {Robert F. Cohen and S. Sairam and Roberto Tamassia and J. S. Vitter}, +title = {Dynamic Algorithms for Optimization Problems in Bounded Tree-Width Graphs}, +editor = {Giovanni Rinaldi and Laurence A. Wolsey}, +booktitle = {Proceedings of the 3rd Conference on Integer Programming and Combinatorial Optimization, IPCO'93}, +pages = {99-112}, +year = 1993} + +@inproceedings{CohenT93, +author = {Robert F. Cohen and Roberto Tamassia}, +title = {Combine and Conquer}, +booktitle = esa93, +editor = {Thomas Lengauer}, +year = 1993, +pages = {97-108}, +publisher = lncs726, +} + +%Col + +%Colb + +@article{ColbournB81, +author = {Charles J. Colbourn and K. S. Booth}, +title = {Linear time automorphism algorithms for trees, interval graphs, and +planar graphs}, +journal = siamjc, volume = 10, pages = {203-225}, year = 1981} + +@inproceedings{ColbournP84, +author = {Charles J. Colbourn and Andrzej Proskurowski}, +title = {Concurrent transmissions in broadcast networks}, +editor = {Jan Paredaens}, +booktitle = icalp84, publisher = lncs172, pages = {128-136}, year = 1984} + +@article{ColbournS85, +author = {Charles J. Colbourn and L. K. Stewart}, +title = {Dominating cycles in series-parallel graphs}, +journal = arscomb, volume = {19A}, year = 1985, pages = {107-112}} + +@article{ColbournDN89, +author = {Charles J. Colbourn and Robert P. J. Day and Louis D. Nel}, +title = {Unranking and ranking spanning trees of a graph}, +journal = ja, volume = 10, year = 1989, pages = {271-286}} + +%Cole + +@article{ColeV88, +author = {Richard Cole and Uzi Vishkin}, +title = {The Accelerated Centroid Decomposition Technique for Optimal +Parallel Tree Evaluation in Logarithmic Time}, +journal = alg, year = 1988, volume = 3, pages = {329-346}} + +@article{ColeV91, +author = {Richard Cole and Uzi Vishkin}, +title = {Approximate Parallel Scheduling {II}. {A}pplications to +Logarithmic-Time Optimal Parallel Graph Algorithms}, +journal = ic2, volume = 92, pages = {1-47}, year = 1991} + +@article{ColeZ95, +author = {Richard Cole and Ofer Zajicek}, +title = {An asynchronous parallel algorithm for undirected graph +connectivity}, +journal = ja, volume = 18, pages = {50-97}, year = 1995} + +@article{ColeK08, +author = {Richard Cole and {\L}ukasz Kowalik}, +title = {New linear-time algorithms for edge-coloring planar graphs}, +journal = alg, volume = 50, year = 2008, pages = {351-368}} + +%Coli + +@article{Colin98, +author = {Y. {Colin de Verdi\`{e}re}}, +title = {Multiplicities of eigenvalues and tree-width of graphs}, +journal = jctb, volume = 74, pages = {121-146}, year = 1998} + +%Com + +@unpublished{ComptonH83, +author = {K. Compton and C. W. Henson}, +title = {A simple method for proving lower bounds on the complexity of logical +theories}, +note = {Extended abstract, preprint}, year = 1983} + +@techreport{ComptonH87, +author = {K. Compton and C. W. Henson}, +title = {A Uniform Method for Proving Lower Bounds on the Computational +Complexity of Logical Theories}, +number = {CRL-TR-04-87}, +institution = {The University of Michigan, Computing Research +Laboratory}, +pages = 53, +year = 1987, month = {4}, type = {Report}} + +%Con + +@techreport{CondonFLS93, +author = {Anne Condon and Joan Feigenbaum and Casten Lund and Peter Shor}, +title = {Probabilistic Checkable Debate Systems and Approximation Algorithms +for {PSPACE}-hard Functions}, +institution = {DIMACS}, +year = 1993} + +@unpublished{CondonFLS93a, +author = {Anne Condon and Joan Feigenbaum and Casten Lund and Peter Shor}, +title = {Random Debaters and the Hardness of Approximating Stochastic +Functions (Extended Abstract)}, +note = {Manuscript}, +year = 1993} + +@book{Conway76, +author = {J. H. Conway}, +title = {On Numbers and Games}, +publisher = {Academic Press}, +address = {London}, year = 1976 } + +%Coo + +@inproceedings{Cook71, +author = {S. A. Cook}, +title = {The complexity of theorem-proving procedures}, +booktitle = stoc71, +publisher = {ACM}, address = {New York}, year = 1971, pages = {151-158}} + +@techreport{CookS93, +author = {William Cook and Paul D. Seymour}, +title = {An Algorithm for the Ring-Routing Problem}, +institution = {Bellcore}, +year = 1993, +type = {Bellcore Technical Memorandum}} + +@misc{Cook96, +author = {William Cook}, +year = 1996, note = {Personal communication}} + +@article{CookS03, +author = {William Cook and Paul D. Seymour}, +title = {Tour merging via branch-decomposition}, +year = 2003, number = 3, volume = 15, pages = {233-248}, +journal = informsjc} + +@article{Cooper90, +author = {Gregory F. Cooper}, +title = {The computational complexity of probabilistic inference using +{B}ayesian belief networks}, +journal = artint, volume = 42, pages = {393--405}, year = 1990} + +@techreport{Cooper93, +author = {Gregory F. Cooper}, +title = {Bayesian Belief-Network Inference Using Recursive Decomposition}, +number = {KSL 90-05}, +year = 1990, +institution = {Knowledge Systems Laboratory, Medical Computer Science, +Stanford}} + +@techreport{Cooper93a, +author = {Gregory F. Cooper}, +title = {A Recursive-Decomposition Method for Solving {AI} Graph Problems}, +number = {SMI-91-2}, +institution = {Section of Medical Informatics, University of Pittsburgh}, +year = 1993} + +%Cop + +@article{CoppersmithV85, +author = {D. Coppersmith and Uzi Vishkin}, +title = {Solving {NP}-Hard Problems in 'Almost Trees': Vertex Cover}, +journal = dam, year = 1985, volume = 10, pages = {27-45}} + +@article{CoppersmithW90, +author = {D. Coppersmith and S. Winograd}, +title = {Matrix multiplication via arithmetic progression}, +journal = {Journal of Symbolic Computation}, volume = 9, year = 1990, pages = {251-280}} + +%Cor + +@book{CormenLR89, +author = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest}, +title = {Introduction to Algorithms}, +publisher = {MIT Press}, address = {Cambridge, Mass., USA}, year = 1989} + +@book{CormenLRS01, +author = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest +and Clifford Stein}, +title = {Introduction to Algorithms, Second Edition}, +publisher = {MIT Press}, address = {Cambridge, Mass., USA}, year = 2001} + +%Corneil 1981 + +@article{CorneilLS81, +author = {Derek G. Corneil and H. Lerchs and L. {Stewart Burlingham}}, +title = {Complement reducible graphs}, +journal = adm, volume = 1, year = 1981, pages = {145-162}} + +%Corneil 1983 + +@article{CorneilK83, +author = {Derek G. Corneil and D. G. Kirkpatrick}, +title = {Families of recursively defined perfect graphs}, +journal = cn, volume = 39, year = 1983, pages = {237-246}} + +%Corneil 1984 + +@article{CorneilP84, +author = {Derek G. Corneil and Y. Perl}, +title = {Clustering and domination in perfect graphs}, +journal = dam, volume = 9, year = 1984, pages = {27-39}} + +@article{CorneilPS84, +author = {Derek G. Corneil and Y. Perl and L. K. Stewart}, +title = {Cographs: recognition, applications and algorithms}, +journal = cn, volume = 43, year = 1984, pages = {249-258}} + +%Corneil 1985 + +@article{CorneilPS85, +author = {Derek G. Corneil and Y. Perl and L. K. Stewart}, +title = {A linear recognition algorithm for cographs}, +journal = siamjc, year = 1985, pages = {926-934}, volume = 14 } + +%Corneil 1987 + +@article{CorneilK87, +author = {Derek G. Corneil and J. Mark Keil}, +title = {A Dynamic Programming Approach to the Dominating Set Problem on $k$-trees}, +journal = sjadm, pages = {535-543}, volume = 8, year = 1987 } + +%Corneil 1992 + +@techreport{CorneilOS92, +author = {Derek G. Corneil and Stephan Olariu and Lorna Stewart}, +title = {Asteroidal Triple-Free Graphs}, +number = {262/92}, +year = 1992, type = {Technical Report}, +institution = {Dept. of Computer Science, University of Toronto}} + +@unpublished{CorneilOS??, +author = {Derek G. Corneil and Stephan Olariu and Lorna Stewart}, +title = {The linear structure of graphs: asteroidal triple-free graphs}, +note = {Manuscript}} + +%Corneil 1995 + +@article{CorneilKNOS95, +author = {Derek G. Corneil and Hiryoung Kim and Sridhar Natarajan and +Stephan Olariu and Alan P. Sprague}, +title = {Simple Linear Time Recognition of Unit Interval Graphs}, +year = 1995, journal = ipl, volume = 55, pages = {99-104}} + +%Corneil 1997 + +@article{CorneilOS97, +author = {Derek G. Corneil and S. Olariu and L. Stewart}, +title = {Asteroidal triple-free graphs}, +journal = sjdm, volume = 10, year = 1997, pages = {399-430}} + +@unpublished{CorneilS??, +author = {Derek G. Corneil and L. K. Stewart}, +title = {Dominating Sets in Perfect Graphs}, +note = {preprint}} + +%Corneil 2000 + +@inproceedings{CorneilHLRR00, +author = {Derek G. Corneil and M. Habib and J. M. Lanlignel and Bruce Reed and Udi Rotics}, +title = {Polynomial time recognition of clique-width $\leq 3$ graphs (Extended Abstract)}, +editor = {Gaston H. Gonnet and Daniel Panario and Alfredo Viola}, +booktitle = latin00, publisher = lncs1776, year = 2000, pages = {126-134}} + +@article{CorneilOS00, +author = {Derek G. Corneil and Stephan Olariu and Lorna Stewart}, +title = {Linear time algorithms for dominating pairs in asteroidal +triple-free graphs}, +journal = siamjc, volume = 28, year = 2000, pages = {1284-1297}} + +%Corneil 2004 + +@article{Corneil04, +author = {Derek G. Corneil}, +title = {A simple 3-sweep LBFS algorithm for the recognition of unit interval graphs}, +journal = dam, volume = 138, pages = {371-379}, year = 2004} + +%Corneil 2010 + +@article{CorneilKL10, +author = {Derek G. Corneil and Ekkehard K\"{o}hler and Jean-Marc Lanlignel}, +title = {On end-vertices of {L}exicographic {B}readth {F}irst {S}earches}, +journal = dam, volume = 158, year = 2010, pages = {434-443}} + +%Cornuejols + +@article{CornuejolsNP83, +author = {G. Cornu\'{e}jols and D. Naddef and W. R. Pulleyblank}, +title = {{H}alin graphs and the Traveling Salesman problem}, +journal = mp, volume = 26, year = 1983, pages = {287-294}} + + +%Cos + +@article{CosmadakisP84, +author = {Stavros S. Cosmadakis and Christos H. Papadimitriou}, +title = {The Travelling Salesman Problem with Many Visits to Few +Cities}, +journal = siamjc, volume = 13, pages = {99-108}, year = 1984 } + +%Cou + +%Courcelle 1983 + +@article{Courcelle83, +author = {Bruno Courcelle}, +title = {Fundamental properties of infinite trees}, +journal = tcs, volume = 25, year = 1983, pages = {375-393}} + +%Courcelle 1986 + +@article{Courcelle86, +author = {Bruno Courcelle}, +title = {Equivalence and transformation of regular systems. {A}pplications to +recursive program schemes and grammars}, +journal = tcs, volume = 42, pages = {1-22}, year=1986} + +%Courcelle 1987 + +@inproceedings{Courcelle87, +author = {Bruno Courcelle}, +title = {A representation of graphs by algebraic expressions and its use for graph rewriting systems}, +editor = {Hartmut Ehrig and Manfred Nagl and Grzegorz Rozenberg and Azriel Rosenfeld}, +booktitle = gragra86, publisher = lncs291, pages = {112-132}, year = 1987} + +@inproceedings{Courcelle87a, +author = {Bruno Courcelle}, +title = {On context-free sets of graphs and their monadic second-order theory}, +editor = {Hartmut Ehrig and Manfred Nagl and Grzegorz Rozenberg and Azriel Rosenfeld}, +booktitle = gragra86, publisher = lncs291, pages = {133-146}, year = 1987} + +@article{Courcelle87b, +author = {Bruno Courcelle}, +title = {An axiomatic definition of context-free rewriting and its +application to {NLC} graph grammars}, +journal = tcs, volume = 55, pages = {141-181}, year = 1987 } + +%Courcelle 1988 + +@inproceedings{Courcelle88a, +author = {Bruno Courcelle}, +title = {On using context-free graph grammars for analysing recursive definitions}, +booktitle = {Proceedings of the 2nd French-Japanese seminal on Artificial Intelligence}, +publisher = {North-Holland Pub. Co.}, +year = 1988} + +@article{Courcelle88c, +author = {Bruno Courcelle}, +title = {The Monadic Second-order Logic of Graphs {III}: {T}reewidth, Forbidden Minors and Complexity Issues}, +journal = {Informatique Th\'{e}orique}, volume = 26, pages = {257-286}, year = 1992} + +@article{Courcelle88d, +author = {Bruno Courcelle}, +title = {Some applications of logic of universal algebra, and of category theory to the theory of graph transformations}, +journal = beatcs, volume = 36, year = 1988, pages = {161-218}} + +@article{Courcelle88e, +author = {Bruno Courcelle}, +title = {Corrections and Additions to ``Some applications of +logic of universal algebra, and of category +theory to the theory of graph transformations''}, +journal = beatcs, volume = 37, year = {1988??}, pages = {194-195}} + +%Courcelle 1989 + +@article{Courcelle89, +author = {Bruno Courcelle}, +title = {The monadic second-order logic of graphs {II}: Infinite graphs of +bounded width}, +journal = mst, volume = 21, pages = {187-221}, year = 1989} + +%Courcelle 1990 + +@article{Courcelle90, +author = {Bruno Courcelle}, +title = {The monadic second-order logic of graphs {I}: {R}ecognizable sets of finite graphs}, +journal = ic2, volume = 85, year = 1990, pages = {12-75}} + +@inproceedings{Courcelle90a, +author = {Bruno Courcelle}, +title = {Graph rewriting: an algebraic and logical approach}, +booktitle = {Handbook of Theoretical Computer Science, volume {B}}, +editor = {Jan van Leeuwen}, +address = {Amsterdam}, year = 1990, +publisher = {North Holland Publ. Comp.}, +pages = {192-242} +} + +@article{Courcelle90b, +author = {Bruno Courcelle}, +title = {The monadic second-order logic of graphs {IV}: {D}efinable properties +of equational graphs}, +journal = apal, volume = 49, year = 1990, pages = {193-255}} + +%Courcelle 1991 + +@article{Courcelle91, +author = {Bruno Courcelle}, +title = {The monadic second-order logic of graphs {V}: {O}n closing +the gap between definability and recognizability}, +journal = tcs, volume = 80, year = 1991, pages = {153-202}} + +%Courcelle 1992 + +@article{Courcelle92, +author = {Bruno Courcelle}, +title = {The monadic second-order logic of graphs {VII}: Tree-decompositions, minor and complexity issues}, +journal = ita, volume = 101, year = 1992, pages = {257-286}} + +@techreport{CourcelleL92, +author = {Bruno Courcelle and Jens Lagergren}, +title = {Recognizable sets of graphs with bounded treewidth}, +number = {92-68}, +institution = {LaBRI, Bordeaux}, year = 1992} + +@article{CourcelleM93, +author = {Bruno Courcelle and M. Mosbah}, +title = {Monadic second-order evaluations on tree-decomposable graphs}, +journal = tcs, volume = {109}, year = 1993, pages = {49-82}} + +%Courcelle 1993 + +@inproceedings{Courcelle93, +author = {Bruno Courcelle}, +title = {Graph Grammars, Monadic Second-Order Logic and the Theory of Graph Minors}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint +Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147.}, +pages = {565 - 590}, +year = 1993} + +%Courcelle 1994 + +@article{Courcelle94, +author = {Bruno Courcelle}, +title = {The Monadic Second-Order Logic of Graphs {VI}: On several representations of graphs by relational structures}, +journal = dam, volume = 54, year = 1994, pages = {117-149}} + +%Courcelle 1995 + +@article{Courcelle95, +author = {Bruno Courcelle}, +title = {The Monadic Second-Order Logic of Graphs {VIII}: {O}rientations}, +journal = apal, volume = 72, year = 1995, pages = {103-143}} + +@article{Courcelle95a, +author = {Bruno Courcelle}, +title = {The Monadic Second-Order Logic of Graphs {VI}: {O}n several representations of graphs by relational structures, Erratum}, +journal = dam, volume = 63, year = 1995, pages = {199-200}} + +@misc{CourcelleS95, +author = {Bruno Courcelle and G. S{\'{e}}nizergues}, +title = {The obstructions of a minor-closed set of graphs defined by hyperedge replacement can be constructed}, +year = 1995} + +%Courcelle 1996 + +@article{CourcelleL96, +author = {Bruno Courcelle and Jens Lagergren}, +title = {Equivalent definitions of recognizability for sets of graphs of bounded tree-width}, +journal = {Mathematical Structures in Computer Science}, volume = 6, year = {1996}, pages = {141-166}} + +%Courcelle 1998 + +@inproceedings{CourcelleMR98, +author = {Bruno Courcelle and J. A. Makowsky and U. Rotics}, +title = {Linear time solvable optimization problems on graphs of bounded clique width}, +editor = {Juraj Hromkovic and Ondrej S\'{y}kora}, +booktitle = wg98, publisher = lncs1517, year = 1998, pages = {1-16}} + +%Courcelle 2000 + +@article{CourcelleO00, +author = {Bruno Courcelle and S. Olariu}, +title = {Upper bounds to the clique-width of graphs}, +journal = dam, volume = 101, year = 2000, pages = {77-114}} + +@article{CourcelleMR00, +author = {Bruno Courcelle and J. A. Makowsky and U. Rotics}, +title = {Linear time solvable optimization problems on graphs of bounded +clique width}, +journal = tcs, volume = 33, year = 2000, pages = {125-150}} + +%Courcelle 2001, + +@article{CourcelleMR01, +author = {Bruno Courcelle and J. A. Makowsky and U. Rotics}, +title = {On the fixed parameter complexity of graph enumeration problems definable in monadic second order logic}, +journal = dam, volume = 108, year = 2001, pages = {23-52}} + +%Courcelle 2003 + +@article{Courcelle03, +author = {Bruno Courcelle}, +title = {The monadic second-order logic of graphs {XIV}: Uniformly +sparse graphs and edge set quantifications}, +journal = tcs, volume = 299, pages = {1-36}, year = 2003} + +%Courcelle 2005 + +@article{CourcelleW05, +author = {Bruno Courcelle and Pascal Weil}, +title = {The recognizability of sets of graphs is a robust property}, +journal = tcs, volume = 342, pages = {173-228}, year = 2005} + +%Courcelle 2006 + +@article{Courcelle06, +author = {Bruno Courcelle}, +title = {The monadic second-order logic of graphs {XV}: On a conjecture by {D.} {S}eese}, +journal = {Journal of Applied Logic}, volume = 4, year = 2006, pages = {79-114}} + +%Courcelle 2007 + +@article{CourcelleO07, +author = {Bruno Courcelle and Sang-il Oum}, +title = {Vertex-minors, monadic second-order logic, and a conjecture by {S}eese}, +journal = jctb, volume = 97, year = 2007, pages = {91-126}} + +%Courcelle 2009 + +@article{CourcelleK09, +author = {Bruno Courcelle and Mamadou Moustapha Kant\'{e}}, +title = {Graph operations characterizing rank-width}, +journal = dam, volume = 157, year = 2009, pages = {627-640}} + +%Cournier + +@inproceedings{CournierH93, +author = {A. Cournier and M. Habib}, +title = {An efficient algorithm to recognize prime undirected graphs}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {212-224}} + +@inproceedings{CournierH94, +author = {A. Cournier and M. Habib}, +title = {A new linear algorithm for modular decomposition}, +booktitle = {Trees in algebra and programming, CAAP'94}, +editor = {Tison Sophie}, +year = 1994, +pages = {68-84}, +publisher = lncs787} + +%Cu + +%Cur + +@article{CurtisIJLM10, +author = {Andrew R. Curtis and Clemente Izurieta and Benson Joeris and Scott Lundberg and Ross M. McConnell}, +title = {An implicit representation of chordal comparability graphs in linear time}, +journal = dam, volume = 158, year = 2010, pages = {869-875}} + +%Cy + +%Cyg + +@article{CyganKW09, +author = {Marek Cygan and {\L}ukasz Kowalik and Mateusz Wykurz}, +title = {Exponential-time approximation of weighted set cover}, +journal = ipl, volume = 109, year = 2009, pages = {957-961}} + +%Cz + +@article{CzumajHLN05, +author = {Artur Czumaj and Magn\'{u}s M. Halld\'{o}rsson and Andrzej Lingas and Johan Nilsson}, +title = {Approximation algorithms for optimization problems in graphs with superlogarithmic treewidth}, +journal = ipl, volume = 94, year = 2005, pages = {49-53}} + +%D + +%Da + +%Dah + +%Dahlhaus 1986 + +@techreport{DahlhausK86, +author = {Elias Dahlhaus and Marek Karpinski}, +title = {The Matching Problem for Strongly Chordal Graphs is in {NC}}, +type = {Research Report}, +number = {855-CS}, +institution = {University of Bonn}, address = {Bonn}, +year = 1986 } + +%Dahlhaus 1988 + +@article{DahlhausK88, +author = {Elias Dahlhaus and Marek Karpinski}, +title = {Parallel Construction of Perfect Matchings and {H}amiltonian +Cycles on Dense Graphs}, +year = 1988, journal = tcs, volume = 61, pages = {112-136}} + +%Dahlhaus 1993 + +@inproceedings{Dahlhaus93, +author = {Elias Dahlhaus}, +title = {Optimal (parallel) algorithms for the all-to-all vertices distance problem for certain graph classes}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {60-69}} + +%Dahlhaus 1995 + +@article{Dahlhaus95, +author = {Elias Dahlhaus}, +title = {Efficient parallel recognition algorithms of cographs and distance +hereditary graphs}, +journal = dam, volume = 57, year = 1995, pages = {29-44}} + +%Dahlhaus 1997 + +@inproceedings{Dahlhaus97, +author = {Elias Dahlhaus}, +title = {Minimal elimination ordering inside a given chordal graph}, +editor = {Rolf H. M\"{o}hring}, +booktitle = wg97, pages = {132-143}, year = 1997, publisher = lncs1335} + +%Dahlhaus 1998 + +@inproceedings{Dahlhaus98, +author = {Elias Dahlhaus}, +title = {Minimum fill-in and treewidth for graphs modularly decomposable into +chordal graphs}, +editor = {Juraj Hromkovic and Ondrej S\'{y}kora}, +booktitle = wg98, pages = {351-358}, year = 1998, publisher = lncs1517} + +%Dahlhaus 2001 + +@article{DahlhausGM01, +author = {E. Dahlhaus and J. Gustedt and R. M. Mc{C}onnell}, +title = {Efficient and practical modular decomposition}, +journal = ja, volume = 41, pages = {360-387}, year = 2001} + +%Dahlof + +@article{DahlofJB04, +author = {V. Dahl\"{o}f and P. Johnsson and R. Beigel}, +title = {Algorithms for four variants of the exact satisfiability problem}, +journal = tcs, volume = 320, year = 2004, pages = {373-394}} + +%Dag + +@article{DagnumL93, +author = {Paul Dagnum and Michael Luby}, +title = {Approximating probabilistic inference in {B}ayesian belief networks is +{NP}-hard}, +journal = artint, volume = 60, year = 1993, pages = {141-153}} + +%Dai + +@inproceedings{DaiS90, +author = {W. W. Dai and M. Sato}, +title = {Minimal forbidden minor characterization of planar partial +3-trees and application to circuit layout}, +booktitle = {Proceedings IEEE International Symposium on Circuits and Systems}, +year = 1990, pages = {2677-2681}} + +@article{DaiY09, +author = {Decheng Dai and Changyuan Yu}, +title = {A $5+\epsilon$-approximation algorithm for minimum weighted +dominating set in unit disk graphs}, +journal = tcs, volume = 410, year = 2009, pages = {756-765}} + +%Dal + +@unpublished{DaligaultT09, +author = {Jean Daligault and St\'{e}phan Thomass\'{e}}, +title = {On finding directed trees with many leaves}, +year = 2009, +note = {In proceedings IWPEC 2009}} + +@inproceedings{DalmauKV02, +author = {Victor Dalmau and Phokion G. Kolaitis and Moshe Y. Vardi}, +title = {Constraint satisfaction, bounded treewidth, and finite-variable +logics}, +booktitle = {Proceedings of the 8th International Conference on Principles and +Practice of Constraint Programming}, +pages = {310-326}, +publisher = lncs2470, year = 2002} + +%Dam + +%Damaschke 1989 + +@techreport{Damaschke89, +author = {Peter Damaschke}, +title = {Paths in Interval Graphs and Circular Arc Graphs}, +number = {N/89/4}, +institution = {Friedrich-Schiller-University Jena, GDR}, +year = 1989 } + +@article{Damaschke89a, +author = {Peter Damaschke}, +title = {The Hamiltonian circuit problem for circle graphs is +{NP}-complete}, +journal = ipl, volume = 32, year = 1989, pages = {1-2}} + +%Damaschke 1990 + +@unpublished{Damaschke90, +author = {Peter Damaschke}, +title = {Subgraph Isomorphism for Cographs is {NP}-Complete}, +year = 1990, +note = {Manuscript}} + +@unpublished{Damaschke90a, +author = {Peter Damaschke}, +title = {Hamilton-hereditary Graphs}, +year = 1990, note = {Manuscript}} + +@unpublished{DamaschkeK90, +author = {Peter Damaschke and Dieter Kratsch}, +title = {Finding {H}amiltonian Paths in Cocomparability Graphs Using the Bump Number Algorithm}, +year = 1990, note = {Manuscript}} + +@article{Damaschke90b, +author = {Peter Damaschke}, +title = {Induced subgraphs and well-quasi-ordering}, +journal = jgt, volume = 14, number = 4, year = 1990, pages = {427-435}} + +@article{DamaschkeMK90, +author = {Peter Damaschke and Haiko M\"{u}ller and Dieter Kratsch}, +title = {Domination in convex and chordal bipartite graphs}, +journal = ipl, volume = 36, year = 1990, pages = {231-236}} + +%Damaschke 1991 + +@unpublished{DamaschkeDKS91, +author = {Peter Damaschke and Jitender S. Deogun and Dieter Kratsch and George Steiner}, +title = {Finding {H}amiltonian Paths in Cocomparability Graphs Using The Bump Number Algorithm}, +note = {Manuscript. Submitted to Order}, +year = 1991} + +%Damaschke 2006 + +@article{Damaschke06, +author = {Peter Damaschke}, +title = {Parameterized enumeration, transversals, and imperfect phylogeny reconstruction}, +journal = tcs, volume = 351, year = 2006, pages = {337-350}} + +%Damaschke 2010 + +@article{Damaschke10, +author = {Peter Damaschke}, +title = {Fixed-parameter enumerability of cluster editing and related problems}, +journal = tocs, volume = 46, year = 2010, pages = {261-283}} + +%Dan + +@article{DankelmannGK09, +author = {Peter Dankelmann and Gregory Gutin and Eun Jung Kim}, +title = {On complexity of minimum leaf out-branching problem}, +journal = dam, volume = 157, year = 2009, pages = {3000-3004}} + +%Dar + +@article{Darwiche01, +author = {A. Darwiche}, +title = {Decomposable negation normal form}, +journal = jacm, volume = 48, pages = {608-647}, year = 2001} + +@article{Darwiche03, +author = {A. Darwiche}, +title = {A differential approach to inference in {B}ayesian networks}, +journal = jacm, volume = 50, year = 2003, pages = {280-305}} + +%Dav + +@article{DavisP60, +author = {Martin David and Hillary Putnam}, +title = {A computing procedure for quantification theory}, +journal = jacm, volume = 7, year = 1960, pages = {201-215}} + +%Daw + +@article{Dawid92, +author = {A. P. Dawid}, +title = {Applications of a general propagation algorithm for probabilistic expert systems}, +journal = {Statistics and Computing}, volume = 2, year = 1992, pages = {25-36}} + +%Day + +@article{DaykinN66, +author = {D. E. Daykin and C. P. Ng}, +title = {Algorithms for generalized stability numbers of tree graphs}, +journal = {Journal of the Australian Mathematical Society}, volume = 6, year = 1966, pages = {89-100}} + +%De + +@article{DeSimoneG08, +author = {Caterina {De Simone} and Anna Galluccio}, +title = {Edge-colouring of regular graphs of large degree}, +journal = tcs, volume = 389, year = 2008, pages = {91-99}} + +%Dec + +@article{DechterP89, +author = {R. Dechter and J. Pearl}, +title = {Tree clustering for constraint networks}, +journal = ai, volume = 38, year = 1989, pages = {353-366}} + +@article{Dechter99, +author = {R. Dechter}, +title = {Bucket elimination: a unifying framework for reasoning}, +journal = ai, volume = 113, year = 1999, pages = {41-85}} + +%DeF + +@article{deFraysseixPP90, +author = {H. de Fraysseix and J. Pach and R. Pollack}, +title = {How to draw a planar graph on a grid}, +journal = combinatorica, volume = 10, year = 1990, pages = {41-51}} + +%Deh + +@inproceedings{DehneFLRS05, +author = {Frank Dehne and Michael Fellows and Michael Langston and Frances Rosamond and Kim Stevens}, +title = {An {$O(2^{O(k)}n^3)$} {FPT} algorithm for the undirected feedback vertex set problem}, +editor = {Lusheng Wang}, +booktitle = cocoon05, pages = {859-869}, year = 2005, publisher = lncs3595} + +@inproceedings{DehneFFPR06, +author = {Frank Dehne and Michael Fellows and Henning Fernau and Elena Prieto and Frances Rosamond}, +title = {NONBLOCKER: Parameterized algorithms for minimum dominating set}, +editor = {Jir\'{\i} Wiedermann and Gerard Tel and Jaroslav Pokorn{\'y} and M{\'a}ria Bielikov{\'a} and Julius Stuller}, +booktitle = sofsem06, year = 2006, publisher = lncs3831, pages = {237-245}} + +@inproceedings{DehneLLPSZ06, +author = {Frank Dehne and Michael A. Langston and Xuemei Luo and Syvain Pitre +and Peter Shaw and Yun Zhang}, +title = {The {C}luster {E}diting problem: Implementations and experiments}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {13-24}} + +%Dei + +@article{DeinekoKW06, +author = {Vladimir G. Deineko and Bettina Klintz and Gerhard J. Woeginger}, +title = {Exact algorithms for the {H}amiltonian cycle problem in planar graphs}, +journal = orl, volume = 34, year = 2006, pages = {269-274}} + +%Del + +@unpublished{DellM09, +author = {Holger Dell and Dieter van Melkebeek}, +title = {Satisfiability Allows No Nontrivial Sparsification Unless The Polynomial-Time Hierarchy Collapses}, +year = 2009, +note = {To appear in: Electronic Colloquium on Computational Complexity (ECCC), volume 16}} + + +%Dem + +%Demaine 2001 + +@inproceedings{DemaineO01, +author = {Erik D. Demaine and Joseph {O'Rourke}}, +title = {Open problems from {CCCG} 2000}, +booktitle = {Proceedings of the 13th Canadian Conference on Computational Geometry, CCCG 2001}, +address = {Waterloo, Ontario, Canada}, year = 2001, pages = {185-187}} + +%Demaine 2002 + +@inproceedings{DemaineHT02, +author = {E. D. Demaine and M. Hajiaghayi and Dimitrios M. Thilikos}, +title = {Exponential speedup of fixed parameter algorithms on {$K_{3,3}$}-minor-free or {$K_5$}-minor-free graphs}, +booktitle = soda02, pages = {262-273}, year = 2002} + +%Demaine 2003 + +%Demaine 2004 + +@article{DemaineFHT04, +author = {Erik D. Demaine and Fedor V. Fomin and M. Hajiaghayi and Dimitrios M. Thilikos}, +title = {Bidimensional parameters and local treewidth}, +journal = sjdm, volume = 18, year = 2004, pages = {501-511}} + +@article{DemaineH04, +author = {Erik D. Demaine and M. Hajiaghayi}, +title = {Diameter and treewidth in minor-closed graph families, revisited}, +journal = alg, volume = 40, year = 2004, pages = {211-215}} + +@article{DemaineHNRT04, +author = {Erik Demaine and Mohammadtaghi Hajiaghayi and Naomi Nishimura and Prabhakar Ragde and Dimitrios M. Thilikos}, +title = {Approximation algorithms for classes of graphs excluding single-crossing graphs as minors}, +journal = jcss, volume = 69, year = 2004, pages = {166-195}} + +%Demaine 2005 + +@article{DemaineFHT05, +author = {Erik D. Demaine and Fedor V. Fomin and MohammadTaghi Hajiaghayi and Dimitrios M. Thilikos}, +title = {Fixed-Parameter Algorithms for ($k$,$r$)-center in Planar Graphs and Map Graphs}, +journal = acmtalg, volume = 1, year = 2005, pages = {33-47}} + +@article{DemaineFHT05a, +author = {Erik D. Demaine and Fedor V. Fomin and Mohammadtaghi Hajiaghayi and Dimitrios M. Thilikos}, +title = {Subexponential Parameterized Algorithms on Graphs of Bounded Genus and {$H$}-minor-free Graphs}, +journal = jacm, volume = 52, year = 2005, pages = {866--893}} + +@inproceedings{DemaineH05, +author = {Erik D. Demaine and Mohammadtaghi Hajiaghayi}, +title = {Graphs excluding a fixed minor have grids as large as treewidth, with combinatorial and algorithmic applications through bidimensionality}, +booktitle = soda05, year = 2005, pages = {682-689}} + +@inproceedings{DemaineH05a, +author = {Erik D. Demaine and Mohammadtaghi Hajiaghayi}, +title = {Bidimensionality: {N}ew connections between {FPT} algorithms and {PTASs}}, +booktitle = soda05, year = 2005, pages = {590-601}} + +@article{DemaineHT05, +author = {Erik D. Demaine and Mohammadtaghi Hajiaghayi and Dimitrios M. Thilikos}, +title = {Exponential speedup of fixed-parameter algorithms for classes of graphs excluding single-crossing graphs as minors}, +journal = alg, volume = 41, year = 2005, pages = {245-267}} + +%Demaine 2006 + +@article{DemaineHT06, +author = {Erik D. Demaine and MohammadTaghi Hajiaghayi and Dimitrios M. Thilikos}, +title = {The bidimensional theory of bounded-genus graphs}, +journal = sjdm, volume = 20, year = 2006, pages = {357-371}} + +%Demaine 2008 + +@article{DemaineH08, +author = {Erik D. Demaine and MohammadTaghi Hajiaghayi}, +title = {The bidimensionality theory and its algorithmic applications}, +journal = tcj, volume = 51, year = 2008, pages = {292-302}} + +@article{DemaineH08a, +author = {Erik D. Demaine and MohammadTaghi Hajiaghayi}, +title = {Linearity of grid minors in treewidth with applications through bidimensionality}, +journal = comb, volume = 28, year = 2008, pages = {19-36}} + +%Demaine 2009 + +@article{DemaineHK09, +author = {Erik D. Demaine and MohammadTaghi Hajiaghayi and Ken-ichi Kawarabayashi}, +title = {Algorithmic graph minor theory: Improved grid minor bounds and {W}agner's contraction}, +journal = alg, volume = 54, year = 2009, pages = {142-180}} + +%Den + +@article{DendrisKT97, +author = {Nick D. Dendris and Lefteris M. Kirousis and Dimitrios M. Thilikos}, +title = {Fugitive-search games on graphs and related parameters}, +journal = tcs, volume = 172, year = 1997, pages = {233-254}} + +%Deo + +@book{Deo74, +author = {N. Deo}, +title = {Graph Theory with Applications to Engineering and Computer Science}, +publisher = {Prentice Hall}, address = {Englewood Cliffs, NJ}, +year = 1974} + +@article{DeoKL87, +author = {N. Deo and M. S. Krishnamoorty and Michael A. Langston}, +title = {Exact and approximate solutions for the gate matrix layout problem}, +journal = {IEEE Transactions on Computer Aided Design}, volume = 6, year = 1987, pages = {79-84}} + +@article{DeogunP90, +author = {Jitender S. Deogun and Y. Peng}, +title = {Edge ranking of trees}, +journal = cn, volume = 79, year = 1990, pages = {19-28}} + +@unpublished{DeogunKT93, +author = {Jitender S. Deogon and Dieter Kratsch and Zsolt Tuza}, +title = {Some new results on rankings of graphs}, +year = 1993, note = {Manuscript}} + +@techreport{DeogunKKM93, +author = {Jitender S. Deogun and Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {On Vertex Ranking for Permutation and other Graphs}, +type = {Computing Science Notes}, number = {93-30}, +institution = {Eindhoven University of Technology}, +address = {Eindhoven, The Netherlands}, year = 1993} + +@article{DeogunKKM99, +author = {Jitender S. Deogun and Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {On the vertex ranking problem for trapezoid, circular-arc and other graphs}, +journal = dam, volume = 98, year = 1999, pages = {39-63}} + +%Der + +@article{DereniowskiK056, +author = {Dariusz Dereniowski and M. Kubale}, +title = {Efficient parallel query processing by graph ranking}, +journal = {Fundamenta Informormaticae}, volume = 69, pages = {273-285}, year = {2005/06}} + +@article{Dereniowski06, +author = {Dariusz Dereniowski}, +title = {Edge ranking of weighted trees}, +journal = dam, volume = 154, year = 2006, pages = {1198-1209}} + +@article{DereniowskiN06, +author = {Dariusz Dereniowski and Adam Nadolski}, +title = {Vertex rankings of chordal graphs and weighted trees}, +journal = ipl, volume = 98, pages = {96-100}, year = 2006} + +%Des + +@article{DessmarkLP00, +author = {A. Dessmark and A. Lingas and A. Proskurowski}, +title = {Faster algorithms for subgraph isomorphism of $k$-connected partial +$k$-trees}, +journal = alg, volume = 27, pages = {337-347}, year = 2000} + +%Dev + +%DeV + +@article{DeVosDOSRSV04, +author = {Matt DeVos and Guoli Ding and Bogdan Oporowski and Daniel P. Sanders +and Bruce Reed and Paul Seymour and Dirk Vertigan}, +title = {Excluding any graph as a minor allows a low tree-width 2-coloring}, +journal = jctb, volume = 91, year = 2004, pages = {25-41}} + +%Di + +%Dia + +@inproceedings{DiazST93, +author = {J. D\'{\i}az and M. J. Serna and J. T\'{o}ran}, +title = {Parallel approximation schemes for problems on planar graphs}, +booktitle = esa93, +editor = {Thomas Lengauer}, +year = 1993, +pages = {145-156}, +publisher = lncs726, +} + +@article{DiazPS02, +author = {Josep D\'{\i}az and J. Petit and Maria Serna}, +title = {A survey of graph layout problems}, +journal = acmcs, volume = 34, pages = {313-356}, year = 2002} + +@article{DiazST02, +author = {Josep D\'{\i}az and Maria Serna and Dimitrios M. Thilikos}, +title = {Counting {$H$}-colorings of partial $k$-trees}, +journal = tcs, volume = 281, year = 2002, pages = {291-309}} + +%Die + +@book{Diestel90, +author = {Reinhard Diestel}, +title = {Graph Decompositions. A Study in Infinite Graph Theory}, +publisher = {Oxford Science Publications, Clarendon Press}, +address = {Oxford}, year = 1990} + +@article{DiestelJGT99, +author = {Reinhard Diestel and Tommy R. Jensen and Konstantin Yu. Gorbunov and +Carsten Thomassen}, +title = {Highly connected sets and the excluded grid theorem}, +year = 1999, pages = {61-73}, journal = jctb, volume = 75} + +@article{DiestelT99, +author = {Reinhard Diestel and R. Thomas}, +title = {Excluding a countable clique}, +journal = jctb, volume = 76, year = 1999, pages = {41-67}} + +@book{Diestel00, +author = {Reinhard Diestel}, +title = {Graph theory}, +publisher = {Springer-Verlag}, +note = {2nd edition}, +year = 2000} + +@article{DiestelK04, +author = {Reinhard Diestel and Daniela K\"{u}hn}, +title = {Graph minor hierarchies}, +journal = dam, volume = 145, pages = {167-182}, year = 2004} + +@phdthesis{Dietz84, +author = {P. F. Dietz}, +title = {Intersection Graph Algorithms}, +year = 1984, +school = {Computer Science Dept., Cornell University}, +address = {Ithaca, N.Y.}} + +@inproceedings{DietzfelbingerKMMRT88, +author = {M. Dietzfelbinger and A. Karlin and K. Mehlhorn and F. +{Meyer auf der Heide} and H. Rohnert and R. E. Tarjan}, +title = {Dynamic Perfect Hashing: Upper and Lower Bounds}, +year = 1988, pages = {524-531}, booktitle = focs88 } + +%Dij + +@misc{DijkHS06, +author = {Thomas C. {van Dijk} and Jan-Pieter {van den Heuvel} and Wouter Slob}, +title = {Treewidth.com}, +year = 2006} + +@mastersthesis{Dijk07, +author = {Thomas C. {van Dijk}}, +title = {Fixed parameter complexity of feedback problems}, +school = {Utrecht University}, +year = 2007} + +@article{Dijkstra59, +author = {E. Dijkstra}, +title = {A note on two problems in connection with graphs}, +journal = {Numerische Mathematik}, volume = 1, year = 1959, pages = {269-271}} + +%Din + +%Ding 1992 + +@article{DingSS92, +author = {Guoli Ding and A. Schrijver and Paul D. Seymour}, +title = {Disjoint paths in a planar graph --- {A} general theorem}, +journal = sjdm, volume = 5, year = 1992, pages = {112-116}} + +%Ding 1995 + +@article{DingO95, +author = {Guoli Ding and Bogdan Oporowski}, +title = {Some results on tree decomposition of graphs}, +journal = jgt, volume = 20, pages = {481-499}, year = 1995} + +%Ding 1998 + +@article{DingOSV98, +author = {Guoli Ding and Bogdan Oporowski and Daniel P. Sanders and D. +Vertigan}, +title = {Partitioning graphs of bounded tree-width}, +journal = combinatorica, volume = 18, year = 1998, pages = {1-12}} + +%Ding 2000 + +@article{DingOSV00, +author = {Guoli Ding and Bogdan Oporowski and Daniel P. Sanders and D. +Vertigan}, +title = {Surfaces, tree-width, clique-minors, and partitions}, +journal = jctb, volume = 79, year = 2000, pages = {221-246}} + +%Ding 2001 + +@article{DingJS01, +author = {Guoli Ding and Thor Johnson and Paul Seymour}, +title = {Spanning trees with many leaves}, +journal = jgt, volume = 37, year = 2001, pages = {189-197}} + +%Dinitz 1993 + +@inproceedings{Dinitz93, +author = {E. Dinitz}, +title = {The 3-edge-components and a structural description of all 3-edge cuts in a graph}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {145-157}} + +%Dinitz 1994 + +@unpublished{Dinitz94, +author = {E. Dinitz}, +title = {The connectivity carcass of a vertex subset in a graph and its +incremental maintenance}, +year = 1994, +note = {Manuscript}} + +@unpublished{Dinneen92, +author = {Michael J. Dinneen}, +title = {A Linear Feedback Vertex Set Algorithm for Bounded Pathwidth Graphs}, +note = {Manuscript}, year = 1992} + +@phdthesis{Dinneen95, +author = {Michael John Dinneen}, +title = {Bounded Combinatorial Width and Forbidden Substructures}, +school = {University of Victoria}, +year = 1995 } + +@inproceedings{DinneenK00, +author = {Michael J. Dinneen and Bakhadyr Khoussainov}, +title = {Update networks and their routing strategies}, +booktitle = {Preproceedings WG'2000}, +pages = {65-74}, year = 2000} + +@article{DinneenCF01, +author = {M. J. Dinneen and K. Cattell and M. R. Fellows}, +title = {Forbidden minors to graphs with small feedback sets}, +journal = dm, volume = 130, pages = {215-252}, year = 2001} + +@article{DinskiZ99, +author = {Thomas Dinski and Xuding Zhu}, +title = {A bound for the game chromatic number of graphs}, +journal = dm, volume = 196, pages = {109-115}, year = 1999} + +%Dir + +@article{Dirac61, +author = {G.A. Dirac}, +title = {On rigid circuit graphs}, +journal = amsuh, volume = 25, year = 1961, pages = {71-76}} + +%Diw + +@article{Diwan00, +author = {A. Diwan}, +title = {Decomposing graphs with girth at least five under degree +constraints}, +journal = jgt, volume = 33, pages = {237-239}, year = 2000} + +%Dj + +%Dje + +@article{Djelloul09, +author = {Selma Djelloul}, +title = {Treewidth and logical definability of graph products}, +journal = tcs, volume = 410, pages = {696-710}, year = 2009} + +%Dji + +@article{Djidjev82, +author = {Hristo N. Djidjev}, +title = {On the problem of partititioning planar graphs}, +journal = sjadm, volume = 3, year = 1982, pages = {229-240}} + +@inproceedings{Djidjev88, +author = {Hristo N. Djidjev}, +title = {Linear algorithms for graph separation problems}, +editor = {Rolf G. Karlsson and Andzej Lingas}, +booktitle = swat88, publisher = lncs318, year = 1988, pages = {216-222}} + +@techreport{DjidjevG90, +author = {Hristo N. Djidjev and John R. Gilbert}, +title = {Separators in Graphs with Negative or Multiple Vertex +Weights}, +number = {CSL-90-8}, institution = {Xerox Corporation, Palo Alto}, +year = 1990 } + +@article{DjidjevV97, +author = {Hristo N. Djidjev and S. M. Venkatesan}, +title = {Reduced constants for simple cycle graph separation}, +journal = ai, volume = 34, pages = {231-243}, year = 1997} + +%Do + +%Doh + +@article{DohmenPT03, +author = {Klaus Dohmen and Andr\'{e} P\"{o}nitz and Peter Tittmann}, +title = {A new two-variable generalization of the chromatic polynomial}, +journal = dmtcs, year = 2004, pages = {69-90}, volume = 6} + +%Dol + +@article{DolamaS06, +author = {Mohammad Hosseini Dolama and \'{E}ric Sopena}, +title = {On the oriented chromatic number of {H}alin graphs}, +journal = ipl, volume = 98, year = 2006, pages = {247-252}} + +@techreport{DolevT82, +author = {D. Dolev and H. Trickey}, +title = {Embedding a Tree on a Line}, +institution = {IBM San Jose}, +year = 1982, +type = {IBM Techn. Report}, +number = {RJ3368} +} + +@article{DolevLT84, +author = {D. Dolev and T. Leighton and H. Trickey}, +title = {Planar embeddings of planar graphs}, +journal = {Adv. in Comput. Res.}, volume = 2, pages = {53-76}, year = 1984 } + +%Dom + +@inproceedings{DomLS09, +author = {Michael Dom and Daniel Lokshtanov and Saket Saurabh}, +title = {Incompressibility through colors and {IDs}}, +editor = {Susanne Albers and Alberto Marchetti-Spaccamela and Yossi Matias and Sotiris E. Nikoletseas and Wolfgang Thomas}, +booktitle = icalp09-1, year = 2009, pages = {378-389}, publisher = lncs5555} + +@inproceedings{DomLSV08, +author = {Michael Dom and Daniel Lokshtanov and Saket Saurabh and Yngve Villanger}, +title = {Capacitated domination and covering: A parameterized perspective}, +editor = {Martin Grohe and Rolf Niedermeier}, +booktitle = iwpec08, publisher = lncs5018, year = 2008, pages = {78-91}} + +@article{DomFHN08, +author = {Michael Dom and Jiong Guo and Falk H\"{u}ffner and Rolf +Niedermeier}, +title = {Closest 4-leaf power is fixed-parameter tractable}, +journal = dam, volume = 156, year = 2008, pages = {3345-3361}} + +%Don + +@article{Doner70, +author = {J. Doner}, +title = {Tree acceptors and some of their applications}, +journal = jcss, volume = 4, year = 1970, pages = {406-451}} + +%Dor + +%Dorn 2005 + +@inproceedings{DornPBF05, +author = {Frederic Dorn and Eelko Penninkx and Hans L. Bodlaender and Fedor V. Fomin}, +title = {Efficient exact algorithms on planar graphs: {E}xploiting sphere cut branch decompositions}, +booktitle = esa05, publisher = lncs3669, pages = {95-106}, year = 2005} + +%Dorn 2006 + +@inproceedings{Dorn06, +author = {Frederic Dorn}, +title = {Dynamic Programming and Fast Matrix Multiplication}, +booktitle = esa06, +publisher = lncs4168, pages = {280-291}, year = 2006} + +@inproceedings{DornT06, +author = {Frederic Dorn and Jan Arne Telle}, +title = {Two birds with one stone: the best of branchwidth and treewidth with one algorithm}, +editor = {Jos\'{e} R. Correa and Alejandro Hevia and Marcos A. Kiwi}, +booktitle = latin06, publisher = lncs3887, year = 2006, pages = {386-397}} + +%Dorn 2007 + +@inproceedings{Dorn07, +author = {Frederic Dorn}, +title = {How to Use Planarity Efficiently: New Tree-Decomposition Based Algorithms}, +editor = {Andreas Brandst\"{a}dt and Dieter Kratsch and Haiko M\"{u}ller}, +booktitle = wg07, publisher = lncs4769, year = 2007, pages = {280-291}} + +%Dorn 2008 + +@inproceedings{DornFT08, +author = {Frederic Dorn and Fedor V. Fomin and Dimitrios M. Thilikos}, +title = {Catalan structures and dynamic programming in $H$-minor-free graphs}, +booktitle = soda08, year = 2008, pages = {631-640}} + +%Dorn 2009 + +@article{DornT09, +author = {Frederic Dorn and Jan Arne Telle}, +title = {Semi-nice tree-decompositions: The best of branchwidth, treewidth and pathwidth with one algorithm}, +journal = dam, volume = 157, year = 2009, pages = {2737-2746}} + +%Dorn 2010 + +@article{Dorn10, +author = {Frederic Dorn}, +title = {Dynamic programming and planarity: Improved tree-decomposition based algorithms}, +journal = dam, volume = 158, year = 2010, pages = {800-808}} + +%Dou + +@article{DourisboureG07, +author = {Yon Dourisboure and Cyril Gavoille}, +title = {Tree-decompositions with bags of small diameter}, +journal = dm, volume = 307, year = 2007, pages = {2008-2029}} + +%Dow + +@inproceedings{DowK07, +author = {P. Alex Dow and Richard E. Korf}, +title = {Best-First search for treewidth}, +booktitle = aaai07, pages = {1146-1151}, publisher = {AAAI Press}, year = 2007} + +%Downey 1991 + +@article{DowneyF91b, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Fixed-Parameter Tractability and Completeness {II}: {O}n completeness for {$W[1]$}}, +journal = tcs, volume = 141, pages = {109-131}, year = 1995} + +%Downey 1992 + +@incollection{DowneyF92, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Fixed-Parameter Tractability and Completeness {III}: Some Structural +Aspects of the {$W$} Hierarchy}, +booktitle = {Complexity Theory}, year = 1993, editor = {K. Ambos-Spies and +S. Homer and U. Sch\"{o}ning}, publisher = {Cambridge University Press}, +pages = {191-226}} + +@article{DowneyF92a, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Fixed-Parameter Tractability and Completeness}, +year = 1992, journal = cn, volume = 87, pages = {161-178}} + +@inproceedings{DowneyF92b, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Fixed parameter intractability}, +booktitle = {Proceedings of the 7th Annual IEEE Conference on Structure in Complexity Theory}, +pages = {36-49}, year = 1992} + +%Downey 1993 + +@inproceedings{DowneyEF93, +author = {Rodney G. Downey and P. A. Evans and Michael R. Fellows}, +title = {Parameterized learning complexity}, +booktitle = {Proceedings 6th ACM Workshop on Computational Learning Theory, COLT'93}, +pages = {51-57}, year = 1993} + +@techreport{DowneyFKHW93, +author = {Rodney G. Downey and Michael R. Fellows and B. M. Kapron and +Michael T. Hallett and H. Todd Wareham}, +title = {The parameterized complexity of some problems in logic and linguistics}, +institution = {Department of Computer Science, University of Victoria}, +address = {Victoria, B.C., Canada}, +year = 1993, +type = {Technical Report}} + +@unpublished{DowneyF-1, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Parameterized computational feasibility}, +note = {To appear in Proc. Second Cornell Workshop on Feasible Mathematics (Birkhauser, Boston)}} + +%Downey 1995 + +@article{DowneyF95, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Fixed-Parameter Tractability and Completeness {I}: Basic Results}, +journal= siamjc, volume = 24, pages = {873-921}, year = 1995} + +@article{DowneyF95a, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Fixed-Parameter Tractability and Completeness {II}: On completeness for {$W[1]$}}, +journal = tcs, volume = 141, year = 1995, pages = {109-131}} + +%Downey 1997 + +@incollection{DowneyFS97, +author = {Rodney G. Downey and Michael R. Fellows and Ulrike Stege}, +title = {Parameterized Complexity: A Framework for Systematically Confronting Computational Intractability}, +booktitle = {DIMACS Series in Discrete Mathematics and Theoretical Computer Science}, +publisher = {American Mathematical Society}, +year = {1997}, +pages = {49--99}} + + +%Downey 1998 + +@book{DowneyF98, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Parameterized Complexity}, +publisher = {Springer}, +year = 1999} +%Remark: change year in 1999 + +@article{DowneyF98a, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Threshold dominating sets and an improved characterization of {$W[2]$}}, +journal = tcs, volume = 209, pages = {123-140}, year = 1998} + +%Downey 1999 + +@article{DowneyFS99, +author = {Rodney G. Downey and Michael R. Fellows and Ulrike Stege}, +title = {Computational Tractability: The View From Mars}, +journal = beatcs, volume = 69, year = 1999, pages = {73-97}} + +@book{DowneyF99, +author = {Rodney G. Downey and Michael R. Fellows}, +title = {Parameterized Complexity}, +publisher = {Springer}, +year = 1999} + +@article{DowneyFVW99, +author = {Rodney G. Downey and Michael R. Fellows and A. Vardi and G. Whitte}, +title = {The parameterized complexity of some fundamental problems in coding theory}, +journal = siamjc, volume = 29, year = 1999, pages = {545-570}} + +%Downey 2007 + +@article{DowneyM07, +author = {Rodney G. Downey and Catherine McCartin}, +title = {Online promise problems with online width metrics}, +journal = jcss, volume = 73, year = 2007, pages = {56-72}} + +%Downey 2008 + +@article{DowneyFMR08, +author = {Rodney G. Downey and Michael R. Fellows and Catherine McCartin and Frances A. Rosamond}, +title = {Paramterized approximation of dominating set problems}, +journal = ipl, volume = 109, year = 2008, pages = {68-70}} + +%Dr + +%Dra + +@techreport{DraganB93, +author = {Feodor F. Dragan and Andreas Brandst\"{a}dt}, +title = {$r$-{D}ominating cliques in {H}elly graphs and chordal graphs}, +institution = {Universit\"{a}t Duisburg GH}, +number = {SM-DU-228}, year = 1993} + +@article{DraganT10, +author = {Feodor F. Dragan and Chenyu Yan}, +title = {Collective tree spanners in graphs with bounded parameters}, +journal = alg, volume = 57, year = 2010, pages = {22-43}} + +%Dre + +@inproceedings{Dress??, +author = {A. W. M. Dress}, +title = {On the computational complexity of composite systems}, +editor = {L. Garrido}, +booktitle = {Fluctuations and stochastic phenomena +in condensed matter, Springer Lecture Notes in Physics 268}, +year = {???}} + +@inproceedings{DrewesK90, +author = {F. Drewes and {H.-J.} Kreowski}, +title = {A note on hyperedge replacement}, +editor = {Hartmut Ehrig and Manfred Nagl and Grzegorz Rozenberg}, +booktitle = gragra90, publisher = lncs532, pages = {1-12}, year = 1990} + +%Du + +%Duc + +@article{DuchonHLS06, +author = {Philippe Duchon and Nicolas Hanusse and Emmanuelle Lebhar and Nicolas Schabanel}, +title = {Can any graph be turned into a small-world}, +journal = tcs, volume = 355, pages = {96-103}, year = 2006} + +%Duf + +@article{DuffR83, +author = {Iain S. Duff and J. K. Reid}, +title = {The multifrontal solution of indefinite sparse symmetric linear equations}, +journal = {ACM Transactions on Mathematical Software}, +volume = 9, year = 1983, pages = {302-325}} + +@article{Duffin65, +author = {R. J. Duffin}, +title = {Topology of series-parallel graphs}, +journal = jmaa, volume = 10, year = 1965, pages = {303-318}} + +%Duj + +@article{DujmovicMW05, +author = {V. Dujmovi\'{c} and P. Morin and D. R. Wood}, +title = {Layout of graphs with bounded tree-width}, +journal = siamjc, volume = 34, year = 2005, pages = {554-579}} + +@article{DujmovicW05, +author = {V. Dujmovi\'{c} and D. R. Wood}, +title = {Stacks, queues and tracks: Layouts of graph subdivisions}, +journal = dmtcs, volume = 7, year = 2005, pages = {155-202}} + +@inproceedings{DujmovicW06, +author = {Vida Dujmovi\'{c} and David R. Wood}, +title = {Graph treewidth and geometric thickness parameters}, +editor = {Patrick Healy and Nikola S. Nikolov}, +booktitle = gd05, publisher = lncs3843, year = 2006, pages = {129 - 140}} + +%Dum + +@article{DumitrescuSZ08, +author = {Adrian Dumitrescu and Ichiro Suzuki and Pawel Zylinski}, +title = {Offline variants of the ''lion and man'' problem --- {S}ome problems +and techniques for measuring crowdedness and for safe path planning ---}, +journal = tcs, volume = 399, year = 2008, pages = {220-235}} + +%Dun + +@article{DunnK04, +author = {Charles Dunn and H. A. Kierstead}, +title = {A simple competitive graph coloring algorithm {II}}, +journal = jctb, volume = 90, year = 2004, pages = {93-106}} + +@article{DunnK04a, +author = {Charles Dunn and H. A. Kierstead}, +title = {A simple competitive graph coloring algorithm {III}}, +journal = jctb, volume = 90, year = 2004, pages = {137-150}} + +@article{DunnK04b, +author = {Charles Dunn and H. A. Kierstead}, +title = {The relaxed game chromatic number of outerplanar graphs}, +journal = jgt, volume = 46, year = 2004, pages = {69-78}} + +@article{Dunn07, +author = {Charles Dunn}, +title = {The relaxed game chromatic index of $k$-degenerate graphs}, +journal = dm, volume = 307, year = 2007, pages = {1767-1775}} + +%Dy + +@article{DyerF86, +author = {M. E. Dyer and A. M. Frieze}, +title = {Planar {3DM} is {NP}-complete}, +journal = ja, volume = 7, year = 1986, pages = {174-184}} + +%E + +%Ea + +%Ead + +@article{EadesLS93, +author = {P. Eades and X. Lin and W. F. Smyth}, +title = {A fast and effective heuristic for the feedback arc set problem}, +journal = ipl, volume = 47, year = 1993, pages = {319-323}} + +%Eas + +@article{EaswarakumarPC94, +author = {K. S. Easwarakumar and C. {Pandu Rangan} and G. A. Cheston}, +title = {A linear algorithm for centering a spanning tree of a biconnected graph}, +journal = ipl, volume = 51, year = 1994, pages = {121-124}} + +%Eb + +@book{Ebert81, +author = {J. Ebert}, +title = {Efficiente Graphenalgorithmen}, +publisher = {Akademische Verlagsgesellschaft}, +address = {Wiesbaden}, +year = 1981 } + +%Ed + +@article{Edenbrandt87, +author = {A. Edenbrandt}, +title = {Chordal graph recognition is in {NC}}, +journal = ipl, volume = 24, year = 1987, pages = {239-241}} + +@article{Edmonds65, +author = {J. Edmonds}, +title = {Paths, trees, and flowers}, +journal = canjm, volume = 17, pages = {445-467}, year = 1965} + +@article{Edwards86, +author = {K. Edwards}, +title = {The complexity of Coloring Problems on Dense Graphs}, +journal = tcs, volume = 16, year = 1986, pages = {337-343}} + +%Eh + +@techreport{EhrenfeuchtER93, +author = {Andrzej Ehrenfeucht and Joost Engelfriet and Grzegorz Rozenberg}, +title = {Finite Languages for the Representation of Graphs}, +year=1993, number = {93-03}, +institution = {Department of Computer Science, Leiden University}, address = {Leiden, The Netherlands}} + +%Ei + +%Eij + +@article{EijkhofBK07, +author = {Eijkhof, Frank {v}an {d}en and Hans L. Bodlaender and Arie M. C. A. Koster}, +title = {Safe reduction rules for weighted treewidth}, +journal = alg, volume = 47, year = 2007, pages = {138-158}} + +%Eil + +@article{EilamMZ02, +author = {T. Eilam and S. Moran and S. Zaks}, +title = {The complexity of the characterization of networks supporting shortest-path interval routing}, +journal = tcs, volume = 289, year = 2002, pages = {85-104}} + +%El + +%Ellis 1987 + +@techreport{EllisST87a, +author = {John A. Ellis and Ivan Hal Sudborough and J. Turner}, +title = {Graph Separation and Search Number}, +type = {Report}, +number = {DCS-66-IR}, institution = {University of Victoria}, +year = 1987 +} + +%Ellis 1989 + +@article{EllisMM89, +author = {John A. Ellis and Manrique Mata and Gary Mac{G}illivray}, +title = {A linear time algorithm for longest $(s,t)$-paths in weighted outerplanar graphs}, +journal = ipl, volume = 32, year = 1989, pages = {199-204}} + +%Ellis 1994 + +@article{EllisST94, +author = {John A. Ellis and Ivan Hal Sudborough and J. Turner}, +title = {The vertex separation and search number of a graph}, +journal =ic2, volume = 113, year = 1994, pages = {50-79}} + +%Ellis 2002 + +@inproceedings{EllisFF02, +author = {J. Ellis and H. Fan and M. R. Fellows}, +title = {The dominating set problem is fixed parameter tractable for graphs of bounded genus}, +booktitle = swat02, publisher = lncs2368, pages = {180-189}, year = 2002} + +%Ellis 2004 + +@article{EllisM04, +author = {John Ellis and Minko Markov}, +title = {Computing the vertex separation of unicyclic graphs}, +journal = ic2, volume = 192, year = 2004, pages = {123-161}} + +@article{EllisFF04, +author = {J. Ellis and H. Fan and M. R. Fellows}, +title = {The dominating set problem is fixed parameter tractable for graphs of bounded genus}, +journal = ja, year = 2004, volume = 52, pages = {152-168}} + +%Ellis 2008 + +@article{EllisW08, +author = {John Ellis and Robert Warren}, +title = {Lower bounds on the pathwidth of some grid-like graphs}, +journal = dam, volume = 156, year = 2008, pages = {545-555}} + +%ElM +%Elm + +@phdthesis{ElMallah87, +author = {E. S. El-{M}allah}, +title = {Decomposition and Embedding Problems for Restricted Networks}, +school = {University of Waterloo}, +year = 1987} + +@article{ElMallahC88, +author = {E. S. El-{M}allah and Charles J. Colbourn}, +title = {Partial $k$-tree algorithms}, +journal = cn, volume = 64, year = 1988, pages = {105-119}} + +%Em + +@inproceedings{EmdeBoas75, +author = {Peter {van Emde Boas}}, +title = {Preserving order in a forest in less than logarithmic time}, +booktitle = focs75, year = 1975, pages = {75-84}} + +@inproceedings{EmdeBoas82, +author = {Peter {van Emde Boas}}, +title = {Dominoes are forever}, +editor = {L. Priese}, +booktitle = {Proceedings of the 1st GTI Workshop, Paderborn Oct. 1982, Rheie Theoretische Informatik UGH}, +year = 1982, pages = {75-95}} + +@inproceedings{EmdeBoas97, +author = {Peter {van Emde Boas}}, +title = {The convenience of tilings}, +booktitle = {Complexity, Logic and Recursion Theory}, +editor = {A. Sorbi}, +publisher = {Lecture Notes in Pure and Applied Mathematics, vol. 187, Marcel +Dekker Inc.}, +year = 1997, +pages = {331-363}} + +%En + +@article{EngelG03, +author = {Konrad Engel and Sven Guttmann}, +title = {Testing bandwidth for $k$-connected graphs}, +journal = sjdm, volume = 16, year = 2003, pages = {301-312}} + +%Engelfriet 1987 + +@unpublished{EngelfrietLW87, +author = {Joost Engelfriet and George Leih and Emo Welzl}, +title = {Characterization and Complexity of Boundary Graph Languages}, +year = 1987, +note = {Manuscript}, +remark = {Among many other results, it is shown that for given $k$ and +$d$, the set of all (connected) graphs of tree-width $\leq k$ and degree +$leq d$ is in LOG(CF)} +} + +%Engelfriet 1991 + +@article{EngelfrietH91, +author = {Joost Engelfriet and Linda Heyker}, +title = {The String Generating Power of Context-Free Hypergraph Grammars}, +journal = jcss, volume = 43, number = 2, year = 1991, pages = {328-360}} + +@article{EngelfrietHL91, +author = {Joost Engelfriet and Linda M. Heyker and G. Leih}, +title = {Context-free graph languages of bounded degree are generated by {A}pex graph grammars}, +journal = ai, volume = 31, year = 1994, pages = {341-378}} + +%Engelfriet 1992 + +@inproceedings{Engelfriet92, +author = {Joost Engelfriet}, +title = {A {G}reibach normal form for context-free graph grammars}, +editor = {W. Kuich}, +booktitle = icalp92, publisher = lncs623, pages = {138-149}, year = 1992} + +@article{EngelfrietH92, +author = {Joost Engelfriet and Linda Heyker}, +title = {Context-free hypergraph grammars have the same term-generating power as attribute grammars}, +journal = ai, volume = 29, pages = {161-210}, year = 1992} + +%Engelfriet 1993 + +@techreport{EngelfrietHPG93, +author = {Joost Engelfriet and T. Harju and Andrzej Proskurowski and G. +Rozenberg}, +title = {Survey on Graphs as 2-structures and Parallel Complexity of +Decomposition}, +type = {Technical Report}, +institution ={Department of Computer Science, Leiden University}, +year = 1993, number = {93-06}} + +@techreport{EngelfrietV93, +author = {Joost Engelfriet and Jan Joris Vereijken}, +title = {Context-Free Graph Grammars and Concatenation of Graphs}, +type = {Technical Report}, +institution ={Department of Computer Science, Leiden University}, +year = 1993, number = {93-06}} + +%Engelfriet 1996 + +@techreport{Engelfriet96, +author = {Joost Engelfriet}, +title = {Context-Free Graph Grammars}, +type = {Technical Report}, +institution ={Department of Computer Science, Leiden University}, +year = 1996, number = {96-32}} + +%Enr + +@article{EnrightS07, +author = {Jessica Enright and Lorna Stewart}, +title = {Subtree filament graphs are subtree overlap graphs}, +journal = ipl, volume = 104, year = 2007, pages = {228-232}} + +%Ep + +%Epp + +%Eppstein 1992 + +@article{Eppstein92, +author = {David Eppstein}, +title = {Parallel recognition of series parallel graphs}, +journal = ic2, volume = 98, pages = {41-55}, year = 1992} + +%Eppstein 1999 + +@article{Eppstein99, +author = {David Eppstein}, +title = {Subgraph isomorphism in planar graphs and related problems}, +journal = jgaa, volume = 3, pages = {1-27}, year = 1999} + +%Eppstein 2000 + +@article{Eppstein00, +author = {David Eppstein}, +title = {Diameter and treewidth in minor-closed graph families}, +journal = alg, volume = 27, year = 2000, pages = {275-291}} + +%Eppstein 2001 + +@inproceedings{Eppstein01, +author = {David Eppstein}, +title = {Small maximal independent sets and faster exact graph coloring}, +editor = {Frank K. H. A. Dehne and J\"{o}rg-R\"{u}diger Sack and Roberto Tamassia}, +booktitle = wads01, publisher = lncs2125, year = 2001, pages = {462-470}} + +%Eppstein 2003 + +@article{Eppstein03, +author = {David Eppstein}, +title = {Small maximal independent sets and faster exact graph +coloring}, +xJOURNAL = {J. Graph Algorithms Appl.}, +journal = jgaa, volume = 7, year = 2003, pages = {131-140}} + +%Eppstein 2003 + +@inproceedings{Eppstein04, +author = {David Eppstein}, +title = {Quasiconvex analysis of backtracking algorithms}, +booktitle = soda04, year = 2004, pages = {781-790}} + +%Er + +%Erd + +@article{ErdosS35, +author = {Paul Erd\"{o}s and G. Szekeres}, +title = {A combinatorial problem in geometry}, +journal = {Compos. Math.}, volume = 2, year = 1935, pages = {464-470}} + +@article{ErdosK63, +author = {Paul Erd\"{o}s and Paul Kelly}, +title = {The minimal regular graph containing a given graph}, +journal = amm, volume = 70, pages = {1074-1075}, year = 1963} + +@article{ErdosP65, +author = {Paul Erd\"{o}s and L. P\'{o}sa}, +title = {On the independent circuits contained in a graph}, +journal = canjm, volume = 17, pages = {347-352}, year = 1965} + +@article{ErdosGK91, +author = {Paul Erd\"{o}s and John Gimbel and Dieter Kratsch}, +title = {Some extremal results in cochromatic and dichromatic theory}, +year = 1991, journal = jgt, volume = 15, number = 6, pages = {579-585}} + +%Erl + +@inproceedings{ErlebachL08, +author = {Thomas Erlebach and Erik Jan van Leeuwen}, +title = {Domination in geometric intersection graphs}, +editor = {Eduardo Sany Laber and Claudson F. Bornstein and Loana Tito Nogueira and Luerbio Faria}, +booktitle = latin08, year = 2008, publisher = lncs4957, pages = {747-758}} + +%Es + +%Esp + +@inproceedings{EspelageGW01, +author = {Wolfgang Espelage and Frank Gurski and Egon Wanke}, +title = {Deciding clique-width for graphs of bounded treewidth}, +editor = {Frank K. H. A. Dehne and J\"{o}rg-R\"{u}diger Sack and Roberto Tamassia}, +year = 2001, pages = {87-98}, booktitle = wads01, publisher = lncs2125} + +@article{EspelageGW03, +author = {Wolfgang Espelage and Frank Gurski and Egon Wanke}, +title = {Deciding clique-width for graphs of bounded treewidth}, +journal = jgaa, volume = 7, year = 2003, pages = {141-180}} + +%Est + +@inproceedings{Estivill-CastroFLR05, +author = {Vladimir Estivill-Castro and Michael R. Fellows and Michael A. Langston and Frances A. Rosamond}, +title = {FPT is {P}-time extremal structure {I}}, +editor = {Hajo Broersma and Matthew Johnson and Stefan Szeider}, +booktitle = acid05, publisher = {King's College, London}, +series = {Text in Algorithms}, volume = 4, year = 2005, pages = {1-41}} + +%Esw + +@article{EswaranT76, +author = {Kapali P. Eswaran and R. Endre Tarjan}, +title = {Augmentation Problems}, +journal = siamjc, volume = 5, year = 1976, pages = {653-665}} + +%Ev + +@article{Evans91, +author = {G. A. Evans}, +title = {Combinatoric strategies for genome mapping}, +journal = {Bioassays}, volume = 13, year = 1991, pages = {39-44}} + +@inproceedings{EvenK75, +author = {Simon Even and O. Kariv}, +title = {An {O}($n^{2.5}$) Algorithm for Maximum Matching in General +Graphs}, +booktitle = focs75, year = 1975, pages = {100-112}} + +@article{EvenT75, +author = {Simon Even and Robert Endre Tarjan}, +title = {Network flow and testing graph connectivity}, +journal = siamjc, volume = 4, year = 1975, pages = {507-518}} + +@article{EvenT76, +author = {S. Even and R. E. Tarjan}, +title = {A combinatorial problem which is complete in polynomial +space}, +journal = jacm, volume = 23, year = 1976, pages = {710-719}} + +@article{EvenT76a, +author = {S. Even and R. E. Tarjan}, +title = {Computing an $st$-numbering}, +journal = tcs, volume = 2, year = 1976, pages = {339-344}} + +@book{Even79, +title = {Graph Algorithms}, +author = {Simon Even}, +year = 1979, +publisher = {Pitman}, +address = {London} +} + +@article{EvenNRS99, +author = {G. Even and J. Naor and S. Rao and B. Schieber}, +title = {Fast approximate graph partitioning algorithms}, +journal = siamjc, volume = 28, year = 1999, pages = {2187-2214}} + +%F + +%Fa + +%Fai + +@techreport{FaigleK90, +author = {U. Faigle and W. Kern}, +title = {The Game Chromatic Number of Trees is 4}, +type = {Memorandum}, number = {871}, year = 1990, +institution = {Department of Applied Mathematics, University of +Twente}, address = {Enschede, The Netherlands}} + +@article{FaigleKKT93, +author = {U. Faigle and W. Kern and H. Kierstead and W. T. Trotter}, +title = {On the Game Chromatic Number of Some Classes of Graphs}, +journal = arscomb, volume = 35, pages = {143-150}, year = 1993} + +%Far + +@article{Farber82, +author = {M. Farber}, +title = {Independent domination in chordal graphs}, +journal = orl, volume = 1, year = 1982, pages = {134-138}} + +@article{Farber83, +author = {M. Farber}, +title = {Characterizations of strongly chordal graphs}, +journal = dm, volume = 43, pages = {173-189}, year = 1983 } + +@article{Farber84, +author = {M. Farber}, +title = {Domination, independent domination, and duality in strongly +chordal graphs}, +journal = dam, volume = 7, year = 1984, pages = {115-130}} + +@article{FarberK85, +author = {M. Farber and J. Mark Keil}, +title = {Domination in permutation graphs}, +journal = ja, volume = 6, year = 1985, pages = {309-321}} + +@article{FarberHHM86, +author = {Martin Farber and Ge\~na Hahn and Pavol Hell and Donald Miller}, +title = {Concerning the achromatic number of graphs}, +journal = jctb, volume = 40, year = 1986, pages = {21-39}} + +@article{FarleyP80, +author = {A. M. Farley and A. Proskurowski}, +title = {Computation of the Center and Diameter of Outerplanar Graphs}, +journal = dam, volume = 2, year = 1980, pages = {185-191}} + +@article{Farley81, +author = {A. M. Farley}, +title = {Networks immune to isolated failures}, +journal = netw, volume = 11, pages = {255-268}, year = 1981} + +@article{FarleyHP81, +author = {A. M. Farley and S. Hedetniemi and A. Proskurowski}, +title = {Partitioning Trees: Matching, Domination, and Maximum diameter}, +journal = ijcis, volume = 10, pages = {55-61}, number = 1, year = 1985} + +@article{FarleyP82, +author = {A. M. Farley and A. Proskurowski}, +title = {Networks immune to isolated line failures}, +journal = netw, volume = 12, pages = {393-403}, year = 1982} + +%Fat + +@article{FathFS02, +author = {K. Fath and P. Flocchini and S. Pierre}, +title = {Compact routing in chordal grids and other networks}, +journal = {INFOR: Information Systems and Operational Research}, +volume = 40, year = 2002, pages = {119-130}} + +%Fe + +%Fed + +@article{FederHKNP05, +author = {Tom\'{a}s Feder and Pavol Hell and Sulamita Klein and Loana Tito Nogueira and F\'{a}bio Protti}, +title = {List partitions of chordal graphs}, +journal = tcs, volume = 349, pages = {52-66}, year = 2005} + +%Fei + +%Feige 2000 + +@inproceedings{Feige00, +author = {U. Feige}, +title = {Coping with the {NP}-hardness of the graph bandwidth problem}, +editor = {Magn\'{u}s M. Halld\'{o}rsson}, +booktitle = swat00, publisher = lncs1851, year = 2000, pages = {10-19}} + +%Feige 2005 + +@inproceedings{FeigeHL05, +author = {U. Feige and M. Hajiaghayi and J. R. Lee}, +title = {Improved approximation algorithms for minimum-weight vertex separators}, +booktitle = stoc05, pages = {563-572}, publisher = {ACM Press}, +year = 2005} + +%Feige 2006 + +@inproceedings{FeigeM06, +author = {Uriel Feige and Mohammad Mahdian}, +title = {Finding small balanced separators}, +year = 2006, pages = {375-384}, booktitle = stoc06, +publisher = {ACM Press}, addres = {New York}} + +%Feige 2009 + +@article{FeigeT09, +author = {Uriel Feige and Kunal Talwar}, +title = {Approximating the bandwidth of caterpillars}, +journal = alg, volume = 55, year = 2009, pages = {190-204}} + +%Fel + +%Fellows + +@misc{FellowsPC, +author = {Michael R. Fellows}, +note = {Personal communication}} + +%Fellows 1987 + +@unpublished{FellowsHS87, +author = {Michael R. Fellows and F. Hickling and Maciej M. Sys{\l}o}, +title = {A Topological Parameterization and Hard Graph Problems}, +year = 1987, +note = {Presented at Boca Raton, Florida. Final paper in preparation.}} + +@article{FellowsL87, +author = {Michael R. Fellows and Michael A. Langston}, +title = {Nonconstructive advances in polynomial-time complexity}, +year = 1987, journal = ipl, volume = 26, pages = {157-162}} + +@article{FellowsL87a, +author = {Michael R. Fellows and Michael A. Langston}, +title = {Nonconstructive tools for proving polynomial-Time +decidability}, +year = 1988, +journal = jacm, volume = 35, pages = {727-739}} + +@inproceedings{FellowsL87b, +author = {Michael R. Fellows and Michael A. Langston}, +title = {Layout Permutation Problems and Well-Partially-Ordered Sets}, +year = 1988, +booktitle = {5th MIT Conf. on Advanced Research in VLSI}, +address = {Cambridge, MA}, +publisher = lncs319, +editor = {J. Reif}, +pages = {315-327} +} + +%Fellows 1988 + +@article{FellowsFL88, +author = {Michael R. Fellows and Donald K. Friesen and Michael A. +Langston}, +title = {On finding optimal and near-optimal lineal spanning trees}, +journal = alg, volume = 3, year = 1988, pages = {549-560}} + +@inproceedings{FellowsL88, +author = {Michael R. Fellows and Michael A. Langston}, +title = {On search, decision and the efficiency of polynomial-time algorithms}, +booktitle = stoc89, pages = {501-512}, year = 1989 } + +@inproceedings{FellowsL88a, +author = {Michael R. Fellows and Michael A. Langston}, +title = {Fast self-reduction algorithms for combinatorial problems of {VLSI} design}, +editor = {John H. Reif}, +booktitle = {Proceedings of the 3rd Aegean Workshop on Computing, AWOC'88}, +year = 1988, pages = {278-287}, publisher = lncs319} + +@techreport{FellowsL88a+, +author = {Michael R. Fellows and Michael A. Langston}, +title = {Fast Search Algorithms for Graph Layout Permutation Problems}, +number = {CS-88-189}, +institution = {Dept. of Computer Science, Washington State University}, +year = 1988 +} + +%Fellows 1989 + +@misc{Fellows89, +author = {Michael R. Fellows}, +note = {Personal communication}, +year = 1989 } + +@article{Fellows89a, +author = {Michael R. Fellows}, +title = {The {R}obertson-{S}eymour theorems: {A} survey of applications}, +journal = {Contemporary Mathematics}, volume = 89, year = 1989, pages = {1-18}} + +@unpublished{FellowsA89, +author = {Michael R. Fellows and Karl R. Abrahamson}, +title = {Cutset-Regularity Beats Well-Quasi-Ordering for Bounded Treewidth}, +note = {Manuscript}, +year = 1989 } + +@inproceedings{FellowsKL89, +author = {Michael R. Fellows and N. G. Kinnersley and Michael A. Langston}, +title = {Finite-basis theorems, and a computational integrated approach to obstruction set isolation}, +editor = {E. Kaltofen and S. M. Watt}, +booktitle = {Proceedings of the 3rd Conference on Computers and Mathematics}, +publisher = {Springer Verlag}, address = {New York}, +pages = {37-45}, +year = 1989 } + +@inproceedings{FellowsL89, +author = {Michael R. Fellows and Michael A. Langston}, +title = {An analogue of the {M}yhill-{N}erode theorem and its use in computing finite-basis characterizations}, +booktitle = focs89, year = 1989, pages = {520-525}} + +@unpublished{FellowsL89a, +author = {Michael R. Fellows and Michael A. Langston}, +title = {Exploiting {RS}-posets: Constructive Algorithms from Nonconstructive tools}, +note = {Preprint}, year = 1989, month = {2}, pages = {1-7}} + +@unpublished{Fellows89b, +author = {Michael R. Fellows}, +title = {Application of an Analoque of the {Myhill-Nerode} Theorem in Obstruction Set Computation}, +year = 1989, +note = {preprint}, pages = {1-12}} + +@unpublished{Fellows89c, +author = {Michael R. Fellows}, +title = {Regular Languages and Software Engineering Principles}, +note = {Draft manuscript}, +year = 1989, month = {4}, pages = {1-10}} + +@unpublished{FellowsS89, +author = {Michael R. Fellows and Sam Stueckle}, +title = {The Immersion Order, Forbidden Subgraphs and the Complexity of Network Integrity}, +year = 1989, +note = {Manuscript, to appear in J. Comb. Math. Comb. Comput.} +} + +%Fellows 1991 + +@incollection{FellowsKMP91, +author = {Michael R. Fellows and Jan Kratochv{\'{\i}}l and Matthias +Middendorf and Frank Pfeiffer}, +title = {Induced Minors and Related Problems}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint +Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147.}, +pages = {179-182}, +year = 1993} + +@article{FellowsL91, +author = {Michael R. Fellows and Michael A. Langston}, +title = {Fast search algorithms for layout permutation problems}, +journal = {International Journal on Computer Aided VLSI Design}, volume = 3, year = 1991, +pages = {325-340}} + +@inproceedings{FellowsL91a, +author = {Michael R. Fellows and Michael A. Langston}, +title = {Constructivity Issues in Graph Algorithms}, +booktitle = {Conference on Constructivity in Computer Science, San Antonio, Texas}, +year = 1991} + +%Fellows 1992 + +@article{FellowsL92, +author = {Michael R. Fellows and Michael A. Langston}, +title = {On Well-Partial-Order Theory and Its Application to +Combinatorial Problems of {VLSI} Design}, +journal = sjdm, volume = 5, year = 1992, pages = {117-126}} + +%Fellows 1993 + +@inproceedings{FellowsHW93, +author = {Michael R. Fellows and Michael T. Hallett and H. Todd Wareham}, +title = {{DNA} Physical Mapping: Three Ways Difficult (extended abstract)}, +editor = {Thomas Lengauer}, +booktitle = esa93, year = 1993, pages = {157-168}, publisher = lncs726} + +@techreport{FellowsH93, +author = {Michael R. Fellows and Donovan R. Hare}, +title = {Vertex Transversals That Dominate}, +institution = {University of Victoria}, +year = 1993} + +@article{FellowsK91, +author = {Michael R. Fellows and P. Kaschube}, +title = {Searching for {$K_{3,3}$} in Linear Time}, +journal = {Linear and Multilinear Algebra}, volume = 29, year = 1991, pages = {279-290}} + +@inproceedings{FellowsK93, +author = {Michael R. Fellows and N. Koblitz}, +title = {Fixed-parameter complexity and cryptography}, +booktitle = {Proceedings of the 10th International +Conference on Algebraic Algorithms and Error-Correcting Codes, AAECC 10, +Lecture Notes in Computer Science}, +year = 1993} + +%Fellows 1994 + +@article{FellowsL94, +author = {Michael R. Fellows and Michael A. Langston}, +title = {On search, decision and the efficiency of polynomial-time +algorithms}, +journal = jcss, year = 1994, volume = 49, pages = {769-779}} + +%Fellows 2006 + +@inproceedings{Fellows06, +author = {Micahel R. Fellows}, +title = {The lost continent of polynomial time: Preprocessing and kernelization}, +editor = {Hans L. Bodlaender and Michael A. Langston}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {267-277}} + +@inproceedings{FellowsRRS06, +author = {Michael R. Fellows and Frances A. Rosamond and Udi Rotics and Stefan +Szeider}, +title = {Clique-width minimization is {NP}-hard}, +booktitle = stoc06, +pages = {354-362}, year = 2006} + +@unpublished{FellowsLRR06, +author = {Michael R. Fellows and Michael A. Langston and M. Ragan and +Frances A. Rosamond}, +title = {Kernelization for Convex Recoloring of Trees}, +year = 2006, +note = {Unpublished manuscript}} + +%Fellows 2008 + +@article{FellowsKNRRSTW08, +author = {Michael R. Fellows and Christian Knauer and Naomi Nishimura and Prabhakar Ragde and Frances A. Rosamond +and Ulrike Stege and Dimitrios M. Thilikos and Sue Whitesides}, +title = {Faster fixed-parameter tractable algorithms for matching and packing problems}, +journal = alg, volume = 52, year = 2008, pages = {167-176}} + +@inproceedings{FellowsLMRS08, +author = {Michael R. Fellows and Daniel Lokshtanov and Neeldhara Misra and Frances A. Rosamond and Saket Saurabh}, +title = {Graph layout problems parameterized by vertex cover}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {294-305}} + +%Fellows 2009 + +@article{FellowsHRV09, +author = {Michael R. Fellows and Danny Hermelin and Frances Rosamond and St\'{e}phane Vialette}, +title = {On the parameterized complexity of multiple-interval graph problems}, +journal = tcs, volume = 410, year = 2009, pages = {53-61}} + +%Fels + +@article{Felsenstein82, +author = {J. Felsenstein}, +title = {Numerical methods for inferring evolutionary trees}, +journal = {The Quaterly Review of Biology}, volume = 57, number = 4, year = 1982} + +@inproceedings{Felsner93, +author = {S. Felsner}, +title = {Tolerance graphs and orders}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {17-26}} + +%Fer + +%Feremans + +@phdthesis{Feremans01, +author = {C. Feremans}, +title = {Generalized Spanning Trees and Extensions}, +school = {Universit\'{e} Libre de Bruxelles}, +address = {Brussels, Belgium}, year = 2001} + +@article{FeremansLL03, +author = {C. Feremans and M. Labb\'{e} and G. Laporte}, +title = {Generalized network design problems}, +journal = ejor, volume = 148, year = 2003, pages = {1-13}} + +@techreport{FeremansG04, +author = {C. Feremans and A. Grigoriev}, +title = {Approximation schemes for the generalized geometric problems with +geographic clustering}, +type = {METEOR Research Memoranda}, +number = {RM/04/034}, +institution = {FdEWB, University of Maastricht}, +address = {Maastricht, the Netherlands}, +year = 2004, +note = {http://www.personeel/unimaas.nl/a.grigoriev/research/curved.pdf}} + +%Fern + +@article{FernandesLW09, +author = {Cristina G. Fernandes and Orlando Lee and Yoshiko Wakabayashi}, +title = {Minimum cycle cover and {C}hinese postman problems on mixed graphs of +bounded treewidth}, +journal = dam, volume = 157, year = 2009, pages = {272-279}} + +%Fernandez-Baca 1988 + +@unpublished{FernandezBacaS88, +author = {David Fern\'{a}ndez-Baca and Giora Slutzki}, +title = {Algorithms for Counting and Enumeration in Decomposable Graphs}, +year = 1988, +note = {Manuscript}} + +%Fernandez-Baca 1989 + +@article{FernandezBaca89, +author = {David Fern\'{a}ndez-Baca}, +title = {Allocating modules to processors in a distributed system}, +journal = ieeetse, volume = {15}, year = 1989, pages = {1427-1436}} + +@article{FernandezBacaM89, +author = {David Fern\'{a}ndez-Baca and Charles U. Martel}, +title = {On the efficiency of maximum-flow algorithms on networks with +small integer capacities}, +journal = alg, year = 1989, volume = 4, pages = {173-189}} + +@article{FernandezBacaS89, +author = {David Fern\'{a}ndez-Baca and Giora Slutzki}, +title = {Solving parametric problems on trees}, +journal = ja, year = 1989, volume = 10, pages = {381-402}} + +%Fernandez-Baca 1993 + +@article{FernandezBacaM93, +author = {David Fern\'{a}ndez-Baca and A. Medipalli}, +title = {Parametric Module Allocation on Partial $k$-Trees}, +journal = ieeetc, year = 1993, volume = 42, pages = {738-742}} + +%Fernandez-Baca 1994 + +@article{FernandezBacaS94, +author = {David Fern\'{a}ndez-Baca and Giora Slutzki}, +title = {Parametic Problems on Graphs of Bounded Treewidth}, +journal = ja, volume = 16, pages = {408-430}, year = 1994} + +@inproceedings{FernandezBacaS94a, +author = {David Fern\'{a}ndez-Baca and Giora Slutzki}, +title = {Optimal parametric search on graphs of bounded treewidth}, +editor = {Erik Meineche Schmidt and Sven Skyum}, +booktitle = swat94, pages = {155-166}, publisher = lncs824, year = 1994} + +%Fernandez-Baca 1997 + +@article{FernandezBacaS97, +author = {David Fern\'{a}ndez-Baca and Giora Slutzki}, +title = {Optimal parametric search on graphs of bounded treewidth}, +journal = ja, volume = 22, pages = {212-240}, year = 1997} + +@inproceedings{FerranteR79, +author = {J. Ferrante and C. Rackoff}, +title = {The computational complexity of logical theories}, +booktitle = {Lecture Notes in Mathematics 718}, +publisher = {Springer-Verlag}, address = {Berlin}, year = 1979} + +%Fernau 2001 + +@article{FernauN01, +author = {Henning Fernau and Rolf Niedermeier}, +title = {An efficient exact algorithm for constraint bipartite vertex +cover}, +journal = ja, volume = 38, pages = {374-410}, year = 2001} + +%Fernau 2004 + +@inproceedings{FernauJ04, +author = {Henning Fernau and David W. Juedes}, +title = {A Geometric Approach to Parameterized Algorithms for Domination Problems on Planar Graphs}, +editor = {Jir\'{\i} Fiala and V{\'a}clav Koubek and Jan Kratochv\'{\i}l}, +booktitle = mfcs04, year = 2004, publisher = lncs3153, pages = {488-499}} + +%Fernau 2006 + +@inproceedings{Fernau06, +author = {Henning Fernau}, +title = {Edge Dominating Set: Efficient enumeration-based exact algorithms}, +editor = {Hans L. Bodlaender and Michael A. Langston}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {140-151}} + +%Fernau 2008 + +@article{Fernau08, +author = {Henning Fernau}, +title = {Parameterized algorithms for linear arrangement problems}, +journal = dam, volume = 156, year = 2008, pages = {3166-3177}} + +%Fernau 2009 + +@inproceedings{FernauFLRSV09, +author = {Henning Fernau and Fedor V. Fomin and Daniel Lokshtanov and Daniel Raible and Saket Saurabh and Yngve Villanger}, +title = {Kernel(s) for problems with no kernel: On out-trees with many leaves (Extended abstract)}, +editor = {Susanne Albers and Jean-Yves Marion}, +series = {Dagstuhl Seminar Proceedings}, +publisher = {Leibniz-Zentrum f\"{u}r Informatik}, +address = {Schloss Dagstuhl, Germany}, +volume = {09001}, +booktitle = stacs09, pages = {421-432}, year = 2009} + +@article{FernauRS09, +author = {Henning Fernau and Juan A. Rodr{\'{\i}}guez and Jos\'{e} M. Sigarreta}, +title = {Offensive $r$-alliances in graphs}, +journal = dam, volume = 157, year = 2009, pages = {177-182}} + +%Fernau 2010 + +@article{Fernau10, +author = {Henning Fernau}, +title = {Minimum dominating set of queens: A trivial programming exercise?}, +journal = dam, volume = 157, year = 2010, pages = {308-318}} + +@article{Fernau10a, +author = {Henning Fernau}, +title = {Parameterized algorithms for {$d$-Hitting Set}: The weighted case}, +journal = tcs, volume = 411, year = 2010, pages = {1698-1713}} + +%Fert + +@article{FertinR07, +author = {Guillaume Fertin and Andr\'{e} Raspaud}, +title = {$L(p,q)$ labeling of $d$-dimensional grids}, +journal = dm, volume = 307, year = 2007, pages = {2132-2140}} + +%Fes + +@inproceedings{FestaPR99, +author = {P. Festa and P. M. Pardalos and M. G. C. Resende}, +title = {Feedback set problems}, +editor = {D. Z. Du and P. M. Pardalos}, +booktitle = {Handbook of Combinatorial Optimization, Vol. A.}, +publisher = {Kluwer}, address = {Amsterdam, the Netherlands}, +year = 1999, pages = {209-258}} + +%Fi + +%Fia + +@article{FialaKK01, +author = {J. Fiala and Ton Kloks and J. Kratochv{\'{\i}}l}, +title = {Fixed-parameter complexity of $\lambda$-labelings}, +journal = dam, volume = 113, year = 2001, pages = {59-72}} + +@article{FialaJLS03, +author = {J. Fiala and K. Jansen and V. B. Le and E. Seidel}, +title = {Graph subcolorings: {C}omplexity and algorithms}, +journal = sjdm, volume = 16, pages = {635-650}, year = 2003} + +%Fig + +@article{deFigueiredoFKS07, +author = {C.M.H. {de Figueiredo} and L. Faria and S. Klein and R. Sritharan}, +title = {On the complexity of the sandwich problems for strongly chordal +graphs and chordal bipartite graphs}, +journal = tcs, volume = 381, year = 2007, pages = {57-67}} + +%Fil + +@inproceedings{FilottiMR79, +author = {I. S. Filotti and Gary L. Miller and John Reif}, +title = {On determining the Genus of a Graph in {$O(V^{O(g)})$} Steps}, +publisher = {ACM Press}, address = {New York}, +booktitle = stoc79, year = 1979, pages = {27-37}} + +%Fio + +@article{Fiorini75, +author = {S. Fiorini}, +title = {On the chromatic index of outerplanar graphs}, +journal = jctb, volume = 18, year = 1975, pages = {35-38}} + +@book{FioriniW77, +author = {S. Fiorini and R. J. Wilson}, +title = {Edge-colorings of Graphs}, +publisher = {Pitman}, +address = {London}, +year = 1977 +} + +%Fis + +@article{FishburnF82, +author = {J. P. Fishburn and R. A. Finkel}, +title = {Quotient networks}, +journal = ieeetc, volume = {C-31}, year = 1982, pages = {288-295}} + +@article{FishburnR03, +author = {Peter C. Fishburn and Fred S. Roberts}, +title = {No-hole {$L$}(2,1)-colorings}, +journal = dam, volume = 130, year = 2003, pages = {513-519}} + +@article{FischerMR08, +author = {E. Fischer and J.A. Makowsky and E.V. Ravve}, +title = {Counting truth assignments of formulas of bounded tree-width +or clique-width}, +journal = dam, volume = 156, year = 2008, pages = {511-529}} + +%Fit + +@article{Fitch81, +author = {W. M. Fitch}, +title = {A non-sequential method for constructing trees and hierarchical classifications}, +journal = {Journal of Molecular Evolution}, volume = 18, year = 1981, pages = {30-37}} + +%Fl + +%Fla + +@techreport{FlamminiLM95, +author = {M. Flammini and J. {van Leeuwen} and A. Marchetti-Spaccamela}, +title = {The Complexity of Interval Routing on Random Graphs}, +type = {Technical Report}, +number = {UU-CS-1995-16}, +institution = {Utrecht University}, +year = 1991} + +%Fle + +@article{FleinerIM07, +author = {Tamas Fleiner and Robert W. Irving and David F. Manlove}, +title = {Efficient algorithms for generalized Stable Marriage and +Roommates problems}, +journal = tcs, volume = 381, year = 2007, pages = {162-176}} + +@inproceedings{FleischerWY09, +author = {Rudolf Fleischer and Xi Wu and Liwei Yuan}, +title = {Experimental study of {FPT} algorithms for the directed feedback +vertex set problem}, +editor = {Amos Fiat and Peter Sanders}, +booktitle = esa09, publisher = lncs5757, year = 2009, +pages = {611-622}} + +%Flo + +@inproceedings{FlocchiniMS08, +author = {Paola Flocchini and Bernard Mans and Nicola Santoro}, +title = {Tree decontamination with temporary immunity}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {330-341}} + +@article{FloreenKKO05, +author = {P. Flor\'een and P. Kaski and J. Kohonen and P. Orponen}, +title = {Exact and approximate balanced data gathering in +energy-constrained sensor networks}, +journal = tcs, volume = 344, number = 1, year = 2005, pages = {30-46}} + +%Flu + +@phdthesis{Fluiter97, +author = {Babette de Fluiter}, +title = {Algorithms for Graphs of Small Treewidth}, +school = {Utrecht University}, +year = 1997} + +@misc{FluiterB97, +author = {Babette de Fluiter and Hans L. Bodlaender}, +title = {Parallel algorithms for treewidth two}, +editor = {Rolf H. M\"{o}hring}, +booktitle = wg97, year = 1997, publisher = lncs1335, pages = {157-170}} + +@article{FlumFG02, +author = {J\"{o}rg Flum and M. Frick and Martin Grohe}, +title = {Query evaluation via tree-decomposition}, +journal = jacm, volume = 49, pages = {716-751}, year = 2002} + +@book{FlumG06, +author = {J\"{o}rg Flum and Martin Grohe}, +title = {Parameterized Complexity Theory}, +publisher = {Springer}, year = 2006} + +%Fo + +%Fom + +%Fomin 1998 + +@article{Fomin98, +author = {Fedor V. Fomin}, +title = {Helicopter search problems, bandwidth and pathwidth}, +journal = dam, volume = 85, year = 1998, pages = {59-70}} + +%Fomin 1999 + +@article{Fomin99, +author = {Fedor V. Fomin}, +title = {Note on a helicopter search problem on graphs}, +journal = dam, volume = 95, year = 1999, pages = {241-249}} + +%Fomin 2000 + +@article{FominG00, +author = {Fedor V. Fomin and Petr A. Golovach}, +title = {Interval completion and graph searching}, +journal = sjdm, volume = 13, year = 2000, pages = {454-464}} + +%Fomin 2002 + +@techreport{FominT02, +author = {F. V. Fomin and D. M. Thilikos}, +title = {New upper bounds on the decomposability of planar graphs and fixed +paramater algorithms}, +year = 2002, +institution = {Universitat Polit\`ecnica de Catalunya}, +number = {LSI-02-56-R}, +type = {Technical Report}, +address = {Spain}} + +%Fomin 2003 + +@article{Fomin03, +author = {Fedor V. Fomin}, +title = {Pathwidth of planar and line graphs}, +journal = gc, volume = 19, year = 2003, pages = {91-99}} + +@article{FominG03, +author = {Fedor V. Fomin and Petr A. Golovach}, +title = {Interval degree and bandwidth of a graph}, +journal = dam, volume = 129, pages = {345-359}, year = 2003} + +@inproceedings{FominHT03, +author = {Fedor V. Fomin and Pinar Heggernes and Jan Arne Telle}, +title = {Graph searching, elimination trees, and a generalization of bandwidth}, +editor = {Andrzej Lingas and Bengt J. Nilsson}, +booktitle = fct03, year = 2003, publisher = lncs2751, pages = {73-85}} + +@article{FominT03, +author = {Fedor V. Fomin}, +title = {On the monotonicity of games generated by symmetric submodular functions}, +journal = dam, volume = 131, pages = {323-335}, year = 2003} + +@inproceedings{FominT03a, +author = {Fedor V. Fomin and Dimitrios M. Thilikos}, +title = {Dominating sets and local treewidth}, +booktitle = esa03, publisher = lncs2832, year = 2003, pages = {221-229}} + +@techreport{FominT03b, +author = {F. V. Fomin and D. M. Thilikos}, +title = {A Simple and Fast Approach for Solving Problems on Planar Graphs}, +year = 2003, +institution = {Department of Informatics, University of Bergen}, +number = {258}, +type = {Technical Report}, +address = {Bergen, Norway}} + +@inproceedings{FominT03c, +author = {Fedor V. Fomin and Dimitrios M. Thilikos}, +title = {Dominating sets in planar graphs: Branch-width and exponential speedup}, +booktitle = soda03, year = 2003, pages = {168-177}} + +%Fomin 2004 + +@techreport{FominFT04, +author = {F. V. Fomin and P. Fraigniaud and D. M. Thilikos}, +title = {The Price of Connectedness in Expansions}, +year = 2004, +institution = {Universitat Polit\`ecnica de Catalunya}, +number = {LSI-04-28-R}, +type = {Technical Report}, +address = {Spain}} + +@inproceedings{FominKT04, +author = {Fedor V. Fomin and Dieter Kratsch and Ioan Todinca}, +title = {Exact (exponential) algorithms for treewidth and minimum fill-in}, +editor = {Josep D{\'{\i}}az and Juhani Karhum\"{a}ki and Arto Lepist\"{o} and Donald Sanella}, +booktitle = icalp04, publisher = lncs3142, pages = {568-580}, year = 2004} + +@article{FominKM04, +author = {Fedor V. Fomin and Dieter Kratsch and Haiko M\"{u}ller}, +title = {Algorithms for graphs with small octopus}, +journal = dam, volume = 134, year = 2004, pages = {105-128}} + +@inproceedings{FominKW04, +author = {Fedor V. Fomin and Dieter Kratsch and Gerhard J. Woeginger}, +title = {Exact (exponential) algorithms for the dominating set problem}, +editor = {Juraj Hromkovi\u{c} and Manfred Nagl and Bernhard Westfechtel}, +booktitle = wg04, pages = {245-256}, year = 2004, publisher = lncs3353} + +@inproceedings{FominMT05, +author = {Fedor V. Fomin and F. Mazoit and Ioan Todinca}, +title = {Computing branchwidth via efficient triangulations and blocks}, +editor = {Dieter Kratsch}, +booktitle = wg05, year = 2005, publisher = lncs3787, pages = {374-384}} + +@inproceedings{FominT04, +author = {Fedor V. Fomin and Dimitrios M. Thilikos}, +title = {A simple and fast approach for solving problems on planar graphs}, +booktitle = stacs04, year = 2004, publisher = lncs2996, pages = {56-67}} + +@inproceedings{FominT04b, +author = {Fedor V. Fomin and Dimitrios M. Thilikos}, +title = {Fast parameterized algorithms for graphs on surfaces: Linear kernel and exponential speedup}, +editor = {Josep D{\'{\i}}az and Juhani Karhum\"{a}ki and Arto Lepist\"{o} and Donald Sanella}, +booktitle = icalp04, year = 2004, publisher = lncs3142, pages = {581-592}} + +%Fomin 2005 + +@inproceedings{FominGPS05, +author = {Fedor V. Fomin and Fabrizio Grandoni and A. Pyatkin and A. A. Stepanov}, +title = {Bounding the number of minimal dominating sets: a measure and conquer approach}, +editor = {Xiaotie Deng and Ding-Zhu Du}, +booktitle = isaac05, publisher = lncs3827, year = 2005, pages = {192-203}} + +@article{FominGK05, +author = {Fedor V. Fomin and Fabrizio Grandoni and Dieter Kratsch}, +title = {Some new techniques in design and analysis of exact (exponential) algorithms}, +journal = beatcs, volume = 87, year = 2005, pages = {47-77}} + +@inproceedings{FominGK05a, +author = {Fedor V. Fomin and Fabrizio Grandoni and Dieter Kratsch}, +title = {Measure and conquer: Domination --- a case study}, +editor = {Lu{\'{\i}}s Caires and Giuseppe F. Italiano and Lu{\'{\i}}s Monteiro and +Catuscia Palamidessi and Moti Yung}, +booktitle = icalp05, publisher = lncs3580, year = 2005, pages = {191-203}} + +%Fomin 2006 + +@inproceedings{FominGK06, +author = {Fedor V. Fomin and Fabrizio Grandoni and Dieter Kratsch}, +title = {Measure and conquer: a simple {$O(2^{0.288n})$} independent set algorithm}, +booktitle = soda06, year = 2006, pages = {18-25}} + +@inproceedings{FominGK06a, +author = {Fedor V. Fomin and Fabrizio Grandoni and Dieter Kratsch}, +title = {Solving connected dominating set faster than $2^n$}, +editor = {S. Arun-Kumar and Naveen Garg}, +booktitle = fsttcs06, year = 2006, pages = {152-163}, +publisher = lncs4337} + +@inproceedings{FominGP06, +author = {Fedor V. Fomin and Serge Gaspers and Christian Knauer}, +title = {Finding a minimum feedback vertex set in time {$O(1.7548^n)$}}, +editor = {Hans L. Bodlaender and Michael A. Langston}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {183-191}} + +@article{FominH06, +author = {Fedor V. Fomin and Kjartan H{\o}ie}, +title = {Pathwidth of cubic graphs and exact algorithms}, +journal = ipl, volume = 97, year = 2006, pages = {191-196}} + +@article{FominT06, +author = {Fedor V. Fomin and Dimitrios M. Thilikos}, +title = {New upper bounds on the decomposability of planar graphs}, +journal = jgt, volume = 51, year = 2006, pages = {53-81}} + +@article{FominT06a, +author = {Fedor V. Fomin and Dimitrios M. Thilikos}, +title = {Approximation of pathwidth of outerplanar graphs}, +journal = jda, volume = 4, year = 2006, pages = {499-510}} + +@article{FominT06c, +author = {Fedor V. Fomin and Dimitrios M. Thilikos}, +title = {Dominating sets in planar graphs: Branch-width and exponential speedup}, +journal = siamjc, volume = 36, year = 2006, pages = {281-309}} + +%Fomin 2008 + +@inproceedings{FominGHMEW08, +author = {Fedor V. Fomin and Petr A. Golovach and Alexander Hall and Mat\'{u}s Mihal\'{a}k and Elias Vicari and Peter Widmayer}, +title = {How to guard a graph}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {318-329}} + +@article{FominKTV08, +author = {Fedon V. Fomin and Dieter Kratsch and Ioan Todinca and Yngve Villanger}, +title = {Exact algorithms for treewidth and minimum fill-in}, +journal = siamjc, volume = 38, year = 2008, pages = {1058-1079}} + +@article{FominT08, +author = {Fedor V. Fomin and Dimitrios M. Thilikos}, +title = {An annotated bibliography on guaranteed graph searching}, +journal = tcs, volume = 399, year = 2008, pages = {236-245}} + +@inproceedings{FominV08, +author = {Fedor V. Fomin and Yngve Villanger}, +title = {Treewidth computation and extremal combinatorics}, +editor = {Luca Aceto and Ivan Damg{\aa}rd and Leslie Ann Goldberg and +Magn\'{u}s M. Halld\'{o}rsson and Anna Ing\'{o}lfsd\'{o}ttir and Igor Walukuewics}, +booktitle = icalp08-1, year = 2008, publisher = lncs5125, pages = {210-221}} + +%Fomin 2009 + +@article{FominFN09, +author = {Fedor V. Fomin and Pierre Fraigniaud and Nicolas Nisse}, +title = {Nondeterministic graph searching: From pathwidth to treewidth}, +journal = alg, volume = 53, year = 2009, pages = {358-373}} + +@article{FominGK09, +author = {Fedon V. Fomin and Fabrizio Grandoni and Dieter Kratsch}, +title = {A measure {\&} conquer approach for the analysis of exact algorithms}, +journal = jacm, volume = 56, year = 2009, number = 5} + +@article{FominGKKL09, +author = {Fedor V. Fomin and Petr A. Golovach and Jan Kratochv\'il and Dieter Kratsch and Mathieu Liefloff}, +title = {Sort and Search: Exact algorithms for generalized domination}, +journal = ipl, volume = 109, year = 2009, pages = {795-798}} + +@article{FominGSS09, +author = {Fedor V. Fomin and Serge Gaspers and Saket Saurabh and Alexey A. Stepanov}, +title = {On two techniques of combining branching and treewidh}, +journal = alg, volume = 54, year = 2009, pages = {181-207}} + +@unpublished{FominV09, +author = {Fedor V. Fomin and Yngve Villanger}, +title = {Finding induced subgraphs via minimal triangulations}, +year = 2009, +note = {Report, published on http://arxiv.org/abs/0909.5278}} + +%Fomin 2010 + +@article{FominGKLS10, +author = {Fedor V. Fomin and Serge Gaspers and Dieter Kratsch and Mathieu Liedloff and Saket Saurabh}, +title = {Iterative compression and exact algorithms}, +journal = tcs, volume = 411, year = 2010, pages = {1045-1053}} + +@article{FominGKNS10, +author = {Fedor V. Fomin and Petr A. Golovach and Jan Kratochv\'il and Nicolas Nisse and Karol Suchan}, +title = {Pursuing a fast robber on a graph}, +journal = tcs, volume = 411, year = 2010, pages = {1167-1181}} + +@unpublished{FominGLS10, +author = {Fedor V. Fomin and Petr A. Golovach and Daniel Lokshtanov and Saket Saurabh}, +title = {Algorithmic lower bounds for problems parameterized by clique-width}, +year = 2009, +note = {To appear in Proceedings SODA 2010}} + +@unpublished{FominLST10, +author = {Fedor V. Fomin and Daniel Lokshtanov and Saket Saurabh and Dimitrios M. Thilikos}, +title = {Bidimensionality and Kernels}, +year = 2009, +note = {To appear in Proceedings SODA 2010}} + +%For + +@inproceedings{Fortnow97, +author = {L. Fortnow}, +title = {Counting complexity}, +booktitle = {Complexity Theory Retrospective II}, +editor = {L. A. Hemaspaandra and A. Selman}, +publisher = {Springer-Verlag}, +year = 1997, +pages = {81-107}} + +@inproceedings{FortnowS08, +author = {Lance Fortnow and Rahul Santhanam}, +title = {Infeasibility of instance compression and succinct {PCPs} for {NP}}, +booktitle = stoc08, year = 2008, pages = {133-142}, +publisher = {ACM Press}, addres = {New York}} + +@article{FortuneHW80, +author = {S. Fortune and J. E. Hopcroft and J. Wyllie}, +title = {The directed subgraph homeomorphism problem}, +journal = {J. Theoret. Comput. Sci. ??????}, volume = 10, +pages = {111-121}, year = 1980} +%Check the journal. Is is TCS? + +%Fot + +@inproceedings{FotakisNPS00, +author = {D. A. Fotakis and S. E. Nikoletseas and V. G. Papadopoulou and P. G. Spirakis}, +title = {{NP}-completeness results and efficient approximations for radiocoloring in planar graphs}, +editor = {Mogens Nielsen and Branislav Rovan}, +booktitle = mfcs00, publisher = lncs1893, year = 2000, pages = {363-372}} + +@article{FotatisNPS05, +author = {D. A. Fotakis and S. E. Nikoletseas and V. G. Papadopoulou and P. G. Spirakis}, +title = {Radiocoloring in planar graphs: {C}omplexity and approximations}, +journal = tcs, volume = 340, year = 2005, pages = {457-644}} + +%Fr + +%Fra + +%Fraenkel 1978 + +@inproceedings{FraenkelGJSY78, +author = {A. S. Fraenkel and M. R. Garey and D. S. Johnson and T. Schaefer and Y. Yesha}, +title = {The complexity of checkers on an $n \times n$ board --- preliminary version}, +booktitle = focs78, year = 1978, pages = {55-64}} + +%Fraenkel 1979 + +@article{FraenkelY79, +author = {A. S. Fraenkel and Y. Yesha}, +title = {Complexity of problems in games, graphs and algebraic equations}, +year = 1979, journal = dam, volume = 1, pages = {15-30}} + +%Fraenkel 1981 + +@article{FraenkelL81, +author = {A. S. Fraenkel and D. Lichtenstein}, +title = {Computing a perfect strategy for $n$ by $n$ chess requires time exponential in $n$}, +journal = jctA, volume = 31, year = 1981, pages = {199-214}} + +%Fraenkel 1982 + +@article{FraenkelY82, +author = {A. S. Fraenkel and Y. Yesha}, +title = {Theory of annihilation games {I}}, +journal = jctb, volume = 33, year = 1982, pages = {60-86}} + +%Fraenkel 1987 + +@article{FraenkelG87, +author = {A. S. Fraenkel and E. Goldschmidt}, +title = {Pspace-hardness of some combinatorial games}, +journal = jctA, volume = 46, year = 1987, pages = {21-38}} + +%Fraenkel 1988 + +@misc{Fraenkel88, +author = {A. S. Fraenkel}, +title = {Selected bibliography on two-player combinatorial games and some related material}, +year = 1988 } + +%Fraenkel 1992 + +@unpublished{FraenkelSU92, +author = {Aviezri S. Fraenkel and Edward R. Scheinerman and Daniel Ullman}, +title = {Undirected Edge Geography}, +year = 1992, +note = {Manuscript}} + +@techreport{FraenkelKS92, +author = {A. S. Fraenkel and A. Kotzig and G. Sabidussi}, +title = {Modular Nim}, +year = 1992, +institution = {The Weizmann Institute of Science}, +address = {Rehovot, Israel}, +number = {CS92-02}, +type = {Technical Report}} + +%Fraenkel 1993 + +@article{FraenkelS93, +author = {A. S. Fraenkel and S. Simonson}, +title = {Geography}, +journal = tcs, volume = 110, year = 1993, pages = {197-214}} + +%Fraigniaud + +@techreport{FraigniaudG94, +author = {P. Fraigniaud and C. Gavoille}, +title = {Interval Routing Schemes}, +institution = {Centre de Recerca Matem\`{a}tica, Institut d'Estudes Catalans}, +address = {Barcelona, Spain}, +number = {251}, +year = 1994} + +@article{FraigniaudG06, +author = {Pierre Fraigniaud and Cyril Gavoille}, +title = {Header-size lower bounds for end-to-end communication in memoryless networks}, +journal = cnet, volume = 50, year = 2006, pages = {1630-1638}} + +@article{FraigniaudN08, +author = {Pierre Fraigniaud and Nicolas Nisse}, +title = {Monotony properties of connected visible graph searching}, +journal = ic2, volume = 206, year = 2008, pages = {1383-1393}} + +%Fran + +@inproceedings{Frank90, +author = {Andr\'{a}s Frank}, +title = {Augmenting graphs to meet edge-connectivity requirements}, +booktitle = focs90, pages = {708-718}, year = 1990} + +@article{Frankl87, +author = {P. Frankl}, +title = {Cops and robbers in graphs with large girth and {C}ayley graphs}, +pages = {301-305}, year = 1987, journal = dam, volume = 17 } + +@article{FranklinGY00, +author = {Matthew Franklin and Zvi Galil and Moti Yung}, +title = {Eavesdropping games: A graph-theoretic approach to privacy in distributed systems}, +journal = jacm, volume = 47, year = 2000, pages = {225-243}} + +%Fre + +%Frederickson 1981 + +@article{FredericksonJ81, +author = {Greg N. Frederickson and J. {Ja'Ja}}, +title = {Approximation algorithms for several graph augmentation problems}, +journal = siamjc, volume = 10, year = 1981, pages = {270-283}} + +%Frederickson 1983 + +@article{FredericksonJ83, +author = {Greg N. Frederickson and D. B. Johnson}, +title = {Finding $k$th path and $p$-centers by generating and searching good data structures}, +journal = ja, volume = 4, year = 1983, pages = {61-80}} + +%Frederickson 1987 + +@article{Frederickson87, +author = {Greg N. Frederickson}, +title = {Fast algorithms for shortest paths in planar graphs}, +journal = siamjc, volume = 16, year = 1987, pages = {1004-1022}} + +@unpublished{FredericksonH87, +author = {Greg N. Frederickson and Suzanne E. Hambrusch}, +title = {Planar Linear Arrangement of Outerplanar Graphs}, +year = 1987, +note = {Manuscript}, +address = {Dept. of Computer Sciences, Purdue University} +} + +%Frederickson 1988 + +@article{FredericksonJ88, +author = {Greg N. Frederickson and R. Janardan}, +title = {Designing networks with compact routing tables}, +journal = alg, volume = 3, year = 1988, pages = {171-190}} + +%Frederickson 1992 + +@unpublished{Frederickson92, +author = {Greg N. Frederickson}, +title = {Ambivalent data structures for dynamic 2-edge-connectivity and $k$ smallest spanning trees}, +note = {Manuscript}, year = 1992} + +%Frederickson 1993 + +@inproceedings{Frederickson93a, +author = {Greg N. Frederickson}, +title = {A data structure for dynamically maintaining rooted trees}, +booktitle = soda93, pages = {175-184}, year = 1993} + +%Frederickson 1997 + +@article{Frederickson97, +author = {Greg N. Frederickson}, +title = {A data structure for dynamically maintaining rooted trees}, +journal = ja, volume = 24, pages = {37-65}, year = 1997} + +%Frederickson 1998 + +@article{Frederickson98, +author = {Greg N. Frederickson}, +title = {Maintaining regular properties dynamically in $k$-terminal graphs}, +journal = ja, volume = 33, year = 1999, pages = {244-266}} + +@article{FrederikssonM06, +author = {Kimmo Fredriksson and Maxim Mozgovoy}, +title = {Efficient parameterized string matching}, +journal = ipl, volume = 100, year = 2006, pages = {91-96}} + +@article{Fredman76, +author = {M. L. Fredman}, +title = {New bounds on the complexity of the shortest path problem}, +journal = siamjc, volume = 5, year = 1976, pages = {276-287}} + +%Fren + +@article{FrendrupHRV09, +author = {Allan Frendrup and Michael A. Henning and Bert Randerath and Preben +Dahl Vestergaard}, +title = {An upper bound on the domination number of a graph with minimum +degree 2}, +journal = dm, volume = 309, year = 2009, pages = {639-646}} + +%Fri + +@article{FrickG01, +author = {M. Frick and M. Grohe}, +title = {Deciding first-order properties of locally tree-decomposable +structures}, +journal = jacm, volume = 48, year = 2001, pages = {1184-1206}} + +@article{Frick04, +author = {Markus Frick}, +title = {Generalized model-checking over locally tree-decomposable classes}, +journal = tcs, volume = 37, year = 2004, pages = {157-191}} + +@article{FriedmanRS87, +author = {Harvey Friedman and Neil Robertson and Paul D. Seymour}, +title = {The Metamathematics of the Graph Minor Theorem}, +year = 1987, +journal = cm, volume = 65, pages = {229-261}} + +@article{Frieze87, +author = {A. M. Frieze}, +title = {Parallel Algorithms for Finding {H}amiltonian Cycles in +Random Graphs}, +journal = ipl, year = 1987, pages = {111-117}} + +%Fu + +%Fuj + +@article{FujiiKN69, +author = {M. Fujii and T. Kasami and K. Ninomiya}, +title = {Optimal sequencing of two equivalent processors}, +journal = sjam, volume = 17, year = 1969, pages = {784-789}, +note = {Erratum. SIAM J. Appl. Math. 20 (1971) 141.}} + +@article{FujitaN08, +author = {Shinya Fujita and Tomoki Nakamigawa}, +title = {Balanced decomposition of a vertex-colored graph}, +journal = dam, volume = 156, year = 2008, pages = {3339-3344}} + +%Ful + +@article{FulkersonG65, +author = {D. R. Fulkerson and O. A. Gross}, +title = {Incidence matrices and interval graphs}, +journal = {Pacific Journal of Mathetics}, volume = 15, year = 1965, pages = {835-855}} + +%Fur + +@inproceedings{Furer07, +author = {Martin F\"{u}rer}, +title = {Faster integer multiplication}, +year = 2007, +booktitle = stoc07} + +@article{FurstGM88, +author = {Merrick L. Furst and Jonathan L. Gross and Lyle A. +{McGeoch}}, +title = {Finding a Maximum-Genus Graph Imbedding}, +journal = jacm, volume = 35, year = 1988, pages = {523-534}} + +%G + +%Ga + +%Gaa + +@phdthesis{Gaag90, +author = {Linda C. {van der Gaag}}, +title = {Probability-Based Models for Plausible Reasoning}, +school = {University of Amsterdam}, +year = 1990 } + +@inproceedings{GaagBF04, +author = {Linda C. {van der Gaag} and Hans L. Bodlaender and Ad Feelders}, +title = {Monotonicity in {B}ayesian Networks}, +editor = {David Maxwell Chickering and Joseph Y. Halpern}, +booktitle = uai04, pages = {569-576}, year = 2004, publisher = {AUAI Press}} + +%Gab + +@article{GaborHS89, +author = {C. P. Gabor and W. L. Hsu and K. J. Supowit}, +title = {Recognizing circle graphs in polynomial time}, +journal = jacm, volume = 36, year = 1989, pages = {435-473}} + +%Gabow 1982 + +@article{GabowK82, +author = {H. Gabow and O. Kariv}, +title = {Algorithms for edge coloring bipartite graphs and multigraphs}, +journal = siamjc, volume = 11, year = 1982, pages = {117-129}} + +%Gabow 1983 + +@inproceedings{Gabow83, +author = {Harold N. Gabow}, +title = {An efficient reduction technique for degree-constrained subgraph and bidirected network flow problems}, +booktitle = stoc83, year = 1983, pages = {448-456}} + +%Gabow 1986 + +@article{GabowGST86, +author = {H. N. Gabow and Z. Galil and T. Spencer and R. E. Tarjan}, +title = {Efficient algorithms for finding minimum spanning trees in undirected and directed graphs}, +journal = comb, volume = 6, year = 1986, pages = {106-122}} + +%Gabow 1992 + +@article{GabowW92, +author = {H. N. Gabow and H. H. Westermann}, +title = {Forests, Frames, and Games: Algorithms for Matroid Sums and Applications}, +journal = alg, volume = 7, pages = {465-498}, year = 1992} + +%Gabow 2000 + +@inproceedings{Gabow00, +author = {H. N. Gabow}, +title = {Using expander graphs to find vertex connectivity}, +booktitle = focs00, year = 2000, pages = {410-420}} + +%Gabow 2004 + +@inproceedings{Gabow04, +author = {Harold N. Gabow}, +title = {Finding paths and cycles of superpolylogarithmic length}, +booktitle = stoc04, year = 2004, pages = {407-416}} + +%Gabow 2008 + +@inproceedings{GabowN08, +author = {Harold N. Gabow and Shuxin Nie}, +title = {Finding long paths, cycles, and circuits}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {752-763}} + +%Gal + +@article{GaleS62, +author = {D. Gale and L. Shapley}, +title = {College admissions and the stability of marriage}, +journal = amm, volume = 69, year = 1962, pages = {9-15}} + +@article{GaleS85, +author = {D. Gale and M. Sotomayor}, +title = {Some remarks on the stable matching problem}, +journal = dam, volume = 11, year = 1985, pages = {223-232}} + +@article{GalilKS89, +author = {Zvi Galil and Ravi Kannan and Endre Szemer\'{e}di}, +title = {On nontrivial separators for $k$-page graphs and simulations by nondeterministic one-tape {T}uring machines}, +journal = jcss, volume = 38, year = 1989, pages = {134-149}} + +@article{GalloGT89, +author = {Giorgio Gallo and Michael D. Grigoriadis and Robert Endre Tarjan}, +title = {A fast parametric maximum flow algorithm and applications}, +journal = siamjc, volume = 18, year = 1989, pages = {30-55}} + +%Gan + +@article{GanianH10, +author = {Robert Ganian and Petr Hlin\v{e}n\'{y}}, +title = {On parse trees and {M}yhill-{N}erode-type tools for handling graphs of bounded rank-width}, +journal = dam, volume = 158, year = 2010, pages = {851-867}} + +@article{Ganjali03, +author = {Y. Ganjali}, +title = {Optimum multi-dimensional interval routing schemes on networks with dynamic cost links}, +journal = {Computing and Informatics}, volume = 22, year = 2003, pages = {1-17}} + +@techreport{GanleyH95, +author = {Joseph L. Ganley and Lenwood S. Heath}, +title = {The pagenumber of \mbox{$k$-trees} is {$O(k)$}}, +institution = {Department of Computer Science, Virginia Tech}, +number = {TR--95--17}, +address = {Blacksburg, Virginia}, +year = 1995} + +@article{GanleyH01, +author = {Joseph L. Ganley and Lenwood S. Heath}, +title = {The pagenumber of {$k$}-trees is {$O(k)$}}, +journal = dam, volume = 109, year = 2001, pages = {215-221}} + +%Gar + +@inproceedings{Garbe95, +author = {Renate Garbe}, +title = {Tree-width and path-width of comparability graphs of interval orders}, +editor = {Ernst W. Mayr and Gunther Schmidt and Gottfried Tinhofer}, +booktitle = wg94, publisher = lncs903, year = 1995, pages = {26-37}} + +%Garey 1976 + +@article{GareyJ76, +author = {Michael R. Garey and David S. Johnson}, +title = {The complexity of near-optimal graph coloring}, +journal = jacm, volume = 23, pages = {43-49}, year = 1976} + +@article{GareyJS76, +author = {Michael R. Garey and David S. Johnson and L. Stockmeyer}, +title = {Some simplified {NP}-complete graph problems}, +journal = tcs, volume = 1, year = 1976, pages = {237-267}} + +%Garey 1977 + +@article{GareyJ77, +author = {Michael R. Garey and David S. Johnson}, +title = {The rectilinear {S}teiner tree problem is {NP}-complete}, +journal = sjam, volume = 32, year = 1977, pages = {826-834}} + +%Garey 1978 + +@article{GareyGJK78, +author = {Michael R. Garey and R. L. Graham and David S. Johnson and D. E. Knuth}, +title = {Complexity Results for Bandwidth Minimization}, +year = 1978, journal = sjam, volume = 34, pages = {477-495}} + +%Garey 1979 + +@book{GareyJ79, +author = {Michael R. Garey and David S. Johnson}, +title = {Computers and Intractability, A Guide to the Theory of {NP}-Completeness}, +publisher = {W.H. Freeman and Company}, +year = 1979, +address = {New York} +} + +%Garey 1980 + +@article{GareyJMP80, +author = {Michael R. Garey and David S. Johnson and Gary L. Miller and Christos H. Papadimitriou}, +title = {The complexity of coloring circular arcs and chords}, +journal = sjadm, volume = 1, year = 1980, pages = {216-227}} + +%Garey 1983 + +@article{GareyJ83, +author = {Michael R. Garey and David S. Johnson}, +title = {Crossing number is {NP}-complete}, +journal = sjadm, volume = 4, year = 1983, pages = {312-316}} + +%Garg + +@inproceedings{Garg95, +author = {A. Garg}, +title = {On drawing angle graphs}, +editor = {R. Tamassia and I. G. Tollis}, +booktitle = gd94, publisher = lncs894, year = 1995, pages = {84-95}} + +@phdthesis{Garg96, +author = {Ashim Garg}, +title = {Where to Draw the Line}, +school = {Department of Computer Science, Brown University}, +year = 1996} + +@inproceedings{GargK98, +author = {N. Garg and J. K\"onemann}, +title = {Faster and Simpler Algorithms for Multi-commodity Flow and +Other Fractional Packing Problems}, +booktitle = focs98, year = 1998, pages = {300-309}} + +%Gas + +@inproceedings{GaspersKL06, +author = {Serge Gaspers and Dieter Kratsch and Mathieu Liedloff}, +title = {Exponential time algorithms for the minimum dominating set problem on some graph classes}, +editor = {Lars Arge and Rusins Freivalds}, +booktitle = swat06, pages = {148-159}, year = 2006, publisher = lncs4059} + +@inproceedings{GaspersL06, +author = {Serge Gaspers and Mathieu Liedloff}, +title = {A branch-and-reduce algorithm for finding a minimum independent dominating Set in graphs}, +editor = {Fedor V. Fomin}, +booktitle = wg06, year = 2006, pages = {78-89}, publisher = lncs4271} + +%Gav + +@inproceedings{Gavoille97, +author = {Cyril Gavoille}, +title = {On the dilation of interval routing}, +editor = {Igor Privara and Peter Ruzicka}, +booktitle = mfcs97, publisher = lncs1295, pages = {259-268}, year = 1997} + +@article{Gavoille00, +author = {Cyril Gavoille}, +title = {A survey on interval routing}, +journal = tcs, volume = 245, pages = {217-253}, year = 2000} + +@article{Gavril72, +author = {F{\u{a}}nic\u{a} Gavril}, +title = {Algorithms for minimum coloring, maximum clique, minimum +covering by cliques, and maximum independent set of a chordal graph}, +journal = siamjc, volume = 1, year = 1972, pages = {180-187}} + +@article{Gavril74, +author = {F{\u{a}}nic\u{a} Gavril}, +title = {The intersection graphs of subtrees in trees are exactly + the chordal graphs}, +journal = jctb, year = 1974, volume = 16, pages = {47-56}} + +@article{Gavril74b, +author = {F{\u{a}}nic\u{a} Gavril}, +title = {An algorithm for testing chordiality of graphs}, +journal = ipl, volume = 3, pages = {110-112}, year = 1974 } + +@article{Gavril75, +author = {F{\u{a}}nic\u{a} Gavril}, +title = {A recognition algorithm for the intersection graphs of +directed paths in directed trees}, +journal = dm, volume = 13, year = 1975, pages = {237-249}} + +@article{Gavril78, +author = {F{\u{a}}nic\u{a} Gavril}, +title = {A recognition algorithm for the intersection graphs of paths + in trees}, +journal = dm, volume = 23, pages = {211-227}, year = 1978 } + +@unpublished{Gavril88, +author = {F{\u{a}}nic\u{a} Gavril}, +title = {A Graph Partition Problem Related to {2-CNFSAT}}, +year = 1988, +note = {Draft paper} +} + +@article{Gavril08, +author = {F{\u{a}}nic\u{a} Gavril}, +title = {Minimum weight feedback vertex sets in circle graphs}, +journal = ipl, volume = 107, year = 2008, pages = {1-6}} + +%Ge + +%Gee + +%Geelen 2000 + +@article{Geelen00, +author = {James F. Geelen}, +title = {An algebraic matching algorithm}, +journal = comb, volume = 20, year = 2000, pages = {61-70}} + +%Geelen 2002 + +@article{GeelenGW02, +author = {J. F. Geelen and A. M. H. Gerards and G. Whittle}, +title = {Branch width and well-quasi-ordering in matroids and graphs}, +journal = jctb, volume = 84, pages = {270-290}, year = 2002} + +%Geelen 2003 + +@article{GeelenGRW03, +author = {J. F. Geelen and A. M. H. Gerards and N. Robertson and G. Whittle}, +title = {On the excluded minors for the matroids of branch-width $k$}, +journal = jctb, volume = 88, pages = {261-265}, year = 2003} + +%Geelen 2006 + +@article{GeelenGRW06, +author = {J. Geelen and B. Gerards and N. Robertson and G. Whittle}, +title = {Obstructions to branch-decomposition of matroids}, +journal = jctb, volume = 96, year = 2006, pages = {560-570}} + +%Geelen 2007 + +@article{GeelenGW07, +author = {Jim Geelen and Bert Gerards and Geoff Whittle}, +title = {Excluding a planar graph from {GF($q$)}-representable matroids}, +journal = jctb, volume = 97, year = 2007, pages = {971-998}} + +%Geelen 2009 + +@article{GeelenG09, +author = {Jim Geelen and Bert Gerards}, +title = {Excluding a group-labelled graph}, +journal = jctb, volume = 99, year = 2009, pages = {247-253}} + +@article{GeelenGW09, +author = {Jim Geelen and Bert Gerards and Geoff Whittle}, +title = {Tangles, tree-decompositions and grids in matroids}, +journal = jctb, volume = 99, year = 2009, pages = {657-667}} + +%Geo + +@article{George73, +author = {J. A. George}, +title = {Nested dissection of a regular finite element mesh}, +journal = sjna, volume = 10, year = 1973, pages = {345-367}} + +@book{GeorgeL81, +author = {J. A. George and J. W. H. Liu}, +title = {Computer Solution of Large Sparse Positive Definite Systems}, +publisher = {Prentice-Hall Inc.}, address = {Englewood Cliffs, New Yersey}, +year = 1981} + +@article{GeorgeL89, +author = {A. George and J. W. H. Liu}, +title = {The evolution of the minimum degree ordering algorithm}, +journal = {SIAM Review}, volume = 31, year = 1989, pages = {1-19}} + +@article{GeorgesMW94, +author = {J. P. Georges and D. W. Mauro and M. A. Whittlesey}, +title = {Relating path coverings to vertex labelings with a condition at +distance two}, +journal = dm, volume = 135, year = 1994, pages = {103-111}} + +@article{GeorgesM96, +author = {J. P. Georges and D. W. Mauro}, +title = {On the size of graphs labeled with a condition at distance two}, +journal = jgt, volume = 22, pages = {47-57}, year = 1996} + +%Ger + +@incollection{Gerards95, +author = {A. M. H. Gerards}, +title = {Matching}, +booktitle = {Handbooks in Operations Research and Management Sciences, +Volume 7, Network Models}, +pages = {135-224}, +chapter = 3, +editor = {{M. O. Ball et al.}}, +year = 1995, +address = {Amsterdam}, +publisher = {Elsevier Science}} + +@article{GerberK03, +author = {Michael U. Gerber and Daniel Kobler}, +title = {Algorithms for vertex-partitioning problems on graphs with fixed +clique-width}, +journal = tcs, volume = 299, year = 2003, pages = {719-734}} + +@inproceedings{GerstelZ93, +author = {O. Gerstel and S. Zaks}, +title = {A new characterization of tree medians with applications to distributed algorithms}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {135-144}} + +%Gi + +%Gia + +@inproceedings{GiammarresiI92, +author = {Dora Giammarresi and Giuseppe F. Italiano}, +title = {Dynamic 2- and 3-connectivity on planar graphs}, +editor = {O. Nurmi and E. Ukkonen}, +booktitle = swat92, publisher = lncs621, year = 1992, pages = {221-232}} + +%Gib + +%Gibbons 1985 + +@book{Gibbons85, +author = {Alan M. Gibbons}, +title = {Algorithmic Graph Theory}, +publisher = {Cambridge Univ. Press}, +address = {Cambridge, UK}, +year = 1985} + +%Gibbons 1986 + +@techreport{GibbonsR86, +author = {A. M. Gibbons and W. Rytter}, +title = {A Fast Parallel Algorithm for Optimally Edge-coloring of Outerplanar Graphs}, +year = 1986, +number = {80}, +institution = {Dept. of Computer Science, University of Warwick} +} + +%Gibbons 1988 + +@article{GibbonsIR88, +author = {Alan M. Gibbons and Amos Israeli and Wojciech Rytter}, +title = {Parallel {$O(\log n)$} time edge-coloring of trees and {H}alin +Graphs}, +journal = ipl, volume = 27, year = 1988, pages = {43-52}} + +@unpublished{GibbonsR88, +author = {Alan Gibbons and Wojciech Rytter}, +title = {Fast Parallel Algorithms for Optimal Edge-Coloring of Some Tree-Structured Graphs}, +year = 1988, +note = {Manuscript} +} + +@inproceedings{GibbonsKMS88, +author = {P. Gibbons and R. M. Karp and Gary L. Miller and D. Soroker}, +title = {Subtree isomorphism is in random {NC}}, +editor = {John H. Reif}, +booktitle = {Proceedings of the 3rd Aegean Workshop on Computing, AWOC'88}, +publisher = lncs319, year = 1988, pages = {43-52}} + +%Gibbons 1990 + +@article{GibbonsR90, +author = {Alan M. Gibbons and W. Rytter}, +title = {Optimally edge-colouring outerplanar graphs is in {NC}}, +journal = tcs, volume = 71, pages = {401-411}, year = 1990} + +%Gibbons 1991 + +@article{GibbonsKRST91, +author = {Phillip Gibbons and Richard Karp and Vijaya Ramachandran and Danny Soroker and Robert Tarjan}, +title = {Transitive compaction in parallel via branchings}, +journal = ja, year = 1991, volume = 12, pages = {110-125}} + +%Gil + +@article{GilbertHT84, +author = {John R. Gilbert and J. P. Hutchinson and Robert Endre Tarjan}, +title = {A separator theorem for graphs of bounded genus}, +journal = ja, volume = 5, year = 1984, pages = {391-407}} + +@article{GilbertLT80, +author = {J. R. Gilbert and T. Lengauer and R. E. Tarjan}, +title = {The pebbling problem is complete in polynomial space}, +journal = siamjc, volume = 9, pages = {513-524}, year = 1980 } + +@article{GilbertRE84, +author = {John R. Gilbert and Donald J. Rose and Anders Edenbrandt}, +title = {A separator theorem for chordal graphs}, +journal = sjadm, volume = 5, year = 1984, pages = {306-313}} + +@article{Gill77, +author = {J. Gill}, +title = {Computational complexity of probabilistic complexity classes}, +journal = siamjc, volume = 6, year = 1977, pages = {675-695}} + +@article{GilmoreH64, +author = {P. C. Gilmore and A. J. Hoffman}, +title = {A characterization of comparability graphs and of interval graphs}, +journal = canjm, volume = 16, year = 1964, pages = {539-548}} + +%Gim + +@article{GimenezHN06, +author = {Omer Gim\'{e}nez and Petr Hlin\v{e}n\'{y} and Marc Noy}, +title = {Computing the {T}utte polynomial on graphs of bounded clique-width}, +journal = sjdm, volume = 20, year = 2006, pages = {932-946}} + +%Gl + +%Glo + +@article{GloverHW79, +author = {H. H. Glover and P. Huneke and C. Wang}, +title = {103 graphs that are irreducible for the projective plane}, +journal = jctb, volume = 27, year = 1979, pages = {332-370}} + +%Go + +%Goe + +@article{GoemansW97, +author = {Michel X. Goemans and David P. Williamson}, +title = {Primal-Dual Approximation Algorithms for Feedback Problems in +Planar Graphs}, +journal = combinatorica, volume = 17, year = 1997, pages = {1-23}} + +%Gog + +@inproceedings{GogateD04, +author = {Vibhav Gogate and Rina Dechter}, +title = {A complete anytime algorithm for treewidth}, +editor = {David Maxwell Chickering and Joseph Y. Halpern}, +booktitle = uai04, publisher = {AUAI Press}, pages = {201-208}, year = 2004} + +%Gol + +%Gold + +@inproceedings{GoldbergPV88, +author = {Andrew V. Goldberg and Serge A. Plotkin and Pravin M. +Vaidya}, +title = {Sublinear-Time Parallel Algorithms for Matching and Related +Problems}, +booktitle = focs88, pages = {174-185}, year = 1988 } + +@article{GoldbergT88, +author = {Andrew V. Goldberg and Robert Endre Tarjan}, +title = {A new approach to the maximum-flow problem}, +journal = jacm, volume = 35, pages = {921-940}, year = 1988 } + +@article{GoldbergGKS95, +author = {P. W. Goldberg and M. C. Golumbic and H. Kaplan and R. Shamir}, +title = {Four strikes against physical mapping of {DNA}}, +journal = {Journal of Computational Biology}, volume = 2, number = 1, pages = {139-152}, year = 1995} + +@article{GoldbergGPSW96, +author = {L. A. Goldberg and P. W. Goldberg and C. A. Philips and E. Sweedyk and T. Warnow}, +title = {Minimizing phylogenetic number to find good evolutionary trees}, +journal = dam, volume = 71, pages = {111-136}, year = 1996} + +@article{GoldbergK04, +author = {Andrew V. Goldberg and Alexander V. Karzanov}, +title = {Maximum skew-symmetric flows and matchings}, +journal = mp, volume = 100, year = 2004, pages = {537-568}} + +@inproceedings{GoldschmidthH88, +author = {Olivier Goldschmidt and Dorit S. Hochbaum}, +title = {Polynomial algorithm for the $k$-cut problem}, +booktitle = focs88, pages = {444-451}, year = 1988 } + +%Golo + +@article{Golovach93, +author = {Petr A. Golovach}, +title = {The cutwidth of a graph and the vertex separation number of the line graph}, +journal = dam, volume = 3, year = 1993, pages = {517-521}} + +@inproceedings{GolovachV08, +author = {Petr A. Golovach and Yngve Villanger}, +title = {Parameterized complexity for domination problems on degenerate graphs}, +editor = {Hajo Broersma and Thomas Erlebach and Tom Friedetzky and Dani\"{e}l Paulusma}, +booktitle = wg08, publisher = lncs5344, year = 2008, pages = {195-205}} + +%Golumbic 1980 + +@book{Golumbic80, +author = {Martin Charles Golumbic}, +year = 1980, +title = {Algorithmic Graph Theory and Perfect Graphs}, +publisher = {Academic Press}, +address = {New York}} + +%Golumbic 1983 + +@article{GolumbicRU83, +author = {Martin Charles Golumbic and Doron Rotem and Jorge Urrutia}, +title = {Comparability graphs and intersection graphs}, +journal = dm, volume = 43, year = 1983, pages = {37-46}} + +%Golumbic 1985 + +@article{GolumbicJ85, +author = {Martin Charles Golumbic and R. E. Jamison}, +title = {The edge intersection graphs of paths in a tree}, +journal = jctb, volume = 38, year = 1985, pages = {8-22}} + +@article{GolumbicJ85b, +author = {Martin Charles Golumbic and R. E. Jamison}, +title = {Edge and vertex intersections of paths in a tree}, +journal = dm, volume = 55, year = 1985, pages = {151-159}} + +%Golumbic 1987 + +@article{Golumbic87, +author = {Martin Charles Golumbic}, +title = {A general method for avoiding cycling in a network}, +journal = ipl, volume = 24, pages = {251-253}, year = 1987 } + +%Golumbic 1988 + +@article{GolumbicH88, +author = {Martin Charles Golumbic and P. L. Hammer}, +title = {Stability in circular-arc graphs}, +journal = ja, volume = 9, pages = {314-320}, year = 1988} + +%Golumbic 1993 + +@article{GolumbicS93, +author = {Martin Charles Golumbic and R. Shamir}, +title = {Complexity and algorithms for reasoning about time: {A} +graph-theoretic approach}, +journal = jacm, volume = 40, year = 1993, pages = {1108 - 1133}} + +%Golumbic 1994 + +@article{GolumbicKS94, +author = {Martin Charles Golumbic and H. Kaplan and R. Shamir}, +title = {On the complexity of {DNA} physical mapping}, +journal = {Advances in Applied Mathematics}, volume = 15, year = 1994, pages = {251-261}} + +%Golumbic 1995 + +@article{GolumbicKS95, +author = {Martin Charles Golumbic and H. Kaplan and R. Shamir}, +title = {Graph Sandwich Problems}, +journal = ja, volume = 19, year = 1995, pages = {449-472}} + +%Golumbic 2000 + +@article{GolumbicR00, +author = {Martin Charles Golumbic and Udi Rotics}, +title = {On the clique-width of some perfect graph classes}, +journal = ijfcs, volume = 11, year = 2000, pages = {423-443}} + +%Golumbic 2006 + +@article{GolumbicMR06, +author = {Martin Charles Golumbic and Aviad Mintz and Udi Rotics}, +title = {Factoring and recognition of read-once functions using cographs and +normality and the readability of functions associated with partial $k$-trees}, +journal = dam, volume = 154, year = 2006, pages = {1465-1477}} + +%Golumbic 2008 + +@article{GolumbicLS08, +author = {Martin Charles Golumbic and Marina Lipshteyn and Michal Stern}, +title = {The $k$-edge intersection graphs of paths in a tree}, +journal = dam, volume = 156, year = 2008, pages = {451-461}} + +%Gon + +@book{GondranM84, +author = {M. Gondran and M. Minoux}, +title = {Graphs and Algorithms}, +year = 1984, +publisher = {Wiley}, address = {Chichester, UK}} + +%Gor + +@inproceedings{Gorbunov93, +author = {K. {Yu.} Gorbunov}, +title = {An Estimate of the Tree-Width of a Graph Which has not a Given Planar Grid as a Minor}, +editor = {Juraj Hromkovic and Ondrej S\'{y}kora}, +booktitle = wg98, year = 1998, pages = {372-383}, publisher = lncs1517} + +%Got + +%Gottlob 2000 + +@article{GottlobLS00, +author = {Georg Gottlob and Nicola Leone and Francesco Scarcello}, +title = {A comparison of structural {CSP} decomposition methods}, +year = 2000, pages = {243-282}, journal = ai, volume = 124} + +%Gottlob 2002 + +@article{GottlobLS02, +author = {Georg Gottlob and Nicola Leone and Francesco Scarcello}, +title = {Hypertree decompositions and tractable queries}, +journal = jcss, volume = 64, pages = {579-627}, year = 2002} + +@article{GottlobSS02, +author = {G. Gottlob and F. Scarcello and M. Sideri}, +title = {Fixed-parameter complexity in {AI} and nonmonotonic reasoning}, +journal = ai, volume = 138, pages = {55-86}, year = 2002} + +%Gottlob 2004 + +@article{GottlobP04, +author = {G. Gottlob and R. Pichler}, +title = {Hypergraphs in model checking: {A}cyclicity and hypertree-width +versus clique-width}, +journal = siamjc, volume = 33, pages = {351-378}, year = 2004} + +%Gottlob 2005 + +@inproceedings{GottlobGMSS05, +author = {G. Gottlob and M. Grohe and N. Musliu and M. Samer and F. Scarcello}, +title = {Hypertree decompositions: Structure, algorithms, and applications}, +editor = {Dieter Kratsch}, +booktitle = wg05, publisher = lncs3787, year = 2005, pages = {1-15}} + +%Gottlob 2009 + +@article{GottlobMS09, +author = {Georg Gottlob and Zolt{\'a}n Mikl{\'o}s and Thomas Schwentick}, +title = {Generalized hypertree decompositions: {NP}-hardness and tractable variants}, +journal = jacm, volume = 56, year = 2009, number = 6} + +%Gottlob 2010 + +@article{GottlobPW10, +author = {Georg Gottlob and R. Pichler and F. Wei}, +title = {Bounded treewidth as a key to tractability of knowledge representation and reasoning}, +journal = ai, volume = 174, year = 2010, pages = {105-132}} + +@article{GottlobPW10a, +author = {Georg Gottlob and R. Pichler and F. Wei}, +title = {Tractable database design and datalog abduction through bounded treewidth}, +journal = {Information Systems}, volume = 35, year = 2010, pages = {278-298}} + +%Gov + +@inproceedings{GovindanLR93, +author = {R. Govindran and M. A. Langston and S. Ramachandramurthi}, +title = {A practical approach to layout optimization}, +booktitle = {Proceedings of the 6th International Conference on VLSI Design}, +address = {Bombay, India}, year = 1993, pages = {222-225}} + +@article{GovindranLY98, +author = {Rajeev Govindran and Michael A. Langston and Xudong Yan}, +title = {Approximating the pathwidth of outerplanar graphs}, +journal = ipl, year = 1998, volume = 68, pages = {17-23}} + +@article{GovindranR01, +author = {Rajeev Govindran and S. Ramachandramurthi}, +title = {A weak immersion relation on graphs and its applications}, +journal = dm, volume = 230, pages = {189-206}, year = 2001} + +%Gr + +%Gra + +%Grab + +@techreport{Grabe91, +author = {A. Grabe}, +title = {Zur Berechnung der Grundzustandsenergie und der +Zustandssumme von Spin-Glas-Hamiltonfunktionen}, +type = {Diplomarbeit}, +institution = {Bielefeld University}, +month = {3}, year = 1991, pages = {1-155}} + +%Grae + +@techreport{Graef93, +author = {Albert Gr{\"{a}}f}, +title = {Complete Difference Sets and {$T$}-Colorings of Complete Graphs}, +institution = {University of Mainz}, year = 1993} + +%Grah + +@book{GrahamKP94, +author = {R. L. Graham and D. E. Knuth and O. Patashnik}, +title = {Concrete Mathematics}, +year = 1994, +publisher = {Addison-Wesley}} + +%Gram + +@article{GrammGHN04, +author = {Jens Gramm and Jiong Guo and Falk H\"{u}ffner and Rolf Niedermeier}, +title = {Automated generation of search tree algorithms for hard graph-modification problems}, +journal = alg, volume = 29, pages = {321-347}, year = 2004} + +@inproceedings{GrammGHN06, +author = {Jens Gramm and Jiong Guo and Falk H\"{u}ffner and Rolf Niedermeier}, +title = {Data reduction, exact, and heuristic algorithms for clique cover}, +booktitle = alenex06, year = 2006, publisher = {SIAM}, pages = {86-94}} + +@article{GrammFHN08, +author = {Jens Gramm and Jiong Guo and Falk H\"{u}ffner and Rolf Niedermeier}, +title = {Data reduction and exact algorithms for clique cover}, +journal = acmjea, year = 2008, volume = 13, number = {2.2}} + +@article{GrammNT08, +author = {J. Gramm and A. Nickelsen and T. Tantau}, +title = {Fixed-parameter algorithms in phylogenetics}, +journal = tcj, volume = 51, year = 2008, pages = {79-101}} + +%Gran + +@article{Grandoni06, +author = {Fabrizio Grandoni}, +title = {A note on the complexity of minimum dominating set}, +journal = jda, volume = 4, year = 2006, pages = {209-214}} + +@techreport{GranotS90, +author = {Daniel Granot and Darko Skorin-Kapov}, +title = {A Fixed Cost Spanning-Forest Problem On Series-Parallel Graphs}, +institution = {SUNY at Stony-Brook}, +type = {Harriman School Working Paper}, +number = {HAR-90-009}, year = 1990} + +@article{GranotS91, +author = {Daniel Granot and Darko Skorin-Kapov}, +title = {{NC} algorithms for recognizing partial 2-trees and 3-trees}, +journal = sjdm, volume = 4, number = 3, pages = {342-354}, year = 1991} + +@article{GranotS94, +author = {Daniel Granot and Darko Skorin-Kapov}, +title = {On some optimization problems on $k$-trees and partial $k$-trees}, +journal = dam, volume = 48, year = 1994, pages = {129-145}} + +%Gri + +@article{GriggsY92, +author = {J. R. Griggs and R. K. Yeh}, +title = {Labeling graphs with a condition at distance 2}, +journal = sjdm, volume = 5, year = 1992, pages = {586-595}} + +@article{GrigoriadisK88, +author = {M. D. Grigoriades and B. Kalantari}, +title = {A new class of heuristic algorithms for weighted perfect +matching}, +journal = jacm, volume = 35, year = 1988, pages = {769-776}} + +@article{GrigorievMU09, +author = {Alexander Grigoriev and Bert Marchal and Natalya Usotskaya}, +title = {On planar graphs with large tree-width and small grid minors}, +journal = endm, volume = 32, year = 2009, pages = {35-42}} + +%Gro + +%Grohe 2003 + +@article{Grohe03, +author = {Martin Grohe}, +title = {Local tree-width, excluded minors, and approximation algorithms}, +journal = combinatorica, volume = 23, year = 2003, pages = {613-632}} + +%Grohe 2004 + +@article{Grohe04, +author = {Martin Grohe}, +title = {Computing crossing numbers in quadratic time}, +journal = jcss, volume = 68, pages = {285-302}, year = 2004} + +%Grohe 2009 + +@article{GroheM09, +author = {Martin Grohe and D\'{a}niel Marx}, +title = {On tree width, bramble size, and expansion}, +journal = jctb, year = 2009, volume = 99, pages = {218-228}} + +%Gros + +@book{GrossT87, +author = {Jonathan L. Gross and Thomas W. Tucker}, +title = {Topological Graph Theory}, +series = {Wiley Interscience Series in Discrete Mathematics and Optimization}, +publisher = {J. Wiley \& Sons}, +address = {New York}, +year = 1987} + +@book{GrossY99, +title = {Graph Theory and Its Applications}, +author = {Jonathan Gross and Jay Yellen}, +year = {1999}, +address = {CRC Press}, +publisher = {New York}} + +@article{GrotschelLA85, +author = {M. L. Gr\"{o}tschel and L. Lovasz and A. Schrijver}, +title = {Polynomial algorithms for perfect graphs}, +journal = adm, volume = 21, year = 1985, pages = {325-327}} + +%Gu + +@inproceedings{GuT05, +author = {Qian-Ping Gu and Hisao Tamaki}, +title = {Optimal branch-decomposition of planar graphs in {$O(n^3)$} time}, +editor = {Lu{\'{\i}}s Caires and Giuseppe F. Italiano and Lu{\'{\i}}s Monteiro and +Catuscia Palamidessi and Moti Yung}, +booktitle = icalp05, publisher = lncs3580, pages = {373-384}, year = 2005} + +@article{GuT08, +author = {Qian-Ping Gu and Hisao Tamaki}, +title = {Optimal branch-decomposition of planar graphs in {$O(n^3)$} time}, +journal = acmtalg, volume = 4, year = 2008, pages = {Article No. 30}} + +%Gua + +@article{GuanZ99, +author = {D. Guan and X. Zhu}, +title = {Game chromatic number of outerplanar graphs}, +journal = jgt, volume = 30, pages = {67-70}, year = 1999} + +%Guo + +%Guo 2005 + +@inproceedings{GuoGHNW05, +author = {Jiong Guo and Jens Gramm and Falk H\"{u}ffner and Rolf +Niedermeier and Sebastian Wernicke}, +title = {Improved fixed-parameter algorithms for two feedback set +problems}, +editor = {Frank K. H. A. Dehne and Alejandro L\'{o}pez-Ortiz and +J\"{o}rg-R\"{u}dinger Sack}, +booktitle = wads05, pages = {158-168}, publisher = lncs3608, year = 2005} + +%Guo 2006 + +@phdthesis{Guo06, +author = {Jiong Guo}, +title = {Algorithm Design Techniques for Parameterized Graph Modification +Problems}, +year = 2006, +school = {Institut f\"{u}r Informatik, Friedrich-Schiller-Universit\"{a}t}, +address = {Jena, Germany}} + +@inproceedings{GuoNW06, +author = {Jiong Guo and Rolf Niedermeier and Sebastian Wernicke}, +title = {Fixed-Parameter Tractability Results for Full-Degree Spanning Tree and Its Dual}, +editor = {Hans L. Bodlaender and Michael A. Langston}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {203-214}} + +%Guo 2007 + +@inproceedings{Guo07, +author = {Jiong Guo}, +title = {A more effective linear kernelization for Cluster Editing}, +editor = {Bo Chen and Mike Paterson and Guochan Zhang}, +booktitle = {Proceedings 1st International Symposium on Combinatorics, +Algorithms, Probabilistic and Experimental Methodologies, ESCAPE 2007}, +year = 2007, publisher = lncs4614, pages = {36-47}} + +@article{GuoHM07, +author = {Jiong Guo and Falk Hueffner and Hannes Moser}, +title = {Feedback arc set in bipartite tournaments is {NP}-complete}, +journal = ipl, volume = 102, year = 2007, pages = {62-65}} + +@article{GuoN07, +author = {Jiong Guo and Rolf Niedermeier}, +title = {Invitation to Data Reduction and Problem Kernelization}, +journal = {ACM SIGACT News}, volume = 38, pages = {31-45}, year = 2007} + +@inproceedings{GuoN07a, +author = {Jiong Guo and Rolf Niedermeier}, +title = {Linear problem kernels for {NP}-hard problems on planar graphs}, +editor = {Lars Arge and Christian Cachin and Tomasz Jurdzinski and Andrzej Tarlecki}, +booktitle = icalp07, publisher = lncs4596, pages = {375-386}, year = 2007} + +@article{GuoNW07, +author = {Jiong Guo and Rolf Niedermeier and Sebastian Wernicke}, +title = {Parameterized complexity of vertex cover variants}, +journal = tocs, volume = 41, year = 2007, pages = {501-520}} + +@article{GuoNU07, +author = {Jiong Guo and Rolf Niedermeier and Johannes Uhlmann}, +title = {Two fixed-parameter algorithms for {Vertex Covering by Paths on +Trees}}, +journal = ipl, volume = 106, year = 2008, pages = {81-86}} + +%Guo 2009 + +@article{Guo09, +author = {Jiong Guo}, +title = {A more effective linear kernelization for cluster editing}, +journal = tcs, volume = 410, year = 2009, pages = {718-726}} + +%Gupta 1982 + +@article{GuptaLL82, +author = {U. I. Gupta and D. T. Lee and Joseph Y.-T. Leung}, +title = {Efficient algorithms for interval graphs and circular-arc graphs}, +journal = netw, volume = 12, year = 1982, pages = {459-467}} + +%Gupta 1993 + +@inproceedings{Gupta93, +author = {Arvind Gupta}, +title = {Finite automata as characterizations of minor closed tree families (Extended Abstract)}, +editor = {Andrzej Lingas and Rolf G. Karlsson and Svante Carlsson}, +booktitle = icalp93, pages = {359-370}, year = 1993, publisher = lncs700} + +%Gupta 1994 + +@techreport{GuptaN94, +author = {Arvind Gupta and Naomi Nishimura}, +title = {Sharp Divisions in Complexity of Subgraph Isomorphism for Graphs of +Bounded Path- and Tree- Width}, +number = {CS-94-45}, year = 1994, +institution = {University of Waterloo, Computer Science Department}, +address = {Waterloo, Ontario, Canada}, +remark = {Contained an error. Corrected as GuptaN95.}} + +@inproceedings{GuptaN94a, +author = {Arvind Gupta and Naomi Nishimura}, +title = {Sequential and parallel algorithms for embedding problems on classes of partial $k$-trees}, +editor = {Erik Meineche Schmidt and Sven Skyum}, +booktitle = swat94, publisher = lncs824, pages = {172-182}, year = 1994} + +%Gupta 1995 + +@unpublished{GuptaKMS95, +author = {Arvind Gupta and Damon Kaller and S. Mahajan and T. Shermer}, +title = {Vertex partitioning problems on partial $k$-trees}, +note = {Manuscript}, year = 1995} + +@techreport{GuptaN95, +author = {Arvind Gupta and Naomi Nishimura}, +title = {The Complexity of Subgraph Isomorphism: Duality Results for Graphs of +Bounded Path- and Tree-Width}, +number = {CS-95-14}, year = 1995, +institution = {University of Waterloo, Computer Science Department}, +address = {Waterloo, Ontario, Canada}} + +@article{GuptaN95a, +author = {Arvind Gupta and Naomi Nishimura}, +title = {The parallel complexity of tree embedding problems}, +journal = ja, volume = 18, pages = {176-200}, year = 1995} + +%Gupta 1996 + +@article{GuptaN96, +author = {Arvind Gupta and Naomi Nishimura}, +title = {The complexity of subgraph isomorphism for classes of +partial $k$-trees}, +journal = tcs, volume = 164, year = 1996, pages = {287-298}} + +%Gupta 1999 + +@article{GuptaS99, +author = {Srabani Sen Gupta and Bhabani P. Sinha}, +title = {A simple {$O(\log N)$} time parallel algorithm for testing +isomorphism of maximal outerplanar graphs}, +journal = jpdc, volume = 56, year = 1999, pages = {144-155}} + +%Gupta 2000 + +@article{GuptaKS00, +author = {A. Gupta and D. Kaller and T. Shermer}, +title = {Linear-time algorithms for partial $k$-tree complements}, +journal = alg, volume = 27, year = 2000, pages = {254-274}} + +%Gupta 2005 + +@article{GuptaNPR05, +author = {Arvind Gupta and Naomi Nishimura and Andrzej Proskurowski and +Prabhakar Ragda}, +title = {Embeddings of $k$-connected graphs of pathwidth $k$}, +journal = dam, volume = 145, pages = {242-265}, year = 2005} + +%Gur + +@article{GurariS84, +author = {E. M. Gurari and Ivan Hal Sudborough}, +title = {Improved Dynamic Programming Algorithms for Bandwidth Minimization and +the Mincut Linear Arrangement Problem}, +journal = ja, year = 1984, volume = 5, pages = {531-546}} + +@article{GurevichSV84, +author = {Y. Gurevich and L. Stockmeyer and Uzi Vishkin}, +title = {Solving {NP}-hard Problems on Graphs that are Almost Trees +and an Application to Facility Location Problems}, +journal = jacm, year = 1984, volume = 31, pages = {459-473}} + +@article {GurevichS87, +author = {Yuri Gurevich and Saharon Shelah}, +title = {Expected computation time for {H}amiltonian path problem}, +journal = siamjc, volume = 16, year = 1987, pages = {486-502}} + +@article{Gurski06, +author = {Frank Gurski}, +title = {Linear layouts measuring neighbourhoods in graphs}, +journal = dm, volume = 306, pages = {1637-1650}, year = 2006} + +@article{GurskiW06, +author = {Frank Gurski and Egon Wanke}, +title = {Vertex disjoint paths on clique-width bounded graphs}, +journal = tcs, volume = {359}, year = 2006, pages = {188-199}} + +@article{GurskiW07, +author = {Frank Gurski and Egon Wanke}, +title = {A local characterization of bounded clique-width for line graphs}, +journal = dm, volume = 307, year = 2007, pages = {756-759}} + +@article{GurskiW07a, +author = {Frank Gurski and Egon Wanke}, +title = {Line graphs of bounded clique width}, +journal = dm, volume = 307, pages = {2734-2754}, year = 2007} + +@article{GurskiW09, +author = {Frank Gurski and Egon Wanke}, +title = {The {NLC}-width and clique-width for powers of graphs of bounded +tree-width}, +journal = dam, volume = 157, pages = {583-595}, year = 2009} + +%Gus + +%Gusfield 1986 + +@article{GusfieldP86, +author = {D. Gusfield and L. Pitt}, +title = {Equivalent approximation algorithms for node cover}, +journal = ipl, year = 1986, volume = 22, pages = {291-294}} + +%Gusfield 1987 + +@article{Gusfield87, +author = {D. Gusfield}, +title = {Three fast algorithms for four problems in stable marriage}, +journal = siamjc, volume= 16, year = 1987, pages = {111-128}} + +%Gusfield 1988 + +@article{Gusfield88, +author = {D. Gusfield}, +title = {The structure of the stable roommates problem: {E}fficient representation and enumeration of all stable assignments}, +journal = siamjc, volume = 17, year = 1988, pages = {742-769}} + +%Gusfield 1991 + +@article{Gusfield91, +author = {D. Gusfield}, +title = {Efficient algorithms for inferring evolutionary trees}, +journal = networks, volume = 21, year = 1991, pages = {19-28}} + +%Gusfield 1992 + +@article{GusfieldM92, +author = {D. Gusfield and C. Martel}, +title = {A fast algorithm for the generalized parametric minimum cut problem and applications}, +journal = alg, volume = 7, year = 1992, pages = {499-520}} + +%Gustedt 1991 + +@techreport{Gustedt91, +author = {Jens Gustedt}, +title = {Well Quasi Ordering Finite Posets and Formal Languages}, +number = {290/1991}, year = 1991, +institution = {Fachbereich Mathematik, Technische Universit\"{a}t Berlin}} + +%Gustedt 1992 + +@unpublished{GustedtS92, +author = {Jens Gustedt and Angelika Steger}, +title = {Testing Hereditary Properties Efficiently}, +year = 1992, +note = {Manuscript}} + +%Gustedt 1993 + +@article{Gustedt93, +author = {Jens Gustedt}, +title = {On the pathwidth of chordal graphs}, +journal = dam, year = 1993, volume = 45, number = 3, pages = {233-248}} + +%Gustedt 1998 + +@article{Gustedt98, +author = {Jens Gustedt}, +title = {Efficient {Union-Find} for planar graphs and other sparse graph +classes}, +journal = tcs, volume = 203, pages = {123-141}, year = 1998} + +%Gustedt 2002 + +@inproceedings{GustedtMT02, +author = {J. Gustedt and O. A. M{\ae}hle and J. A. Telle}, +title = {The treewidth of {J}ava programs}, +editor = {David M. Mount and Clifford Stein}, +booktitle = wea02, publisher = lncs2409, year = 2002, pages ={86-97}} + +%Gut + +@article{GutinKLY05, +author = {G. Gutin and T. Kloks and C. M. Lee and A. Yeo}, +title = {Kernels in planar digraphs}, +journal = jcss, volume = 71, pages = {174-184}, year = 2005} + +@article{GutinRK09, +author = {Gregory Gutin and Igor Razgon and Eun Jung Kim}, +title = {Minimum leaf out-branching and related problems}, +journal = tcs, volume = 410, year = 2009, pages = {4571-4579}} + +@inproceedings{GutjahrWW89, +author = {Wolfgang Gutjahr and Emo Welzl and Gerhart Woeginger}, +title = {Polynomial Graph-Colorings}, +booktitle = stacs89, +pages = {108-119}, +year = 1989} + +@unpublished{Gutner09, +author = {Shai Gutner}, +title = {Polynomial kernels and faster algorithms for the dominating set problem on graphs with an excluded minor}, +year = 2009, +note = {In Proceedings IWPEC 2009}} + +%H + +%Ha + +%Haa + +@article{HaasH06, +author = {Robert Haas and Michael Hoffmann}, +title = {Chordless paths through three vertices}, +journal = tcs, volume = 351, year = 2006, pages = {360-371}} + +%Hab + +%Habel 1987 + +@inproceedings{HabelK87, +author = {Annegret Habel and Hans-J\"{o}rg Kreowski}, +title = {May we introduce to you: hyperedge replacement}, +editor = {Hartmut Ehrig and Manfred Nagl and Grzegorz Rozenberg and Azriel Rosenfeld}, +booktitle = gragra86, publisher = lncs291, pages = {15-26}, year = 1987} + +@article{HabelK87a, +author = {Annegret Habel and Hans-J\"{o}rg Kreowski}, +title = {Characteristics of Graph Languages generated by Edge Replacement}, +journal = tcs, volume = 51, year = 1987, pages = {81-115}} + +%Habel 1988 + +@inproceedings{Habel88, +author = {Annegret Habel}, +title = {Graph-Theoretic Properties Compatible with Graph Derivations}, +editor = {Jan van Leeuwen}, +booktitle = wg88, pages = {11-29}, publisher = lncs344, year = 1988 } + +%Habel 1989 + +@article{HabelKV89, +author = {Annegret Habel and Hans-J\"{o}rg Kreowski and W. Vogler}, +title = {Metatheorems for decision problems on hyperedge-replacement graph languages}, +journal = ai, volume = 26, year = 1989, pages = {657-677}} + +%Habel 1990 + +@inproceedings{HabelK90, +author = {Annegret Habel and Hans-J\"{o}rg Kreowski}, +title = {Filtering hyperedge-replacement languages through compatible properties}, +editor = {Manfred Nagl}, +booktitle = wg89, year = 1990, publisher = lncs411, pages = {107-120}} + +%Habel 1992 + +@book{Habel92, +author = {Annegret Habel}, +title = {Hyperedge Replacement: Grammars and Languages}, +publisher = {Springer-Verlag}, +address = {Berlin}, +series = {Lecture Notes in Computer Science, Vol. 643}, +year = 1992} + +@inproceedings{HabelK92, +author = {Annegret Habel and Hans-J\"{o}rg Kreowski}, +title = {Collage Grammars}, +booktitle = lncs532, +pages = {411-429}, +year = 1991} + +@unpublished{HabelKT92, +author = {Annegret Habel and Hans-J\"{o}rg Kreowski and Stefan Taubenberger}, +title = {Collage and Patterns Generated by Hyperedge Replacement}, +year = 1992, +note = {Manuscript, to appear in Languages and Design 1992}} + +%Habib + +@article{HabibM87, +author = {Michel Habib and Rolf H. M{\"{o}}hring}, +title = {On some complexity properties of {N}-free posets and posets with +bounded decomposition diameter}, +journal = dm, volume = 63, year = 1987, pages = {157-182}} + +@article{HabibM94, +author = {Michel Habib and Rolf H. M{\"{o}}hring}, +title = {Treewidth of Cocomparability Graphs and a New Order-theoretic Parameter}, +journal = {ORDER}, volume = 1, pages = {47-60}, year = 1994} + +@article{HabibP04, +author = {Michel Habib and Christophe Paul}, +title = {A simple linear time algorithm for cograph recognition}, +journal = dam, volume = 145, pages = {183-197}, year = 2004} + +%Hac + +@article{Hackbusch97, +author = {W. Hackbusch}, +title = {On the feedback vertex set problem for a planar graph}, +journal = {Computing}, volume = 58, year = 1997, pages = {129-155}} + +%Hag + +%Hagerup 1988 + +@article{Hagerup88, +author = {Torben Hagerup}, +title = {On Saving Space in Parallel Computation}, +journal = ipl, volume = 29, pages = {327-329}, year = 1988 } + +%Hagerup 1990 + +@article{Hagerup90, +author = {Torben Hagerup}, +title = {Optimal parallel algorithms on planar graphs}, +journal = ic2, volume = 84, pages = {71-96}, year = 1990 } + +@article{Hagerup90a, +author = {Torben Hagerup}, +title = {Planar Depth-First Search in ${O}(\log n)$ Parallel Time}, +journal = siamjc, volume = 19, pages = {678-704}, year = 1990 } + +%Hagerup 1995 + +@inproceedings{HagerupKNR95, +author = {Torben Hagerup and Jyrki Katajainen and Naomi Nishimura and Prabhakar Ragde}, +title = {Characterizations of $k$-Terminal Flow Networks and Computing Network Flows in Partial $k$-Trees}, +booktitle = soda95, year = 1995, pages = {641-649}} + +%Hagerup 1997 + +@inproceedings{Hagerup97, +author = {Torben Hagerup}, +title = {Dynamic algorithms for graphs of bounded treewidth}, +editor = {Pierpaolo Degano and Roberto Gorrieri and Alberto Marchetti-Spaccamela}, +booktitle = icalp97, publisher = lncs1256, year = 1997, pages = {292-302}} + +%Hagerup 1998 + +@article{HagerupKNR98, +author = {Torben Hagerup and Jyrki Katajainen and Naomi Nishimura and +Prabhakar Ragde}, +title = {Characterizing multiterminal flow networks and computing flows in +networks of small treewidth}, +journal = jcss, volume = 57, pages = {366-375}, year = 1998} + +%Hagerup 2000 + +@article{Hagerup00, +author = {Torben Hagerup}, +title = {Dynamic algorithms for graphs of bounded treewidth}, +journal = alg, volume = 27, year = 2000, pages = {292-315}} + +%Haj + +%Hal + +@article{HalldorssonKT00, +author = {Magn\'us M. Halld\'orsson and Jan Kratochv\'il and Jan Arne Telle}, +title = {Independent Sets with Domination Constraints}, +journal = dam, volume = 99, year = 2000, pages = {39-54}} + +@article{HalldorssonK02, +author = {Magn{\'{u}}s Halld{\'{o}}rsson and Guy Kortsarz}, +title = {Tools for Multicoloring with Applications to Planar Graphs and Partial +$k$-Trees}, +journal = ja, volume = 42, pages = {334-366}, year = 2002} + +%Han + +@article{Han08, +author = {Yijie Han}, +title = {A note of an {$O(n^3 / \log n)$} time algorithm for all pairs shortest paths}, +journal = ipl, volume = 105, year = 2008, pages = {114-116}} + +%Hao + +@article{HaoO94, +author = {Jianxiu Hao and James B. Orlin}, +title = {A faster algorithm for finding the minimum cut in a directed graph}, +journal = ja, volume = 17, pages = {424-446}, year = 1994} + +%Har + +@article{HaralamidesMM91, +author = {J. Haralamides and F. Makedon and B. Monien}, +title = {Bandwidth minimization: an approximation algorithm for caterpillars}, +journal = mst, volume = 24, year = 1991, pages = {169-177}} + +@book{Harary69, +author = {F. Harary}, +title = {Graph Theory}, +publisher = {Addison-Wesley}, +address = {Reading, MA}, +year = 1969 } + +@unpublished{HararyT??, +author = {Frank Harary and Zsolt Tuza}, +title = {Two graph-coloring games}, +note = {Manuscript}} + +@article{HareHH86, +author = {E. O. Hare and S. T. Hedetniemi and W. R. Hare}, +title = {Algorithms for computing the domination number of $k \times +n$ complete grid graphs}, +journal = cn, volume = 55, year = 1986, pages = {81-92}} + +@article{HareH87, +author = {E. O. Hare and S. T. Hedetniemi}, +title = {A linear algorithm for computing the knight's domination +number of a $k \times n$ chessboard}, +journal = cn, volume = 59, year = 1987, pages = {115-130}} + +@inproceedings{HareHLPW87, +author = {E. Hare and S. Hedetniemi and R. Laskar and K. Peters and T. Wimer}, +title = {Linear-time Computability of Combinatorial Problems on +Generalized-Series-Parallel Graphs}, +booktitle = {Proceedings of the Japan-US Joint Seminar on Discrete Algorithms and Complexity}, +publisher = {Academic Press, Inc.}, +address = {Orlando, Florida}, +editor = {David S. Johnson and Takao Nishizeki and Akihiro Nozaki and +Herbert S. Wilf}, +year = 1987 +} + +%Has + +@article{HassinT86, +author = {R. Hassin and A. Tamir}, +title = {Efficient Algorithms for Optimization and Selection on +Series-Parallel Graphs}, +journal = sjadm, volume = 7, year = 1986, pages = {379-389}} + +@article{HasunumaIOU09, +author = {Toru Hasunuma and Toshimasa Ishii and Hirotaka Ono and Yuski Uno}, +title = {An {$O(n^{1.75})$} algorithm for {$L(2,1)$}-labeling of trees}, +journal = tcs, volume = 410, year = 2009, pages = {3702-3710}} + +%Hat + +@article{HattinghJJP07, +author = {Johannes H. Hattingh and Elizabeth Jonck and Ernst J. Joubert and Andrew R. Plummer}, +title = {Total restrained domination in trees}, +journal = dm, volume = 307, pages = {1643-1650}, year = 2007} + +%He + +%He 1987 + +@article{HeY87, +author = {Xin He and Yaacov Yesha}, +title = {Parallel recognition and decomposition of two terminal series +parallel graphs}, +journal = ic2, year = 1987, pages = {15-38}, volume = 75 } + +%He 1988 + +@article{HeY88, +author = {Xin He and Yaacov Yesha}, +title = {Binary Tree Algebraic Computation and Parallel Algorithms for Simple Graphs}, +journal = ja, volume = 9, pages = {92-113}, year = 1988 } + +%He 1990 + +@article{HeY90, +author = {Xin He and Yaacov Yesha}, +title = {Efficient Parallel Algorithms for $r$-Dominating Set and $p$-Center Problems on Trees}, +journal = alg, volume = 5, year = 1990, pages = {129-145}} + +%He 1991 + +@article{He91a, +author = {Xin He}, +title = {An improved algorithm for the planar 3-cut problem}, +journal = ja, volume = 12, pages = {23-37}, year = 1991} + +@article{He91, +author = {Xin He}, +title = {Efficient parallel algorithms for series-parallel graphs}, +journal = ja, volume = 12, pages = {409-430}, year = 1991} + +%He 1992 + +@inproceedings{He92, +author = {Xin He}, +title = {Parallel Algorithms for Cograph Recognition with Applications}, +editor = {O. Nurmi and E. Ukkonen}, +booktitle = swat92, publisher = lncs621, year = 1992, pages = {94-105}} + +%He 1993 + +@article{He93, +author = {Xin He}, +title = {Parallel algorithms for cograph recognition with applications}, +journal = ja, volume = 15, year = 1993, pages = {284-313}} + +@article{HeZL05, +author = {P. R. He and W. J. Zhang and Q. Li}, +title = {Some further development on the eigensystem approach for graph isomorphism detection}, +journal = {Journal of the Franklin Institute}, volume = 342, year = 2005, pages = {657-673}} + +%Hea + +@article{Heath87, +author = {Lenwood S. Heath}, +title = {Embedding outerplanar graphs in small books}, +journal = sjadm, volume = 8, year = 1987, pages = {198-218}} + +%Hec + +@article{HechtU74, +author = {M. S. Hecht and J. D. Ullman}, +title = {Characterization of Reducible Flow Graphs}, +journal = jacm, volume = 21, year = 1974, pages = {367-375}} + +%Hed + +@inproceedings{HedetniemiHL85, +author = {S. M. Hedetniemi and S. T. Hedetniemi and R. Laskar}, +title = {Domination in trees: models and algorithms}, +booktitle = {Graph Theory with Applications to Algorithms and Computer +Science}, +publisher = {Wiley}, +address = {New York}, +year = 1985, pages = {423-442}} + +@article{HedetniemiPS85, +author = {S. M. Hedetniemi and A. Proskurowski and M. M. Sys{\l}o}, +title = {Interior graphs of maximal outerplanar graphs}, +journal = jctb, volume = 38, pages = {156-167}, number = 2, year = 1985} + +@article{HedetniemiLP86, +author = {S. T. Hedetniemi and R. Laskar and J. Pfaff}, +title = {A linear algorithm for the domination number of a cactus}, +journal = dam, volume = 13, year = 1986, pages = {287-292}} + +%Heg + +%Heggernes 1998 + +@article{HeggernesT98, +author = {Pinar Heggernes and Jan Arne Telle}, +title = {Partitioning Graphs into Generalized Dominating Sets}, +journal = nordicjc, volume = 5, year = 1998, pages = {128-142}} + +%Heggernes 2001 + +@inproceedings{HeggernesEKP01, +author = {P. Heggernes and S. Eisenstat and G. Kumfert and A. Pothen}, +title = {The computational complexity of the minimum degree algorithm}, +booktitle = {Proceedings of the 14th Norwegian Computer Science Conference, NIK 2001}, +pages = {98-109}, year = 2001} + +%Heggernes 2002 + +@inproceedings{HeggernesV02, +author = {Pinar Heggernes and Yngve Villanger}, +title = {Efficient implementation of a minimal triangulation algorithm}, +editor = {Rolf M{\"{o}}hring and Rajeev Raman}, +booktitle = esa02, publisher = lncs2461, year = 2002, pages = {550-561}} + +%Heggernes 2005 + +@article{HeggernesTV05, +author = {Pinar Heggernes and Jan Arne Telle and Yngve Villanger}, +title = {Computing minimal triangulations in time {${O}(n^\alpha \log n) = o(n^{2.376})$}}, +journal = sjdm, volume = 19, year = 2005, pages = {900-913}} + +@inproceedings{HeggernesSTV05, +author = {Pinar Heggernes and K. Suchan and I. Todinca and Yngve Villanger}, +title = {Minimal interval completions}, +booktitle = esa05, year = 2005, publisher = lncs3669, pages = {403-414}} + +%Heggernes 2006 + +@article{Heggernes06, +author = {Pinar Heggernes}, +title = {Minimal triangulations of graphs: {A} survey}, +journal = dm, volume = 306, pages = {297-317}, year = 2006} + +@article{HeggernesL06, +author = {Pinar Heggernes and Daniel Lokshtanov}, +title = {Optimal broadcast domination in polynomial time}, +journal = dm, volume = 306, pages = {3267-3280}, year = 2006} + +@inproceedings{HeggernesV06, +author = {Pinar Heggernes and Yngve Villanger}, +title = {Simple and efficient modifications of elimination orderings}, +booktitle = {Proceedings of the 7th International Conference on Appied Parallel Computing, PARA 2004}, +year = 2006, publisher = lncs3732, pages = {788-797}} + +%Heggernes 2008 + +@inproceedings{HeggernesKM08, +author = {Pinar Heggernes and Dieter Kratsch and Daniel Meister}, +title = {Bandwidth of bipartite permutation graphs in polynomial time}, +editor = {Eduardo Sany Laber and Claudson F. Bornstein and Loana Tito Nogueira and Luerbio Faria}, +booktitle = latin08, year = 2008, publisher = lncs4957, pages = {216-227}} + +%Heggernes 2009 + +@article{HeggernesKM09, +author = {Pinar Heggernes and Dieter Kratsch and Daniel Meister}, +title = {Bandwidth of bipartite permutation graphs in polynomial time}, +journal = jda, volume = 7, year = 2009, pages = {533-544}} + +@article{HeggernesM09, +author = {Pinar Heggernes and Federico Mancini}, +title = {Dynamically maintaining split graphs}, +journal = dam, volume = 157, year = 2009, pages = {2057-2069}} + +@article{HeggernesP09, +author = {Pinar Heggernes and Charis Papadopoulos}, +title = {Single-edge monotonic sequences of graphs and linear-time algorithms for minimal completions and deletions}, +journal = tcs, volume = 410, year = 2009, pages = {1-15}} + +@article{HeggernesP09a, +author = {Pinar Heggernes and Barry W. Peyton}, +title = {Fast computation of minimal fill inside a given elimination orering}, +journal = sjmaa, volume = 30, year = 2009, pages = {1424-1444}} + +%Hei + +@inproceedings{HeinzelmanCB00, +author = {W. R. Heinzelman and A. Chandrakasan and H. Balakrishnan}, +title = {Energy-Efficient Communication Protocol for Wireless Microsensor Networks}, +booktitle = {Proceedings of the 33rd Hawaii International Conference on System Sciences, HICSS-33}, +year = 2000} + +%Hel + +@article{HeldK62, +author = {M. Held and R. Karp}, +title = {A dynamic programming approach to sequencing problems}, +journal = {Journal of the Society for Industrial and Applied Mathematics}, volume = 10, year = 1962, pages = {196-210}} + +@unpublished{HelmbergMPR93, +author = {Christoph Helmberg and Bojan Mohar and Svatopluk Poljak and +Franz Rendl}, +title = {A spectral approach to Bandwidth and Separator Problems in Graphs}, +note = {Manuscript}, year = 1993} + +@article{HellM76, +author = {P. Hell and D. Miller}, +title = {Graphs with given achromatic number}, +journal = dm, volume = 16, year = 1976, pages = {195-207}} + +%Hen + +%Henning 2003 + +@article{Henning03, +author = {M. A. Henning}, +title = {Defending the {R}oman Empire from multiple attacks}, +journal = dm, volume = 271, year = 2003, pages = {101-115}} + +@article{HenningH03, +author = {M. A. Henning and S. T. Hedetniemi}, +title = {Defending the {R}oman Empire --- {A} new strategy}, +journal = dm, volume = 271, year = 2003, pages = {239-251}} + +%Henning 2009 + +@article{Henning09, +author = {Michael A. Henning}, +title = {A survey or selected recent results on total domination in graphs}, +journal = dm, volume = 309, year = 2009, pages = {32-63}} + +%Henning 2010 + +@article{HenningK10, +author = {Michael A. Henning and Adel P. Kazemi}, +title = {$k$-Tuple total domination in graphs}, +journal = dam, volume = 158, year = 2010, pages = {1006-1011}} + +@inproceedings{HenzingerK97, +author = {Monika R. Henzinger and Valerie King}, +title = {Maintaining minimum spanning trees in dynamic graphs}, +editor = {Pierpaolo Degano and Roberto Gorrieri and Alberto Marchetti-Spaccamela}, +booktitle = icalp97, publisher = lncs1256, year = 1997, pages = {594-604}} + +%Her + +@inproceedings{HershbergerRS92, +author = {J. Herschberger and M. Rauch and S. Suri}, +title = {Fully Dynamic 2-Connectivity in Planar Graphs}, +editor = {O. Nurmi and E. Ukkonen}, +booktitle = swat92, publisher = lncs621, year = 1992, pages = {233-244}} + +%Heu + +@inproceedings{HeunM96, +title={Embedding Graphs with Bounded Treewidth into Optimal Hypercubes}, +author={Volker Heun and Ernst W. Mayr}, +editor = {Claude Puech and R{\"u}diger Reischuk}, +booktitle = stacs96, publisher = lncs1046, pages = {157-168}, year = 1996} + +@techreport{HeuvelM99, +author = {Jan van den Heuvel and Sean McGuinness}, +title = {Colouring the square of a planar graph}, +institution = {Centre for Discrete and Applicable Mathematics, London School +of Economics, London, U.K.}, +type = {Report}, +number = {LSE-CDAM-99-06}, +year = 1999} + +%Hi + +%Hic + +%Hicks 2000 + +@phdthesis{Hicks00, +author = {Illya V. Hicks}, +title = {Branch Decompositions and their Applications}, +school = {Rice University}, +address = {Houston, Texas}, +year = 2000} + +%Hicks 2002 + +@article{Hicks02, +author = {Illya V. Hicks}, +title = {Branchwidth heuristics}, +journal = cn, volume = 159, year = 2002, pages = {31-50}} + +%Hicks 2004 + +@article{Hicks04, +author = {Illya V. Hicks}, +title = {Branch decompositions and minor containment}, +journal = networks, volume = 43, year = 2004, pages = {1-9}} + +%Hicks 2005 + +@article{Hicks05a, +author = {Illya V. Hicks}, +title = {Planar branch decompositions {I}: {T}he ratcatcher}, +journal = informsjc, volume = 17, year = 2005, pages = {402-412}} + +@article{Hicks05b, +author = {Illya V. Hicks}, +title = {Planar branch decompositions {II}: {T}he cycle method}, +journal = informsjc, volume = 17, year = 2005, pages = {413-421}} + +@article{Hicks05, +author = {Illya V. Hicks}, +title = {Graphs, Branchwidth, and Tangles! {O}h My!}, +journal = networks, volume = 45, year = 2005, pages = {55-60}} + +@InCollection{HicksKK05, +author = {Hicks, Illya V. and Koster, Arie M. C. A. and Elif Koloto\u{g}lu}, +title = {Branch and Tree Decomposition Techniques for Discrete Optimization}, +booktitle = {TutORials 2005}, +editor = {J. Cole Smith}, +publisher = {INFORMS Annual Meeting}, +series = {INFORMS Tutorials in Operations Research Series}, +chapter = {1}, year = {2005}, pages = {1--29}, +} + +%Hicks 2007 + +@article{HicksM07, +author = {Illya V. Hicks and Nolan B. {McMurray Jr.}}, +title = {The branchwidth of graphs and their cycle matroids}, +journal = jctb, volume = 97, year = 2007, pages = {681-692}} + +%Hii + +@mastersthesis{Hiim97m, +author = {Bj\"orn Hiim}, +title = {Implementing and testing of algorithms for tree-like graphs}, +school = {University of Bergen}, +address = {Bergen, Norway}, +year = 1997} + +%Hir + +@article{HirschbergCS79, +author = {D. S. Hirschberg and A. K. Chandra and D. V. Sarwate}, +title = {Computing connected components on parallel computers}, +journal = cacm, volume = 22, year = 1979, pages = {461-464}} + +%Hl + +%Hli + +%Hlineny 2002 + +@article{Hlineny02, +author = {Petr Hlin\v{e}n\'{y}}, +title = {On the excluded minors for matroids of branch-width tree}, +journal = ejc, volume = 9, number = 1, year = 2002} + +%Hlineny 2003 + +@article{Hlineny03, +author = {Petr Hlin\v{e}n\'{y}}, +title = {Crossing-number critical graphs have bounded path-width}, +journal = jctb, volume = 88, pages = {347-367}, year = 2002} + +@techreport{HlinenyW03, +author = {Petr Hlin\v{e}n{\'y} and G. Whittle}, +title = {Matroid Tree-width}, +year = 2003, +address = {Ostrava, Czech Republic}, +institution = {Technical University Ostrava}, +note = {Extended abstract in Eurocomb'03, ITI Series 2003-145, Charles University}} + +%Hlineny 2005 + +@article{Hlineny05, +author = {Petr Hlin\v{e}n\'{y}}, +title = {A parameterized algorithm for matroid branch-width}, +journal = siamjc, volume = 35, year = 2005, pages = {259-277}} + +%Hlineny 2006 + +@article{Hlineny06, +author = {Petr Hlin\v{e}n\'{y}}, +title = {Branch-width, parse trees, and monadic second-order logic for matroids}, +journal = jctb, volume = 96, year = 2006, pages = {325-351}} + +@article{Hlineny06a, +author = {Petr Hlin\v{e}n\'{y}}, +title = {A parameterized algorithm for matroid branchwidth}, +journal = siamjc, volume = 35, year = 2006, pages = {259-277}} + +@article{Hlineny06b, +author = {Petr Hlin\v{e}n\'{y}}, +title = {Crossing number is hard for cubic graphs}, +journal = jctb, volume = 96, year = 2006, pages = {455-471}} + +@article{Hlineny06c, +author = {Petr Hlin\v{e}n\'{y}}, +title = {The {T}utte polynomial for matroids of bounded branch-width}, +journal = cpc, volume = 15, year = 2006, pages = {397-409}} + +@article{HlinenyS06, +author = {Petr Hlin\v{e}n{\'y} and Detlef Seese}, +title = {Trees, grids, and {MSO} decidability: From graphs to matroids}, +journal = tcs, volume = 351, pages = {425-436}, year = 2006} + +@article{HlinenyW06, +author = {Petr Hlin\v{e}n{\'y} and Geoff Whittle}, +title = {Matroid tree-width}, +journal = ejcom, volume = 27, year = 2006, pages = {1117-1128}} + +%Hlineny08 + +@article{HlinenyO08, +author = {Petr Hlin\v{e}n{\'y} and {Sang-il} Oum}, +title = {Finding branch-decompositions and rank-decompositions}, +journal = siamjc, volume = 38, year = 2008, pages = {1012-1032}} + +@article{HlinenyOSG08, +author = {Petr Hlin\v{e}n{\'y} and {Sang-il} Oum and Detlef Seese and Georg Gottlob}, +title = {Width parameters beyond tree-width and their applications}, +journal = tcj, volume = 51, year = 2008, pages = {326-362}} + +%Ho + +@article{HoL88, +author = {Chin-Wen Ho and Richard C. T. Lee}, +title = {Efficient parallel algorithms for finding maximal cliques, +clique trees, and minimum coloring on chordal graphs}, +journal = ipl, volume = 28, year = 1988, pages = {301-309}} + +@article{HoL89, +author = {Chin-Wen Ho and Richard C. T. Lee}, +title = {Counting clique trees and computing perfect elimination +schemes in parallel}, +journal = ipl, volume = 31, pages = {61-68}, year = 1989} + +%Hoe + +@article{HoeselM09, +author = {Hoesel, C. P. M. {v}an and B. Marchal}, +title = {Finding good tree decompositions by local search}, +journal = endm, volume = 32, year = 2009, pages = {43--50}} + +%Hof + +@article{HofPW09, +author = {Pim {van 't Hof} and Dani\"{e}l Paulusma and Gerhard J. Woeginger}, +title = {Partitioning graphs into connected parts}, +journal = tcs, volume = 410, year = 2009, pages = {4834-4843}} + +@article{HofP10, +author = {Pim {van 't Hof} and Dani\"{e}l Paulusma}, +title = {A new characterization of {$P_6$}-free graphs}, +journal = dam, volume = 158, year = 2010, pages = {731-740}} + +%Hoh + +@unpublished{HohbergR89, +author = {Walter Hohberg and R\"udiger Reischuk}, +title = {Decomposition of Graphs --- A Uniform Approach for the Design +of Fast Sequential and Parallel Algorithms on Graphs}, +year = 1989, note = {Preprint}} + +@mastersthesis{Hohberg89, +author = {Walter Hohberg}, +title = {Zerlegung von {G}raphen --- ein allgemeines, sequentielles und +paralleles {L}\"{o}sungsverfahren f\"{u}r Graphprobleme}, +school = {TH Darmstadt}, +note = {Dissertation}, +year = 1989} + +@unpublished{HohbergR90, +author = {Walter Hohberg and R\"udiger Reischuk}, +title = {A Framework to Design Algorithms for Optimization Problems on Graphs}, +note = {Preprint}, year = 1990, month = {4}} + +%Hol + +@article{Holst02, +author = {Hein {van der Holst}}, +title = {On the ''Largeur d'Arborescence''}, +journal = jgt, volume = 41, pages = {24-52}, year = 2002} + +@article{Holst09, +author = {Hein {van der Holst}}, +title = {A polynomial-time algorithm to find a linkless embedding of a graph}, +journal = jctb, volume = 99, year = 2009, pages = {512-530}} + +@article{Holyer81, +author = {Ian Holyer}, +title = {The {NP}-Completeness of Edge-coloring}, +journal = siamjc, volume = 10, year = 1981, pages = {718-720}} + +%Hon + +@article{HongR82, +author = {J. Hong and A. Rosenberg}, +title = {Graphs that are almost binary trees}, +journal = siamjc, volume = 11, year = 1982, pages = {227-242}} + +@article{HongMR83, +author = {J. Hong and K. Mehlhorn and A. Rosenberg}, +title = {Cost trade-offs in graph embeddings, with applications}, +journal = jacm, volume = 30, year = 1983, pages = {709-728}} + +@article{HongP06, +author = {B. Hong and V. K. Prasanna}, +title = {Maximum lifetime data sensing and extraction in energy +constrained networked sensor systems}, +journal = jpdc, volume = 66, number = 4, year = 2006, pages = {566-577}} + +%Hoo + +@phdthesis{Hoover90, +author = {Mark Hoover}, +title = {Complexity, Structure and Algorithms for Edge-Partition +Problems}, +school = {University of New Mexico}, +address = {Albuquerque, New Mexico, USA}, +year = 1990} + +%Hop + +@article{HopcroftT73, +author = {J. E. Hopcroft and Robert Endre Tarjan}, +title = {Dividing a graph into triconnected components}, +journal = siamjc, volume = 2, pages = {135-158}, year = 1973} + +@article{HopcroftT74, +author = {J. E. Hopcroft and Robert Endre Tarjan}, +title = {Efficient planarity testing}, +journal = jacm, volume = 21, pages = {549-568}, year = 1974 } + +@article{HopcroftK75, +author = {J. E. Hopcroft and R. M. Karp}, +title = {An $n^{5/2}$ Algorithm for Maximum Matching in Bipartite +Graphs}, +journal = siamjc, volume = 2, year = 1973, pages = {225-231}} + +@article{HopcroftPV77, +author = {J. E. Hopcroft and W. Paul and L. Valiant}, +title = {On time versus space}, +journal = jacm, volume = 24, year = 1977, pages = {332-337}} + +%Hor + +@book{HorowitzS78, +author = {Ellis Horowitz and Sartaj Sahni}, +title = {Fundamentals of Computer Algorithms}, +publisher = {Pitman}, address = {London}, year = 1978} + +%Hou + +@article{HougardyPS94, +author = {S. Hougardy and H. J. Pr\"{o}mel and A. Steger}, +title = {Probabilistically checkable proofs and their consequences for +approximation algorithms}, +journal = dm, volume = 136, year = 1994, pages = {175-223}} + +%Hs + +%Hsi + +@article{HsiehHHKC02, +author = {Sun-Yuan Hsieh and Chin-Wen Ho and Tsan-Sheng Hsu and Ming-Tat Ko +and Gen-Huey Chen}, +title = {Characterization of efficiently parallel solvable problems on +distance-hereditary graphs}, +journal = sjdm, volume = 15, year = 2002, pages = {488-518}} + +@article{Hsieh05, +author = {Sun-Yuan Hsieh}, +title = {Efficiently parallelizable problems on a class of decomposable +graphs}, +journal = jcss, volume = 70, year = 2005, pages = {140-156}} + +%Hsu + +@article{Hsu85, +author = {Wen-Lian Hsu}, +title = {Maximum weight clique algorithms for circular-arc graphs and +circle graphs}, +journal = siamjc, volume = 14, year = 1985, pages = {224-231}} + +@article{Hsu87, +author = {Wen-Lian Hsu}, +title = {Decomposition of perfect graphs}, +journal = jctb, volume = 43, year = 1987, pages = {70-94}} + +@article{Hsu87a, +author = {Wen-Lian Hsu}, +title = {Recognizing planar perfect graphs}, +journal = jacm, volume = 34, year = 1987, pages = {255-288}} + +@article{Hsu88, +author = {Wen-Lian Hsu}, +title = {The Coloring and Maximum Independent Set problems on planar +perfect graphs}, +journal = jacm, volume = 35, year = 1988, pages = {535-563}} + +@inproceedings{Hsu93, +author = {Wen-Lian Hsu}, +title = {A simple test for interval graphs}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {11-16}} + +%Hu + +%Hua + +@article{Huang06, +author = {Jing Huang}, +title = {Representation characterizations of chordal bipartite graphs}, +journal = jctb, volume = 96, year = 2006, pages = {673-683}} + +%Huf + +@phdthesis{Huffner08, +author = {Falk H\"{u}ffner}, +title = {Algorithms and Experiments for Parameterized Approaches to Hard Graph Problems}, +year = {2008}, +school = {Friedrich-Schiller University}, +address = {Jena, Germany}} + +@inproceedings{HuffnerKMN08, +author = {Falk H\"{u}ffner and Christian Komusiewicz and Hannes Moser and Rolf Niedermeier}, +title = {Fixed-parameter algorithms for cluster vertex deletion}, +editor = {Eduardo Sany Laber and Claudson F. Bornstein and Loana Tito Nogueira and Luerbio Faria}, +booktitle = latin08, year = 2008, publisher = lncs4957, pages = {711-722}} + +@article{HuffnerKMN09, +author = {Falk H\"{u}ffner and Christian Komusiewicz and Hannes Moser and Rolf Niedermeier}, +title = {Isolation concepts for clique enumeration: Comparison and computational experiments}, +journal = tcs, volume = 410, year = 2009, pages = {5384-5397}} + +%Hun + +@book{Hungerford74, +author = {Thomas W. Hungerford}, +title = {Algebra}, +publisher = {Springer-Verlag, New York}, +series = {Graduate Texts in Mathematics 73}, +year = 1974 } + +@techreport{HuntMRRRS93, +author = {H. B. {Hunt, III} and Madhav V. Marathe and Venkatesh Radhakrishnan and S. S. +Ravi and D. J. Rosenkrantz and Richard E. Stearns}, +title = {Every Problem in {MAX SNP} has a Parallel Approximation Algorithm}, +number = {TR 93-8}, +institution = {Dept. of Computer Science, University at Albany - SUNY}, +address = {Albany, NY}, +year = 1993} + +@article{HunterK08, +author = {Paul Hunter and Stephan Kreutzer}, +title = {Digraph measures: {K}elly decompositions, games, and orderings}, +journal = tcs, volume = 399, year = 2008, pages = {206-219}} + +%Hur + +@article{HurinkN08, +author = {Johann L. Hurink and Tim Nieberg}, +title = {Approximating minimum independent dominating sets in wireless +networks}, +journal = ipl, volume = 109, year = 2008, pages = {155-160}} + +%I + +%Ib + +%Iba + +@article{Ibarra09, +author = {Louis Ibarra}, +title = {The clique-separator graph for chordal graphs}, +journal = dam, volume = 157, year = 2009, pages = {1737-1749}} + +@article{Ibarra10, +author = {Oscar H. Ibarra and Igor Potapov and Hsu-Chun Yen}, +title = {On decision problems for parameterized machines}, +journal = tcs, volume = 411, year = 2010, pages = {1192-1201}} + +%Id + +%Idu + +@article{IduryS93, +author = {R. Idury and A. Schaffer}, +title = {Triangulating three-colored graphs in linear time and linear space}, +journal = sjdm, volume = 2, pages = {289-293}, year = 1993} + +%Ih + +@inproceedings{Ihler93, +author = {E. Ihler}, +title = {Minimum rectilinear {S}teiner trees for intervals on two parallel lines}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {123-134}} + +%Im + +%Imp + +@article{ImpagliazzoPZ01, +author = {Russell Impagliazzo and Ramamohan Paturi and Francis Zane}, +title = {Which problems have strongly exponential complexity?}, +journal = jcss, volume = 63, year = 2001, pages = {512-530}} + +%In + +%Inm + +@manual{Inmos91, +title = {The T9000 Transputer Products Overview Manual}, +organization = {Inmos}, year = 1991} + +%Ir + +%Irv + +@article{Irving85, +author = {Robert W. Irving}, +title = {An efficient algorithm for the stable roommates problem}, +journal = ja, volume = 6, year = 1985, pages = {577-595}} + +@article{IrvingL86, +author = {Robert W. Irving and P. Leather}, +title = {The complexity of counting stable marriages}, +journal = siamjc, volume = 15, year = 1986, pages = {655-667}} + +@article{IrvingLG87, +author = {Robert W. Irving and P. Leather and D. Gusfield}, +title = {An efficient algorithm for the ``optimal'' stable marriage}, +journal = jacm, volume = 34, year = 1987, pages = {532-543}} + +@article{Irving91, +author = {Robert W. Irving}, +title = {On approximating the minimum independent dominating set}, +journal = ipl, volume = 37, year = 1991, pages = {197-200}} + +%Is + +%Isl + +@article{IslerK08, +author = {Volkan Isler and Nikhil Karnad}, +title = {The role of information in the cop-robber game}, +journal = tcs, volume = 399, year = 2008, pages = {169-178}} + +%Iso + +@article{IsobeZN99, +author = {Shuji Isobe and Xiao Zhou and Takao Nishizeki}, +title = {A polynomial-time algorithm for finding total colorings of partial +$k$-trees}, +journal = ijfcs, volume = 10, pages = {171-194}, year = 1999} + +%It + +%Ita + +@article{ItaiR78, +author = {A. Itai and M. Rodeh}, +title = {Finding a Minimum Circuit in a Graph}, +journal = siamjc, volume = 7, year = 1978, pages = {413-423}} + +@article{ItaiPS94, +author = {A. Itai abd C. H. Papadimitriou and J. L. Szwartzfiter}, +title = {Hamiltonian paths in grid graphs}, +journal = siamjc, volume = 11, year = 1984, pages = {676-684}} + +@inproceedings{ItalianoMN89, +author = {G. F. Italiano and A. {Marchetti Spaccamela} and U. Nanni}, +title = {Dynamic data structures for series parallel digraphs}, +editor = {Frank K. H. A. Dehne and J\"{o}rg-R\"{u}diger Sach and Nicola Santoro}, +booktitle = wads89, pages = {352-372}, year = 1989, publisher = lncs382} + +%Ito + +@article{ItoNZ03, +author = {T. Ito and T. Nishizeki and X. Zhou}, +title = {Algorithms for multicolorings of partial $k$-trees}, +journal = {IEICE Transactions on Information and Systems}, volume = {E86-D}, year = 2003, pages = {191-200}} + +@article{ItoZN06, +author = {Takehiro Ito and Xiao Zhou and Takao Nishizeki}, +title = {Partitioning a graph of bounded tree-width to connected subgraphs of almost uniform size}, +journal = jda, volume = 4, year = 2006, pages = {142-154}} + +%Iy + +@article{IyerRV88, +author = {A. V. Iyer and H. D. Ratliff and G. Vijayan}, +title = {Optimal node ranking of trees}, +journal = ipl, volume = 28, year = 1988, pages = {225-229}} + +@article{IyerRV91, +author = {A. V. Iyer and H. D. Ratliff and G. Vijayan}, +title = {On an edge-ranking problem of trees and graphs}, +journal = dam, volume = 30, year = 1991, pages = {43-52}} + +%J + +%Ja + +%Jai + +@unpublished{JainC??, +author = {Amit Jain and N. Chandrasekharan}, +title = {An efficient parallel algorithm for min-cost flow on directed +series-parallel networks}, +note = {Manuscript}} + +%Jaj + +@book{Jaja92, +author = {Joseph J{\'{a}}J{\'{a}}}, +title = {An Introduction to Parallel Algorithms}, +year = 1992, publisher = {Addison-Wesley}} + +%Jak + +@article{JakobyLR06, +author = {Andreas Jakoby and Maciej Li\'{s}kiewicz and R\"{u}diger Reischuk}, +title = {Space efficient algorithms for directed series-parallel graphs}, +journal = ja, volume = 60, year = 2006, pages = {85-114}} + +%Jam + +@article{JamisonO89, +author = {B. Jamison and S. Olariu}, +title = {$P_4$-reducible graphs, a class of uniquely tree representable graphs}, +journal = sam, volume = 81, year = 1989, pages = {79-87}} + +@article{JamisonO89b, +author = {B. Jamison and S. Olariu}, +title = {On a Class of {$P_5$}-Free Graphs}, +journal = sam, volume = 81, year = 1989, pages = {33-39}} + +@article{JamisonO91, +author = {B. Jamison and S. Olariu}, +title = {On a unique tree representation for {$P_4$}-extendible graphs}, +journal = dam, volume = 34, year = 1991, pages = {151-164}} + +@article{JamisonO92, +author = {B. Jamison and S. Olariu}, +title = {A tree representation for {$P_4$}-sparse graphs}, +journal = dam, volume = 35, year = 1992, pages = {115-129}} + +@unpublished{JamisonO92a, +author = {B. Jamison and S. Olariu}, +title = {P-components and the Homogeneous Decomposition of Graphs}, +note = {Manuscript}, +year = {1992}} + +@article{JamisonO92b, +author = {B. Jamison and S. Olariu}, +title = {Recognizing $P_4$-sparse graphs in linear time}, +journal = siamjc, volume = 21, number = 2, year = 1992, pages = {381-406}} + +@inproceedings{JamisonO93, +author = {B. Jamison and S. Olariu}, +title = {On the homogeneous decomposition of graphs}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {170-183}} + +%Jan + +%Jansen 1990 + +@techreport{Jansen90, +author = {Klaus Jansen}, +title = {An Assignment Problem for Hardware Design}, +type = {Arbeitsberichte}, +number = 27, year = 1990, +institution = {Universit\"{a}t Trier, Mathematik}} + +@techreport{Jansen90a, +author = {Klaus Jansen}, +title = {Interval Union of Graphs}, +type = {Arbeitsberichte}, +number = 27, year = 1990, +institution = {Universit\"{a}t Trier, Mathematik}} + +%Jansen 1993 + +@inproceedings{Jansen93, +author = {Klaus Jansen}, +title = {On scheduling problems restricted to interval orders}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {27-36}} + +@inproceedings{JansenS93, +author = {Klaus Jansen and Petra Scheffler}, +title = {Generalized Coloring for Tree-like Graphs}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {50-59}} + +%Jansen 1997 + +@article{JansenS97, +author = {Klaus Jansen and Petra Scheffler and Gerhard Woeginger}, +title = {The disjoint cliques problem}, +journal = {RAIRA Recherhe Operationelle}, volume = 31, year = 1997, pages = {45-66}} + +%Jansen 2006 + +@article{JansenKLS06, +author = {K. Jansen and M. Karpinski and A. Lingas and E. Seidel}, +title = {Polynomial time approximation schemes for max-bisection on planar and +geometric graphs}, +journal = siamjc, volume = 35, year = 2006, pages = {110-119}} + +%Jansen 2009 + +@mastersthesis{Jansen09, +author = {Bart Jansen}, +title = {Fixed parameter complexity of the weighted max leaf problem}, +year = 2009, +school = {Department of Computer Science, Utrecht University}} + +%Je + +%Jeg + +@article{JegouT03, +author = {Philippe J\'{e}gou and Cyril Terrioux}, +title = {Hybrid backtracking bounded by tree-decomposition of constraint networks}, +journal = ai, volume = 146, year = 2003, pages = {43-75}} + +@inproceedings{JegouNT05, +author = {Philippe J\'{e}gou and Samba Ndiaye and Cyril Terrioux}, +title = {Computing and Exploiting Tree-Decompositions for Solving Constraint Networks}, +booktitle = {Proceedings of the 11th International Conference on Principles and Practice of Constraint Programming, CP 2005}, +publisher = lncs3709, year = 2005, pages = {777-781}} + +%Jel + +@article{Jelinek10, +author = {V\'{\i}t Jel\'{\i}nek}, +title = {The rank-width of the square grid}, +journal = dam, volume = 158, year = 2010, pages = {841-850}} + +%Jen + +@book{Jensen01, +author = {F. V. Jensen}, +title = {Bayesian Networks and Decision Graphs}, +publisher = {Statistics for Engineering and Information Science, +Springer-Verlag}, +address = {New York}, +year = 2001} + +%Ji + +%Jin + +@article{JinL06, +author = {Zemin Jin and Xueliang Li}, +title= {On the $k$-path cover problem for cacti}, +journal = tcs, pages = {354-363}, year = 2006, volume = 355} + +%Jo + +%Joh + +@article{Johansson98, +author = {{\"{O}}jvind Johansson}, +title = {Clique-decomposition, {NLC}-decomposition, and modular +decomposition-relationships and results for random graphs}, +journal = cn, volume = 132, pages = {39-60}, year = 1998} + +@article{Johansson00, +author = {{\"{O}}jvind Johansson}, +title = {NLC$_2$-decomposition in polynomial time}, +journal = ijfcs, volume = 11, year = 2000, pages = {373-395}} + +%Johnson 1983 + +@article{Johnson83, +author = {D. S. Johnson}, +title = {The {NP}-completeness column: {An} ongoing guide}, +journal = ja, volume = 4, year = 1983, pages = {397-411}} + +%Johnson 1985 + +@article{Johnson85, +author = {David S. Johnson}, +title = {The {NP}-completeness Column: An Ongoing Guide}, +journal = ja, year = 1985, volume = 6, pages = {434-451}} + +%Johnson 1987 + +@article{Johnson87, +author = {David S. Johnson}, +title = {The {NP}-completeness Column: An Ongoing Guide}, +journal = ja, year = 1987, volume = 8, pages = {285-303}} + +@article{JohnsonP87, +author = {David S. Johnson and H. O. Pollak}, +title = {Hypergraph planarity and the complexity of drawing Venn diagrams}, +journal = jgt, volume = 11, year = 1987, pages = {309-326}} + +%Johnson 1988 + +@article{JohnsonYP88, +author = {David S. Johnson and Mihalis Yannakakis and +Christos H. Papadimitriou}, +title = {On generating all maximal independent sets}, +journal = ipl, year = 1988, volume = 27, pages = {119-123}} + +%Johnson 2001 + +@article{JohnsonRST01, +author = {T. Johnson and N. Robertson and P. D. Seymour and R. Thomas}, +title = {Directed tree-width}, +journal = jctb, volume = 82, year = 2001, pages = {138-154}} + +%Ju + +@article{JungckDD82, +author = {John R. Jungck and Gregg Dick and Amy Gleason Dick}, +title = {Computer-assisted sequencing, interval graphs, and molecular evolution}, +journal = {BioSystems}, volume = 15, year = 1982, pages = {259-273}} + +%K + +%Ka + +%Kab + +@inproceedings{Kabanets97, +author = {Valentine Kabanets}, +title = {Recognizability Equals Definability for Partial $k$-Paths}, +editor = {Pierpaolo Degano and Roberto Gorrieri and Alberto Marchetti-Spaccamela}, +booktitle = icalp97, year = 1997, publisher = lncs1256, pages = {805-815}} + +%Kai + +@article{Kaiser09, +author = {T. Kaiser}, +title = {Minors of simplicial complexes}, +journal = dam, volume = 157, year = 2009, pages = {2597-2602}} + +%Kaj + +@article{KajitaniIU86, +author = {Y. Kajitani and A. Ishizuka and S. Ueno}, +title = {Characterization of partial 3-trees in terms of three structures}, +journal = gc, volume = 2, year = 1986, pages = {233-246}} + +%Kal + +%Kall + +@inproceedings{Kaller95, +author = {Damon Kaller}, +title = {Definability equals recognizability of partial 3-trees}, +editor = {Fabrizio d'Amore and Paolo Giulio Franciosa and Alberto Marchetti-Spaccamela}, +booktitle = wg96, pages = {239-253}, year = 1997, publisher = lncs1197} + +@inproceedings{KallerGS95, +author = {Damon Kaller and A. Gupta and T. Shermer}, +title = {Regular-factors in the complement of partial $k$-trees}, +editor = {Selim G. Akl and Frank K. H. A. Dehne and J\"{o}rg-R\"{u}diger Sack and Nicola Santoro}, +booktitle = wads95, publisher = lncs955, pages = {403-414}, year = 1995} + +@inproceedings{KallerGS95a, +author = {Damon Kaller and A. Gupta and T. Shermer}, +title = {The $\chi_t$-coloring problem}, +editor = {Ernst W. Mayr and Claude Puech}, +booktitle = stacs95, publisher = lncs900, pages = {409-420}, year = 1995} + +@article{Kaller00, +author = {Damon Kaller}, +title = {Definability equals recognizability of partial 3-trees and +$k$-connected partial $k$-trees}, +journal = alg, volume = 27, year = 2000, pages = {348-381}} + +%Kalp + +@article{KalpakisDN03, +author = {K. Kalpakis and K. Dasgupta and P. Namjoshi}, +title = {Efficient algorithms for maximum lifetime data gathering +and aggregation in wireless sensor networks}, +journal = cnet, volume = 42, number = 6, year = 2003, pages = {697-716}} + +%Kam + +@article{MainskiLM09, +author = {Marcin Kami\'{n}ski and Vadim V. Lozin and Martin Milani\v{c}}, +title = {Recent developments on graphs of bounded clique-width}, +journal = dam, volume = 157, year = 2009, pages = {2747-2761}} + +@inproceedings{KammerT08, +author = {Frank Kammer and Torsten Tholey}, +title = {The complexity of minimum convex coloring}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {16-27}} + +%Kan + +@article{KanevskyR91, +author = {A. Kanevsky and V. Ramachandran}, +title = {Improved algorithms for graph four-connectivity}, +journal = jcss, volume = 42, year = 1991, pages = {288-306}} + +@inproceedings{KanjPS04, +author = {Iyad A. Kanj and Michael J. Pelsmajer and Marcus Schaefer}, +title = {Parameterized algorithms for feedback vertex set}, +editor = {R. G. Downey and M. R. Fellows}, +booktitle = iwpec04, year = 2004, publisher = lncs3162, pages = {235-248}} + +@article{KannanW92, +author = {Sampath Kannan and Tandy Warnow}, +title = {Triangulating 3-colored graphs}, +journal = sjdm, volume = 5, year = 1992, pages = {249-258}} + +@article{KannanW94, +author = {Sampath Kannan and Tandy Warnow}, +title = {Inferring Evolutionary History from {DNA} sequences}, +journal = siamjc, volume = 23, year = 1994, pages = {713-737}} + +@article{KannanW97, +author = {Sampath Kannan and Tandy Warnow}, +title = {A fast algorithm for the computation and enumeration of perfect phylogenies}, +journal = siamjc, volume = 26, year = 1997, pages = {1749-1763}} + +@techreport{Kant91, +author = {Goos Kant}, +title = {Linear Planar Augmentation Algorithms for Outerplanar +Graphs}, +type = {Technical Report}, +number = {RUU-CS-91-47}, +institution = {Utrecht University}, +year = 1991} + +@inproceedings{Kant93, +author = {Goos Kant}, +title = {Hexagonal grid drawings}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {263-276}} + +@phdthesis{Kant93a, +author = {Goos Kant}, +title = {Algorithms for Drawing Planar Graphs}, +school = {Utrecht University}, year = 1993} + +@article{Kant96, +author = {Goos Kant}, +title = {Augmenting Outerplanar Graphs}, +journal = ja, volume = 21, pages = {1-25}, year = 1996} + +@article{KantB97, +author = {Goos Kant and Hans L. Bodlaender}, +title = {Triangulating Planar Graphs While Minimizing the Maximum +Degree}, +journal = ic2, volume = 135, pages = {1-14}, year = 1997} + + +%Kap + +%Kaplan 1994 + +@inproceedings{KaplanST94, +author = {Haim Kaplan and Ron Shamir and Robert Endre Tarjan}, +title = {Tractability of parameterized completion problems on +chordal and interval graphs: Minimum Fill-in and Physical Mapping}, +booktitle = focs94, pages = {780-791}, year = 1994} + +%Kaplan 1996 + +@article{KaplanS96, +author = {Haim Kaplan and Ron Shamir}, +title = {Pathwidth, Bandwidth and Completion Problems to Proper Interval +Graphs with Small Cliques}, +journal = siamjc, volume = 25, pages = {540-561}, year = 1996} + +%Kaplan 1999 + +@article{KaplanST99, +author = {Haim Kaplan and Ron Shamir and Robert Endre Tarjan}, +title = {Tractability of parameterized completion problems on chordal, +strongly chordal, and proper interval graphs}, +journal = siamjc, volume = 28, year = 1999, pages = {1906-1922}} + +%Kaplan 2009 + +@inproceedings{KaplanN09, +author = {Haim Kaplan and Yahav Nussbaum}, +title = {Maximum flow in directed planar graphs with vertex capacities}, +editor = {Amos Fiat and Peter Sanders}, +booktitle = esa09, publisher = lncs5757, year = 2009, +pages = {397-407}} + +%Kar + +@inproceedings{Karp72, +author = {Richard M. Karp}, +title = {Reducibility among combinatorial problems}, +booktitle = {Complexity of Computer Computations}, +publisher = {Plenum Press}, year = 1972, +editor = {R. E. Miller and J. W. Thatcher}, +pages = {85 - 104}} + +@article{Karp75, +author = {Richard M. Karp}, +title = {On the complexity of combinatorial problems}, +journal = networks, year = 1975, volume = 5, pages = {45-68}} + +@article{KarpUW86, +author = {R. M. Karp and E. Upfal and A. Wigderson}, +title = {Constructing a maximum matching is in random {NC}}, +journal = comb, volume = 6, year = 1986, pages = {35-48}} + +@inproceedings{Karp93, +author = {Richard M. Karp}, +title = {Mapping the Genome: Some Combinatorial Problems Arising in +Molecular Biology}, +year = 1993, +booktitle = stoc93, pages = {278-285}, publisher = {ACM Press}, +address = {New York} +} + +@techreport{KarpinskiWZ97, +author = {Marek Karpinski and J\"{u}rgen Wirtgen and Alex Zelikovsky}, +title = {An approximation algorithm for the bandwidth problem on dense graphs}, +number = {TR97-017}, +type = {Electronic Colloquium on Computational Complexity Report}, +year = 1997} + +@article{Karonski82, +author = {M. Karonski}, +title = {On the number of $k$-trees in a random graph}, +journal = pms, volume = 2, year = 1982, pages = {197-205}, +something = {Fasc. 2}} + +%Kas + +@article{KashemZN00, +author = {Md. Abul Kashem and Xiao Zhou and Takao Nishizeki}, +title = {Algorithms for generalized vertex-rankings of partial $k$-trees}, +journal = tcs, volume = 240, year = 2000, pages = {407-427}} + +@inproceedings{KashiwabaraF79, +author = {T. Kashiwabara and T. Fujisawa}, +title = {An {NP}-complete problem on interval graphs}, +booktitle = {Proc. IEEE Symp. on Circuits and Systems}, +year = 1979, pages = {82-83}} + +%Kav + +@techreport{KavvadiasPSZ94, +author = {D. Kavvadias and G. Pantziou and P. Spirakis and C. Zaroliagis}, +title = {Hammock-on-Ears Decomposition: A Technique for the Efficient Parallel +Solution of Shortest Paths and Other Problems}, +number = {MPI-I-94-131}, +year = 1994, +institution = {Max-Planck-Institut f\"{u}r Informatik}, +address = {Saarbr\"{u}cken, Germany}} + +%Kaw + +@inproceedings{KawarabayashiM08, +author = {Ken-ichi Kawarabayashi and Bojan Mohar}, +title = {Graph and map isomorphism and all polyhedral embeddings in linear time}, +booktitle = stoc08, year = 2008, pages = {471-480}} + +@article{KawarabayashiT09, +author = {Ken-ichi Kawarabayashi and Carsten Thomassen}, +title = {Decomposing a planar graph into an independent set and a forest}, +journal = jctb, volume = 99, year = 2009, pages = {674-684}} + +%Kay + +@article{Kaye00, +author = {Richard Kaye}, +title = {Minesweeper is {NP}-complete}, +journal = {The Mathematical Intelligencer}, volume = 22, year = 2000, pages = {9-15}} + +%Ke + +@article{KeijsperPS06, +author = {J. C. M. Keijsper and R. A. Pendavingh and L. Stougie}, +title = {A linear programming formulation of {M}ader's edge-disjoint paths problem}, +journal = jctb, volume = 96, pages = {159-163}, year = 2006} + +@article{Keil85, +author = {J. Mark Keil}, +title = {Finding {H}amiltonian Circuits in Interval Graphs}, +journal = ipl, year = 1985, volume = 20, pages = {201-206} +} + +@article{Keil86, +author = {J. Mark Keil}, +title = {Total domination in interval graphs}, +journal = ipl, year = 1986, volume = 22, pages = {171-174}} + +%Kh + +@article{Khuller90, +author = {Samir Khuller}, +title = {Extending planar graph algorithms to {$K_{3,3}$}-free +graphs}, +journal = ic2, volume = 84, year = 1990 , pages = {13-25}} + +@article{Khuller90a, +author = {Samir Khuller}, +title = {Coloring algorithms for {$K_5$}-minor free graphs}, +journal = ipl, volume = 34, year = 1990, pages = {203-208}} + +@article{KhullerS91, +author = {Samir Khuller and Baruch Schieber}, +title = {Efficient parallel algorithms for testing $k$-connectivity +and finding disjoint $s$-$t$ paths in graphs}, +journal = siamjc, volume = 20, year = 1991, pages = {353-375}} + +%Ki + +%Kie + +@article{KiersteadT94, +author = {H. A. Kierstead and W. T. Trotter}, +title = {Planar graph coloring with an uncooperative partner}, +year=1994, +journal = jgt, volume = 18, number = 6, pages = {569-584}} + +@article{Kierstead00, +author = {H. A. Kierstead}, +title = {A simple competitive graph coloring algorithm}, +journal = jctb, volume = 78, pages = {57-68}, year = 2000} + +@article{KiersteadT01, +author = {H. A. Kierstead and W. T. Trotter}, +title = {Competive colorings of oriented graphs}, +journal = ejc, volume = 8, number = 2, year = 2001, pages={R12}} + +%Kik + +@article{KikunoYK83, +author = {T. Kikuno and N. Yoshida and Y. Kakuda}, +title = {A Linear Algorithm for the Domination Number of a Series-Parallel +Graph}, +journal = dam, volume = 5, year = 1983, pages = {299-311}} + +%Kim + +@article{Kim90, +author = {S. K. Kim}, +title = {A parallel algorithm for finding a maximum clique in a set of +circular arcs of a circle}, +journal = ipl, volume = 34, year = 1990, pages = {235-242}} + +@article{Kim90a, +author = {H. Kim}, +title = {Finding a maximum independent set in a permutation graph}, +journal = ipl, volume = 36, year = 1990, pages = {19-24}} + +%Kin + +@article{KindervaterLS89, +author = {Gerard A. P. Kindervater and Jan Karel Lenstra and David B. +Schmoys}, +title = {The parallel complexity of {TSP} heuristics}, +journal = ja, volume = 10, year = 1989, pages = {249-270}} + +%Kinnersley 1989 + +@phdthesis{Kinnersley89, +author = {Nancy G. Kinnersley}, +title = {Obstruction Set Isolation for Layout Permutation Problems}, +school = {Washington State University}, +year = 1989, month = {5}, pages = {i-x,1-217}} + +%Kinnersley 1992 + +@article{Kinnersley92, +author = {Nancy G. Kinnersley}, +title = {The vertex separation number of a graph equals its path width}, +journal = ipl, volume = 42, pages = {345-350}, year = 1992} + +%Kinnersley 1994 + +@techreport{Kinnersley94, +author = {Nancy G. Kinnersley}, +title = {Construction obstruction set isolation for min cut linear +arrangement}, +type = {Technical Report}, +number = {94-1}, +institution = {Department of Computer Science, University of Kansas}, +address = {Lawrence, Kansas, USA}, +year = 1994} + +@article{KinnersleyK94, +author = {Nancy G. Kinnersley and William M. Kinnersley}, +title = {Tree automata for cutwidth recognition}, +journal = cn, volume = 104, year = 1994, pages = {129-142}} + +@article{KinnersleyK94a, +author = {Nancy G. Kinnersley and William M. Kinnersley}, +title = {An efficient polynomial-time algorithm for three-track gate matrix layout}, +journal = tcj, volume = 37, year = 1994, pages = {449- 462}} + +@article{KinnersleyL94, +author = {Nancy G. Kinnersley and Michael A. Langston}, +title = {Obstruction Set Isolation for the Gate Matrix Layout Problem}, +journal = dam, volume = 54, year = 1994, pages = {169-213}} + +%Kir + +@article{Kirchhoff1847, +author = {G. Kirchhoff}, +title = {\"{U}ber die {A}ufl\"{o}sung der {G}leichugen, auf welche man bei der +{U}ntersuchung der Linearen {V}erteilung Galvanischer {S}tr\"{o}me gef\"{u}hrt wird}, +journal = {Ann. Phys. Chem.}, volume = 71, year = 1847, pages = {497-508}} + +@article{KirousisP85, +author = {Lefteris M. Kirousis and Christos H. Papadimitriou}, +title = {Interval graphs and searching}, +journal = dm, volume = 55, year = 1985, pages = {181-184}} + +@article{KirousisP86, +author = {Lefteris M. Kirousis and Christos H. Papadimitriou}, +title = {Searching and pebbling}, +journal = tcs, volume = 47, year = 1986, pages = {205-218}} + +@unpublished{KirousisT94, +author = {Lefteris M. Kirousis and Dimitrios M. Thilikos}, +title = {The linkage of a graph}, +note = {Manuscript}, +year = 1994} + +%Kj + +@techreport{Kjaerulff90, +author = {U. Kj{\ae}rulff}, +title = {Triangulation of Graphs --- Algorithms Giving Small Total State Space}, +type = {Research Report}, number = {R-90-09}, +institution = {Dept. of Mathematics and Computer Science, Aalborg University}, +year = 1990} + +@article{Kjaerulff92, +author = {U. Kj{\ae}rulff}, +title = {Optimal decomposition of probabilistic networks by simulated annealing}, +journal = {Statistics and Computing}, volume = 2, year = 1992, pages = {2-17}} + +%Kl + +%Kla + +@article{KlaweCP82, +author = {M. M. Klawe and Derek G. Corneil and Andrzej Proskurowski}, +title = {Isomorphism testing in hookup classes}, +journal = sjadm, volume = 3, pages = {260-274}, year = 1982 } + +%Kle + +@inproceedings{Klein88, +author = {Philip N. Klein}, +title = {Efficient parallel algorithms for chordal graphs}, +booktitle = focs88, pages = {150-161}, year = 1988 } + +@article{KleinS90, +author = {Philip Klein and Clifford Stein}, +title = {A parallel algorithm for eliminating cycles in undirected +graphs}, +journal = ipl, volume = 34, year = 1990, pages = {307-312}} + +@inproceedings{KleinARR90, +author = {Philip Klein and Ajit Agrawal and R. Ravi and Satish Rao}, +title = {Approximation through multicommodity flow}, +booktitle = focs90, year = 1990, pages = {726-737}} + +@inproceedings{Kleinberg00, +author = {Jon Kleinberg}, +title = {The small-world phenomenon: An algorithmic perspective}, +booktitle = stoc00, +pages = {163-170}, year = 2000} + +@book{KleinbergT05, +author = {Jon Kleinberg and \'{E}va Tardos}, +title = {Algorithm Design}, +publisher = {Addison-Wesley}, +address = {Boston}, +year = 2005} + +@article{KleitmanV90, +author = {Daniel J. Kleitman and Rakesh V. Vohra}, +title = {Computing the bandwidth of interval graphs}, +journal = sjdm, volume = 3, year = 1990, pages = {373-375}} + +%Klo + +%Kloks 1992 + +@inproceedings{KloksB92, +author = {Ton Kloks and Hans Bodlaender}, +title = {Approximating Treewidth and Pathwidth of Some Classes of Perfect Graphs}, +editor = {Toshihide Ibaraki and Yasuyoshi Inagaki and Kazuo Iwama and Takao Nishizeki and Masafumi Yamashita}, +booktitle = isaac92, year = 1992, publisher = lncs650, pages = {116-125}} + +%Kloks 1993 + +@phdthesis{Kloks93+, +author = {Ton Kloks}, +title = {Treewidth}, +school = {Utrecht University, Utrecht, The Netherlands}, +year = 1993} + +@book{Kloks93, +author = {Ton Kloks}, +title = {Treewidth. Computations and Approximations}, +publisher = {Springer-Verlag}, +address = {Berlin}, +series = {Lecture Notes in Computer Science, Vol. 842}, +year = 1994} + +@techreport{KloksKS93, +author = {Ton Kloks and Dieter Kratsch and J. Spinrad}, +title = {Treewidth and pathwidth of cocomparability graphs of bounded +dimension}, +type = {Computing Science Notes}, number = {93-46}, +institution = {Eindhoven University of Technology}, year = 1993} + +%Kloks 1994 + +@article{Kloks94, +author = {Ton Kloks}, +title = {{$K_{1,3}$}-free and {$W_4$}-free graphs}, +journal = ipl, volume = 60, year = 1996, pages = {221-223}} + +@techreport{KloksK94, +author = {Ton Kloks and Dieter Kratsch}, +title = {Computing a perfect edge without vertex elimination ordering of a +chordal bipartite graph}, +type = {Computing Science Notes}, number = {94-41}, +institution = {Eindhoven University of Technology}, year = 1994} + +@techreport{KloksKM94, +author = {Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {Dominoes}, +type = {Computing Science Notes}, number = {94-12}, +institution = {Eindhoven University of Technology}, year = 1994} + +%Kloks 1995 + +@article{KloksK95, +author = {Ton Kloks and Dieter Kratsch}, +title = {Treewidth of chordal bipartite graphs}, +journal = ja, volume = 19, pages = {266-281}, year = 1995} + +%Kloks 1996 + +@article{Kloks96, +author = {Ton Kloks}, +title = {Treewidth of circle graphs}, +journal = ijfcs, volume = 7, year = 1996, pages = {111-120}} + +@misc{Kloks, +author = {Ton Kloks}, +note = {Personal communication}} + +@article{Kloks96a, +author = {Ton Kloks}, +title = {{$K_{1,3}$}-free and {$W_4$}-free graphs}, +journal = ipl, volume = 60, year = 1996, pages = {221-223}} + +@techreport{KloksKM96, +author = {Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {Asteroidal sets in graphs}, +type = {Memorandum}, number = {1347}, +institution = {Dep. Appl. Math, University of Twente}, +address = {Enschede, The Netherlands}, +year = 1996} + +%Kloks 1997 + +@article{KloksKS97, +author = {Ton Kloks and Dieter Kratsch and Jeremy Spinrad}, +title = {On treewidth and minimum fill-in of asteroidal triple-free graphs}, +journal = tcs, volume = 175, pages = {309-335}, year = 1997} + +@inproceedings{KloksKM97, +author = {Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {Asteroidal sets in graphs}, +editor = {Rolf H. M\"{o}hring}, +booktitle = wg97, publisher = lncs1335, year = 1997, pages = {229-241}} + +%Kloks 1998 + +@article{KloksK98, +author = {T. Kloks and D. Kratsch}, +title = {Listing all minimal separators of a graph}, +journal = siamjc, volume = 27, number = 3, pages = {605-613},year = 1998} + +@article{KloksKW98, +author = {Ton Kloks and Dieter Kratsch and C. K. Wong}, +title = {Minimum fill-in of circle and circular-arc graphs}, +journal = ja, volume = 28, pages ={272-289}, year = 1998} + +@article{KloksMW98, +author = {Ton Kloks and Haiko M{\"u}ller and C. K. Wong}, +title = {Vertex ranking of asteroid triple-free graphs}, +journal = ipl, volume = 68, year = 1998, pages = {201-206}} + +%Kloks 1999 + +@article{KloksKM99, +author = {Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {Approximating the Bandwidth for Asteroidal Triple-free Graphs}, +journal = ja, volume = 32, pages = {41-57}, year = 1999} + +%Kloks 2001 + +@article{KloksKM01, +author = {Ton Kloks and Dieter Kratsch and Haiko M\"{u}ller}, +title = {On the structure of graphs with bounded asteroidal number}, +journal = {Graphs. Combin.}, year = 2001, volume = 17, pages = {295-306}} + +@article{KloksT01, +author = {Ton Kloks and Richard B. Tan}, +title = {Bandwidth and topological bandwidth of graphs with few $P_4$'s}, +journal = dam, volume = 115, year = 2001, pages = {117-133}} + +@misc{KloksLL01, +author = {Ton Kloks and C. M. Lee and Jim Liu}, +title = {Feedback vertex sets and disjoint cycles in planar (di)graphs}, +note = {Optimization Online}, year = 2001} + +%Kloks 2002 + +@inproceedings{KloksLL02, +author = {Ton Kloks and C. M. Lee and Jim Liu}, +title = {New algorithms for $k$-face cover, $k$-feedback vertex set, and $k$-disjoint cycles on plane and planar graphs}, +editor = {Lud\u{e}k Ku\u{c}era}, +booktitle = wg02, publisher = lncs2573, year = 2002, pages = {282-295}} + +%Kloks 2004 + +@article{KloksKM05, +author = {Ton Kloks and Jan Kratochv{\'{\i}}l and Haiko M\"{u}ller}, +title = {Computing the branchwidth of interval graphs}, +journal = dam, volume = 145, pages = {266-275}, year = 2005} + +%Kloks 2006 + +@article{KloksKLL06, +author = {Ton Kloks and Dieter Kratsch and Chuan-Min Lee and Jiping Liu}, +title = {Improved bottleneck domination algorithms}, +journal = dam, volume = 154, pages = {1578-1592}, year = 2006} + +%Kn + +%Kna + +@inproceedings{KnauerS06, +author = {Christiaan Knauer and Andreas Spillner}, +title = {A fixed-parameter algorithm for the minimum weight triangulation problem based on small graph separators}, +editor = {Fedor V. Fomin}, +booktitle = wg06, year = 2006, pages = {1-14}, publisher = lncs4271} + +%Kne + + + +@inproceedings{KneisMRR05, +author = {Joachim Kneis and Daniel M\"{o}lle and Stefan Richter and Peter Rossmanith}, +title = {On the parameterized complexity of exact satisfiability problems}, +editor = {Joanna Jedrzejowicz and Andrzej Szepietowski}, +booktitle = mfcs05, publisher = lncs3618, year = 2005, pages = {568-579}} + +@article{KneisMRR06, +author = {Joachim Kneis and Daniel M\"{o}lle and Stefan Richter and Peter Rossmanith}, +title = {Parameterized power domination complexity}, +journal = ipl, volume = 98, year = 2006, pages = {145-149}} + +@inproceedings{KneisMRR06a, +author = {Joachim Kneis and Daniel M{\"o}lle and Stefan Richter and Peter Rossmanith}, +title = {Divide-and-Color}, +editor = {Fedor V. Fomin}, +booktitle = wg06, publisher = lncs4271, year = 2006, pages = {58-67}} + +@inproceedings{KneisLR08, +author = {Joachim Kneis and Alexander Langer and Peter Rossmanith}, +title = {A new algorithm for finding trees with many leaves}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {270-281}} + +@inproceedings{KneisLR09, +author = {Joachim Kneis and Alexander Langer and Peter Rossmanith}, +title = {A fine-grained analysis of a simple independent set algorithm}, +publisher = {LIPIcs, volume 4}, +booktitle = fsttcs09, year = 2009, pages = {287-298}} + +%Ko + +%Kob + +@article{Kobayashi09, +author = {Yusuke Kobayashi}, +title = {Induced disjoint paths problem in a planar graph}, +journal = dam, volume = 157, year = 2009, pages = {3231-3238}} + +@article{KoblerR03, +author = {Daniel Kobler and Udi Rotics}, +title = {Edge dominating set and colorings on graphs with fixed clique-width}, +journal = dam, volume = 126, pages = {197-221}, year = 2003} + +%Koe + +@book{Koenig36, +author = {D. K{\"{o}}nig}, +title = {Theorie der endlichen und unendlichen {G}raphen}, +year = 1936, publisher = {Akademische Verlagsgesellschaft}, +address = {Leipzig}} + +%Koh + +@article{KohlSTV05, +author = {A. Kohl and J. Schreyer and Z. Tuza and M. Voigt}, +title = {List versions of {$L(d,s)$}-labelings}, +journal = tcs, volume = 349, year = 2005, pages = {92-98}} + +%Koi + +@unpublished{KoivistoP10, +author = {Mikko Koivisto and Pekka Parviainen}, +title = {A space-time tradeoff for permutation problems}, +year = 2010, +note = {To appear in Proceedings SODA 2010}} + +%Kor + +@techreport{KorachO89, +author = {Ephraim Korach and Z. Ostfeld}, +title = {Recognition of {DFS} Trees: Sequential and Parallel +Algorithms with Refined Verifications}, +number = 582, type = {Technical Report}, +year = 1989, institution = {Technion, Haifa, Israel}} + +@techreport{KorachO90, +author = {Ephraim Korach and Z. Ostfeld}, +title = {On the Existence of Special {DFS}-trees}, +number = 612, type = {Technical Report}, +year = 1990, institution = {Technion, Haifa, Israel}} + +@unpublished{KorachS90, +author = {Ephraim Korach and Nir Solel}, +title = {Linear Time Algorithm for Minimum Weight {S}teiner Tree in Graphs with Bounded Treewidth}, +year = 1990, +note = {Manuscript}} + +@article{KorachS93, +author = {Ephraim Korach and Nir Solel}, +title = {Tree-width, Path-width and Cutwidth}, +journal = dam, volume = 43, pages = {97-101}, year = 1993} + +@article{KorachT93, +author = {Ephraim Korach and A. Tal}, +title = {Generalized vertex disjoint paths in series-parallel graphs}, +journal = dam, volume = 41, year = 1993, pages = {147-164}} + +@article{KornaiT92, +author = {Andr/'{a}s Kornai and Zsolt Tuza}, +title = {Narrowness, Pathwidth, and their Application in Natural Language +Processing}, +journal = dam, volume = 36, year = 1992, pages = {87-92}} + +@phdthesis{deKort92, +author = {Jeroen {de Kort}}, +title = {Edge-disjointness in Combinatorial Optimization}, +school = {University of Amsterdam}, +year = 1992} + +@article{KorteM89, +author = {Norbert Korte and Rolf H. M{\"{o}}hring}, +title = {An incremental linear-time algorithm for recognizing interval +graphs}, +journal = siamjc, volume = 18, year = 1989, pages = {68-81}} + +%Kos + +%Koster 1999 + +@phdthesis{Koster99, +author = {Arie M. C. A. Koster}, +title = {Frequency Assignment - Models and Algorithms}, +year = 1999, +school = {Univ. Maastricht}, +address = {Maastricht, The Netherlands}} + +@techreport{KosterHK99, +author = {Arie M. C. A. Koster and Stan P. M. van Hoesel and Antoon W. J. Kolen}, +title = {Solving frequency assignment problems via tree-decomposition}, +institution = {Faculty of Economics and Business Administration, +Universiteit Maastricht}, +address = {Maastricht, The Netherlands}, +number = {RM/99/011}, year = 1999} + +%Koster 2001 + +@inproceedings{KosterBH01, +author = {Arie M. C. A. Koster and Hans L. Bodlaender and Stan P. M. van Hoesel}, +title = {Treewidth: Computational Experiments}, +booktitle = {Electronic Notes in Discrete Mathematics}, +volume = 8, +pages = {54-57}, +publisher = {Elsevier Science Publishers}, +editor = {Hajo Broersma and Ulrich Faigle and Johann Hurink and Stefan Pickl}, +year = 2001} + +%Koster 2002 + +@article{KosterHK02, +author = {Arie M. C. A. Koster and Stan P. M. van Hoesel and Antoon W. J. Kolen}, +title = {Solving partial constraint satisfaction problems with tree decomposition}, +journal = networks, volume = 40, number = 3, year = 2002, pages = {170-180}} + +%Koster 2004 + +@techreport{KosterWB04, +author = {Arie M. C. A. Koster and Thomas Wolle and Hans L. Bodlaender}, +title = {Degree-Based Treewidth Lower Bounds}, +institution = {Institute for Information and Computing +Sciences, Utrecht University}, +number = {UU-CS-2004-050}, +year = {2004}, +address = {Utrecht, The Netherlands}} + +%Koster 2005 + +@inproceedings{KosterWB05, +author = {Arie M. C. A. Koster and Thomas Wolle and Hans L. Bodlaender}, +title = {Degree-based treewidth lower bounds}, +editor = {Sotiris E. Nikoletseas}, +booktitle = wea05, publisher = lncs3503, year = 2005, pages = {101-112}} + +%Koster 2006 + +@unpublished{KosterMvH06, +author = {Arie M. C. A. Koster and Bert Marchal and C. P. M. van Hoesel}, +title = {Local search algorithms for treewidth}, +note = {Work in progress}, year = 2006} + +%Kr + +%Kra + +%Kram + +@article{KramerK07, +author = {Florica Kramer and Horst Kramer}, +title = {A survey on the distance-colouring of graphs}, +journal = dm, volume = 308, year = 2007, pages = {422-426}} + +%Krat + +@article{KratochvilN89, +author = {Jan Kratochv{\'{\i}}l and Jaroslav Ne\~{s}et\~{r}il}, +title = {{NP}-hardness results for intersection graphs}, +journal = {Comment. Math. Univ. Carolinae}, volume = 30, number = 4, year = 1989, pages = {761-773}} + +@article{KratochvilN90, +author = {Jan Kratochv{\'{\i}}l and Jaroslav Ne\~{s}et\~{r}il}, +title = {{\sc independent set} and {\sc clique} problems in intersection-defined classes of graphs}, +journal = {Comment. Math. Univ. Carolinae}, volume = 31, number = 1, year = 1990, pages = {85-93}} + +@inproceedings{KratochvilT98, +author = {Jan Kratochv{\'{\i}}l and Zsolt Tusa}, +title = {Rankings of directed graphs}, +editor = {Juraj Hromkovic and Ondrej S\'{y}kora}, +booktitle = wg98, publisher = lncs1517, year = 1998, pages = {114-123}} + +%Kratsch 1987 + +@article{Kratsch87, +author = {Dieter Kratsch}, +title = {Finding the Minimum Bandwidth of an Interval Graph}, +journal = ic2, volume = 74, year = 1987, pages = {140-158}} + +%Kratsch 1990 + +@article{Kratsch90, +author = {Dieter Kratsch}, +title = {Finding dominating cliques efficiently, in strongly chordal graphs +and undirected path graphs}, +journal = dm, volume = 86, year = 1990, pages = {225-238}} + +@techreport{Kratsch90a, +author = {Dieter Kratsch}, +title = {Cardinality {S}teiner Tree and Connected Dominating Set for +Undirected Path Graphs}, +institution = {Friedrich Schiller Universit\"{a}t Jena, GDR}, +year = 1990, number = {N/90/91}} + +@unpublished{KratschH90, +author = {Dieter Kratsch and L. A. Hemachandra}, +title = {On the Complexity of Graph Reconstruction}, +year = 1990, note = {Manuscript}} + +%Kratsch 2003 + +@inproceedings{KratschS03, +author = {Dieter Kratsch and Jeremy Spinrad}, +title = {Between {$O(nm)$} and {$O(n^\alpha)$}}, +booktitle = soda03, pages = {709-716}, year = 2003} + +%Kratsch 2004 + +@misc{Kratsch04, +author = {Dieter Kratsch}, +note = {Personal communication}, year = 2004} + +%Kratsch 2006 + +@inproceedings{KratschL06, +author = {Dieter Kratsch and Mathieu Liedloff}, +title = {An exact algorithm for the minimum dominating clique problem}, +editor = {Hans L. Bodlaender and Michael A. Langston}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {128-139}} + +@article{KratschS06, +author = {Dieter Kratsch and Jeremy Spinrad}, +title = {Minimal fill in {$O(n^{2.69})$} time}, +journal = dm, volume = 206, year = 2006, pages = {366-371}} + +%Kratsch 2007, + +@article{KratschL07, +author = {Dieter Kratsch and Mathieu Liedloff}, +title = {An exact algorithm for the minimum dominating clique problem}, +journal = tcs, volume = 385, year = 2007, pages = {226-240}} + +%Kratsch 2008 + +@article{KratschMT08, +author = {Dieter Kratsch and Haiko M\"{u}ller and Ioan Todinca}, +title = {Feedback vertex set on {AT}-free graphs}, +journal = dam, volume = 156, year = 2008, pages = {1936-1947}} + +%Kratsch 2009 + +@inproceedings{Kratsch09, +author = {Stephan Kratsch}, +title = {Polynomial kernelizations for {MIN F$^+\Pi_1$} and {MAX NP}}, +editor = {Susanne Albers and Jean-Yves Marion}, +series = {Dagstuhl Seminar Proceedings}, +publisher = {Leibniz-Zentrum f\"{u}r Informatik}, +address = {Schloss Dagstuhl, Germany}, +volume = {09001}, +booktitle = stacs09, pages = {601-612}, year = 2009} + +@article{KratschM09, +author = {Dieter Kratsch and Haiko M\"{u}ller}, +title = {On a property of minimal triangulations}, +journal = dm, volume = 309, year = 2009, pages = {1724-1729}} + +@unpublished{KratschW09, +author = {Stephan Kratsch and Magnus Wahlstr\"{o}m}, +title = {Two edge modification problems without polynomial kernels}, +year = 2009, +note = {In Proceedings IWPEC 2009}} + +%Kre + +@unpublished{KreidlerS96, +author = {Martin Kreidler and Detlef Seese}, +title = {Monadic {NP} and built-in Trees}, +note = {Manuscript}, year = 1996} + +@article{Krentel88, +author = {M. W. Krentel}, +title = {The complexity of optimization problems}, +journal = jcss, volume = 36, year = 1988, pages = {490-509}} + +@article{Kreweras72, +author = {G. Kreweras}, +title = {Sur les partition non crois\'ees d'un circle}, +year = 1972, +journal = dm, volume = 1, number = 4, pages = {333 - 350}} + +%Kru + +@article{KruskalRS90, +author = {Clyde P. Kruskal and Larry Rudolph and Marc Snir}, +title = {Efficient Parallel Algorithms for Graph Problems}, +journal = alg, volume = 5, year = 1990, pages = {43-64}} + +%Ku + +%Kun + +@article{KundgrenP08, +author = {Andr\'{e} K\"{u}ndgren and Michael J. Pelsmajer}, +title = {Nonrepetitive colorings of graphs of bounded tree-width}, +journal = dm, volume = 308, year = 2008, pages = {4473-4478}} + +%Kuo + +@article{KuoY04, +author = {David Kuo and Jing-Ho Yan}, +title = {On {$L(2,1)$}-labelings of {C}artesian products of paths and cycles}, +journal = dm, volume = 283, year = 2004, pages = {136-144}} + +%Kus + +@article{KuskeL05, +author = {D. Kuske and M. Lohrey}, +title = {Logical aspects of {C}ayley-graphs: The group case}, +journal = apal, volume = 131, year = 2005, pages = {263-286}} + +%Kw + +@inproceedings{Kwisthout08, +author = {Johan H. P. Kwisthout}, +title = {Complexity Results for Enumerating {MPE} and Partial {MAP}}, +editor = {M. Jaeger and T. Nielsen}, +booktitle = {Proceedings of the 4th European Workshop on Probabilistic Graphical Models, PGM 2008}, +year = 2008, pages = {161-168}} + +@phdthesis{Kwisthout09, +author = {Johan H. P. Kwisthout}, +title = {The Computational Complexity of Probabilistic Networks}, +school = {Utrecht University}, +address = {Utrecht, the Netherlands}, +year = 2009} + +%L + +%La + +%Lag + +%Lagergren 1990 + +@inproceedings{Lagergren90, +author = {Jens Lagergren}, +title = {Efficient Parallel Algorithms for Tree-Decomposition and Related +Problems}, +year = 1990, booktitle = focs90, pages = {173-182}} + +%Lagergren 1991 + +@phdthesis{Lagergren91, +author = {Jens Lagergren}, +title = {Algorithms and Minimal Forbidden Minors for Tree-decomposable +Graphs}, +school = {Royal Institute of Technology, Stockholm, Sweden}, +year = 1991 } + +@inproceedings{LagergrenA91, +author = {Jens Lagergren and Stefan Arnborg}, +title = {Finding minimal forbidden minors using a finite congruence}, +editor = {Javier Leach Albert and Burkhard Monien and Mario Rodr\'{\i}guez-Artalejo}, +booktitle = icalp91, publisher = lncs510, year = 1991, pages = {532-543}} + +%Lagergren 1993 + +@inproceedings{Lagergren93, +author = {Jens Lagergren}, +title = {An uppern bound on the size of an obstruction}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint +Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147.}, +pages = {601-621}, +year = 1993} + +@article{Lagergren93a, +author = {Jens Lagergren}, +title = {An upper bound on the size of a minimal forbidden minor}, +journal = {AMS Contemporary Mathematics series}, volume = 147, year = 1993, pages = {601-621}} + +%Lagergren 1994 + +@article{Lagergren94, +author = {Jens Lagergren}, +title = {The nonexistence of reduction rules giving an embedding into a $k$-tree}, +journal = dam, volume = 54, pages = {219-223}, year = 1994} + +%Lagergren 1995 + +@unpublished{Lagergren95, +author = {Jens Lagergren}, +title = {Upper Bounds on the Size of Obstructions and Intertwines}, +year = 1995, note = {Manuscript}} + +%Lagergren 1996 + +@article{Lagergren96, +author = {Jens Lagergren}, +title = {Efficient parallel algorithms for graphs of bounded tree-width}, +journal = ja, volume = 20, pages = {20-44}, year = 1996} + +%Lai + +@article{Laing07, +author = {Kofi A. Laing}, +title = {Name-independent compact routing in trees}, +journal = ipl, volume = 103, year = 2007, pages = {57-60}} + +%Lam + +@article{LamY98, +author = {T. W. Lam and F. L. Yue}, +title = {Edge ranking of graphs is hard}, +journal = dam, volume = 85, pages = {71-86}, year = 1998} + +%Lan + +@book{LandoZ2004, +author = {Sergei K. Lando and Alexander K. Zvonkin}, +title = {Graphs on Surfaces and Their Applications}, +year = 2004, +publisher = {Springer-Verlag}, +address = {Heidelberg}} + +@techreport{Langston90, +author = {Michael A. Langston}, +title = {Fast Search Algorithms for Layout Permutation Problems}, +institution = {University of Tennessee}, +number = {CS-90-107}, month = {5}, year = 1990} + +@inproceedings{Langston93, +author = {Michael A. Langston}, +title = {An obstruction-based approach to layout optimization}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint +Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147.}, +pages = {623 - 629}, +year = 1993} + +%Lap + +@inproceedings{Lapoire98, +author = {D. Lapoire}, +title = {Recognizability equals definability, for every set of graphs of bounded tree-width}, +booktitle = stacs98, pages = {618-628}, publisher=lncs1373, year = 1998} + +%Lar + +@article{LarranagaKPM97, +author = {Pedro {Larra\~{n}aga} and Cindy M. H. Kuijpers and Mikel Poza and Roberto H. Murga}, +title = {Decomposing {B}ayesian networks: triangulation of the moral graph with genetic algorithms}, +journal = {Statistics and Computing}, volume = 7, number = 1, year = 1997, pages = {19-34}} + +%Las + +@techreport{LaskarP83, +author = {R. Laskar and J. Pfaff}, +title = {Domination and irredundance in graphs}, +number = 434, type = {Technical Report}, institution = {Clemson University, +Dept. of Math. Sc.}, year = 1983} + +@article{LaskarPHH84, +author = {R. Laskar and J. Pfaff and S. M. Hedetniemi and S. T. Hedetniemi}, +title = {On the Algorithmic Complexity of Total Domination}, +journal = sjadm, volume = 5, year = 1984, pages = {420-425}} + +%Lau + +@article{LauritzenS88, +author = {S. J. Lauritzen and D. J. Spiegelhalter}, +title = {Local computations with probabilities on graphical structures and their application to expert systems}, +journal = {The Journal of the Royal Statistical Society. Series B (Methodological)}, volume = 50, year = 1988, pages = {157-224}} + +@techreport{Lautemann87, +author = {Clemens Lautemann}, +title = {Efficient Algorithms on Graphs Represented by Decomposition Trees}, +number = {6/87}, +year = 1987, +institution = {Fachbereich Mathematik/Informatik, Universit\"{a}t Bremen} +} + +@inproceedings{Lautemann88, +author = {Clemens Lautemann}, +title = {Efficient algorithms on context-free graph languages}, +editor = {Timo Lepist\"{o} and Arto Salomaa}, +booktitle = icalp88, publisher = lncs317, pages = {362-378}, year = 1988} + +@inproceedings{Lautemann88a, +author = {Clemens Lautemann}, +title = {Decomposition trees: structured graph representation and efficient algorithms}, +editor = {Max Dauchet and Maurice Nivat}, +booktitle = {Proceedings of the 13th Colloquium on Trees in Algebra and Programming, CAAP'88}, +publisher = lncs299, pages = {28-39}, year = 1988} + +@techreport{Lautemann90, +author = {Clemens Lautemann}, +title = {Tree Automata, Tree Decomposition and Hyperedge Replacement}, +number = {2/90}, +type = {Informatik-Bericht}, +institution = {Johannes Gutenberg-Universit\"{a}t Mainz}, +year = 1990} + +@article{Lautemann90a, +author = {Clemens Lautemann}, +title = {The complexity of graph languages generated by hyperedge +replacement}, +journal = ai, volume = 27, year = 1990, pages = {399-421}} + +%Law + +@book{Lawler76, +author = {E. Lawler}, +title = {Combinatorial Optimization: Networks and Matroids}, +publisher = {Holt, Rinehart and Winston}, +address = {New York}, +year = 1976 } + +@article{Lawler76a, +author = {E. Lawler}, +title = {A note on the complexity of the chromatic number problem}, +journal = ipl, volume = 5, year = 1976, pages = {66-67}} + +@inproceedings{LawlerS85, +author = {Eugene L. Lawler and P. J. Slater}, +title = {A Linear Time Algorithm for Finding an Optimal Dominating Subforest of a Tree}, +booktitle = {Proc. Graph Theory and its Applications to Algorithms and Computer Science}, +pages = {501-506}, +editor = {Y. Alavi et al.}, +year = 1985 +} + +@incollection{LawlerLRS93, +author = {Eugene L. Lawler and Jan Karel Lenstra and Alexander H. G. {Rinnooy +Kan} and David B. Shmoys}, +title = {Sequencing and Scheduling: Algorithms and Complexity}, +booktitle = {Handbooks in OR \& MS, Vol. 4}, +editor = {S.C. Graves et al}, +publisher = {Elsevier Science Publishers}, +year = 1993, pages = {445-522}} + +@article{LawsonK98, +author = {Nancy Lawson and M. S. Krishnamoorthy}, +title = {Bridge obstructions to circular-tree gate matrix +layout}, +journal = gc, volume = 14, year = 1998, pages = {143-153}} + +%LaP + +@article{LaPaugh93, +author = {A. S. LaPaugh}, +title = {Recontamination Does Not Help to Search a Graph}, +journal = jacm, volume = 40, year = 1993, pages = {224-245}} + +%Le + +@article{LeLM03, +author = {H.-O. Le and V. B. Le and H. M\"{u}ller}, +title = {Splitting a graph into disjoint induced paths or cycles}, +journal = dam, volume = 131, pages = {199-212}, year = 2003} + +%Lea + +@inproceedings{LeaverFayLS04, +author = {Andrew {Leaver-Fay} and Yuanxin Liu and Jack Snoeyink}, +title = {Faster placement of hydrogen atoms in protein structures by dynamic programming}, +booktitle = alenex04, year = 2004, pages = {39-48}} + +%Lee + +@article{Lee09, +author = {Chuan-Min Lee}, +title = {On the complexity of signed and minus total domination in graphs}, +journal = ipl, volume = 109, year = 2009, pages = {1177-1181}} + +@incollection{LeeuwenT86, +author = {Jan {van Leeuwen} and Richard B. Tan}, +title = {Computer Networks with Compact Routing Tables}, +editor = {G. Rozenberg and A. Salomaa}, +booktitle = {The Book of {L}}, +publisher = {Springer-Verlag}, address = {Berlin}, year = 1986, +pages = {298-307}} + +@article{LeeuwenT87, +author = {Jan {van Leeuwen} and Richard B. Tan}, +title = {Interval Routing}, +journal = tcj, volume = 30, year = 1987, pages = {298-307}} + +@inproceedings{Leeuwen90, +author = {Jan {van Leeuwen}}, +title = {Graph Algorithms}, +booktitle = {Handbook of Theoretical Computer Science, {A}: {A}lgorithms and +Complexity Theory}, +address = {Amsterdam}, year = 1990, +publisher = {North Holland Publ. Comp.}, +pages = {527-631} +} + +@inproceedings{LeeuwenT95, +author = {Jan {van Leeuwen} and Richard B. Tan}, +title = {Compact Routing Methods: A Survey}, +booktitle = {Proc 1st +Colloquium on Structural Information and Communication Complexity +(SIROCCO'94)}, +publisher = {Carleton Univ. Press}, address={Ottawa}, year = 1994, +pages = {71-93}} + +@inproceedings{Leeuwen05, +author = {E.J. van Leeuwen}, +title = {Approximation Algorithms for Unit Disk Graphs}, +editor = {Dieter Kratsch}, +booktitle = wg05, publisher = lncs3787, year = 2005, pages = {351-361}} + +%Leh + +@article{Lehot74, +author = {P. G. H. Lehot}, +title = {An optimal algorithm to detect a line graph and output its +root graph}, +journal = jacm, volume = 21, pages = {569-575}, year = 1974 } + +%Lei + +@inproceedings{LeightonR88, +author = {F. T. Leighton and S. Rao}, +title = {An approximate max-flow min-cut theorem for uniform multi-commodity +flow problems with applications to approximate algorithms}, +booktitle = focs88, publisher = {IEEE}, pages = {422-431}, +year = 1988, +note = {Full version: submitted manuscript} +} + +@article{Leimer93, +author = {H.-G. Leimer}, +title = {Optimal decomposition by clique separators}, +journal = dm, volume = 113, pages = {99-123}, year=1993} + +%Lek + +@article{LekkerkerkerB62, +author = {C. G. Lekkerkerker and J. C. Boland}, +title = {Representation of a finite graph by a set of intervals on the real line}, +journal = fundmath, volume = 51, year = 1962, pages = {45-64}} + +@unpublished{LeisersonP87, +author = {Charles E. Leiserson and Cynthia A. Philips}, +title = {Parallel Contraction of Planar Graphs}, +year = 1987, +note = {MIT, manuscript} +} + +@article{Lengauer81, +author = {Thomas Lengauer}, +title = {Black-White Pebbles and Graph Separation}, +journal = ai, volume = 16, year = 1981, pages = {465-475}} + +@article{Lengauer82, +author = {Thomas Lengauer}, +title = {Upper and Lower Bounds on the Complexity of the Min-Cut +Linear Arrangement Problem on Trees}, +journal = sjadm, volume = 3, pages = {99-113}, year = 1982 } + +@article{Lengauer87, +author = {Thomas Lengauer}, +title = {Efficient algorithms for finding minimum spanning forests in +hierarchically defined graphs}, +journal = ja, volume = 8, year = 1987, pages = {260-284}} + +@article{LengauerW88, +author = {Thomas Lengauer and Egon Wanke}, +title = {Efficient solutions of connectivity problems on +hierarchically defined graphs}, +journal = siamjc, volume = 17, year = 1988, pages = {1063-1080}} + +@inproceedings{LengauerW88a, +author = {Thomas Lengauer and Egon Wanke}, +title = {Efficient analysis of graph properties on context-free graph languages}, +editor = {Timo Lepist\"{o} and Arto Salomaa}, +booktitle = icalp88, publisher = lncs317, pages = {379-393}, year = 1988} + +@article{LeungVW84, +author = {Joseph Y.-T. Leung and Oliver Vornberger and James D. Witthoff}, +title = {On Some Variants of The Bandwidth Minimization Problem}, +journal = siamjc, year = 1984, volume = 13, pages = {650-667}} + +@article{LevenG83, +author = {D. Leven and Zvi Galil}, +title = {{NP}-completeness of finding the chromatic index of regular +graphs}, +journal = ja, volume = 4, year = 1983, pages = {35-44}} + +@inproceedings{Levin84, +author = {L. A. Levin}, +title = {Problems, complete in ``average'' instance}, +booktitle = stoc84, +year = 1984} + +%Li + +@article{LiZ07, +author = {Xueliang Li and Xiaoyan Zhang}, +title = {On the minimum monochromatic or multicolored subgraph partition +problems}, +journal = tcs, volume = 385, year = 2007, pages = {1-10}} + + +%Lia + +@article{LiangRDS91, +author = {Y. Liang and C. Rhee and S. K. Dhall and S. Lakshmivarahan}, +title = {A new approach for the domination problem on permutation +graphs}, +journal = ipl, volume = 37, year = 1991, pages = {219-224}} + +%Lic + +@article{LichtensteinS80, +author = {D. Lichtenstein and M. Sipser}, +title = {Go is polynomial-space hard}, +journal = jacm, volume = 27, year = 1980, pages = {393-401}} + +@article{Lichtenstein82, +author = {David Lichtenstein}, +title = {Planar formulae and their uses}, +journal = siamjc, volume = 11, year = 1982, pages = {185-225}} + +@article{LickW70, +author = {D. R. Lick and A. T. White}, +title = {$k$-Degenerate graphs}, +journal = canjm, volume = 22, year = 1970, pages = {1082--1096}} + +%Lie + +@article{Liedloff08, +author = {Mathieu Liedloff}, +title = {Finding a dominating set on bipartite graphs}, +journal = ipl, volume = 107, year = 2008, pages = {154-157}} + +@article{LiedloffKLP08, +author = {Mathieu Liedloff and Ton Kloks and Jiping Liu and Sheng-Lung Peng}, +title = {Efficient algorithms for {R}oman domination on some classes of graphs}, +journal = dam, volume = 156, year = 2008, pages = {3400-3415}} + +%Lin + +@article{LinO91, +author = {R. Lin and S. Olariu}, +title = {An {NC} Recognition Algorithm for Cographs}, +journal = jpdc, volume = 13, year = 1991, pages = {76-90}} + +@article{LinCL06, +author = {Guohui Lin and Zhipeng Cai and Dekang Lin}, +title = {Vertex covering by paths on trees with its applications in machine translation}, +journal = ipl, year = 2006, volume = 97, pages = {73-81}} + +%Lingas 1985 + +@inproceedings{Lingas85, +author = {Andrzej Lingas}, +title = {Subgraph Isomorphism for easily separable graphs with bounded valence}, +booktitle = wg85, year = 1985, pages = {217-229}} + +%Lingas 1987 + +@techreport{Lingas87, +author = {Andrzej Lingas}, +title = {On Parallel Complexity of the Subgraph Isomorphism Problem}, +number = {LITH-IDA-R-87-10}, +institution = {Link\"{o}ping University}, +year = 1987 +} + +%Lingas 1988 + +@unpublished{Lingas88, +author = {Andrzej Lingas}, +title = {Subgraph Isomorphism for Connected Graphs of Bounded Valence and Bounded Separator is in {NC}}, +note = {Ext. abstract}, +year = 1988 +} + +@inproceedings{LingasS88, +author = {Andrzej Lingas and Maciej M. Sys{\l}o}, +title = {A polynomial-time algorithm for subgraph isomorphism of two-connected series-parallel graphs}, +editor = {Timo Lepist\"{o} and Arto Salomaa}, +booktitle = icalp88, year = 1988, pages = {394-409}, publisher = lncs317} + +%Lingas 1989 + +@article{Lingas89, +author = {Andrzej Lingas}, +title = {Subgraph Isomorphism for biconnected outerplanar graphs in cubic time}, +journal = tcs, volume = 63, year = 1989, pages = {295-302}} + +@article{LingasK89, +author = {Andrzej Lingas and Marek Karpinski}, +title = {Subtree Isomorphism is {NC} reducible to Bipartite Perfect Matching}, +journal = ipl, volume = 30, year = 1989, pages = {27-32}} + +@article{LingasP89, +author = {Andrzej Lingas and Andrzej Proskurowski}, +title = {Fast parallel algorithms for the subgraph homeomorphism and the subgraph isomorphism problems for classes of planar graphs}, +journal = tcs, volume = 68, year = 1989, pages = {155-174}} + +@article{LingerPS95, +author = {Gerard T. Linger and Themistocles Politof and A. Satyanarayana}, +title = {A forbidden minor characterization and reliability of a class of partial 4-trees}, +journal = networks, volume = 25, pages = {139-146}, year = 1995} + +%Lip + +@article{LiptonRT79, +author = {Richard J. Lipton and Donald J. Rose and Robert Endre Tarjan}, +title = {Generalized nested dissection}, +journal = sjna, volume = 16, year = 1979, pages = {346-358}} + +@article{LiptonT79, +author = {Richard J. Lipton and Robert Endre Tarjan}, +title = {A separator theorem for planar graphs}, +journal = sjam, volume = 36, year = 1979, pages = {177-189}} + +@article{LiptonT80, +author = {Richard J. Lipton and Robert Endre Tarjan}, +title = {Applications of a planar separator theorem}, +journal = siamjc, volume = 9, year = 1980, pages = {615-627}} + +%Lit + +@inproceedings{LitovskiMZ93, +author = {I. Litovsky and Y. M{\'{e}}tivier and W. Zielonka}, +title = {The power and the limitations of local computations on graphs}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {333-345}} + +%Liu + +%Liu 1980 + +@article{LiuG80, +author = {P. C. Liu and R. C. Geldmacher}, +title = {An {$O(\max(m,n))$} algorithm for finding a subgraph +homeomorphic to $K_4$}, +journal = cn, volume = 29, year = 1980, pages = {597-609}} + +%Liu 1990 + +@article{Liu90, +author = {J. W. H. Liu}, +title = {The role of elimination trees in sparse factorization}, +journal = sjmaa, volume = 11, year = 1990, pages = {134-172}} + +%Liu 1997 + +@article{LiuY97, +author = {D.D.-F. Liu and R. K. Yeh}, +title = {On distance two labellings of graphs}, +journal = arscomb, volume = 47, year = 1997, pages = {13-22}} + +%Liu 1998 + +@article{LiuY98, +author = {Chuan-Ming Liu and Ming-Shing Yu}, +title = {An optimal parallel algorithm for node ranking of cographs}, +journal = dam, volume = 87, year = 1998, pages = {187-201}} + +%Liu 2006 + +@inproceedings{LiuLCS06, +author = {Yang Liu and Songjian Lu and Jianer Chen and Sing-Hoi Sze}, +title = {Greedy localization and color-coding: Improved matching and packing algorithms}, +editor = {Hans L. Bodlaender and Michael A. Langston}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {83-94}} + +%Liu 2008 + +@article{Liu08, +author = {Daphne Der-Fen Liu}, +title = {Radio number for trees}, +journal = dm, volume = 308, year = 2008, pages = {1153-1164}} + +%Liu 2009 + +@article{Liu09, +author = {Hong Liu and Haodi Feng and Daming Zhu and Junfeng Luan}, +title = {Parameterized computational complexity of control problems in voting systems}, +journal = tcs, volume = 410, year = 2009, pages = {2746-2753}} + +%Liu 2010 + +@article{Liu10, +author = {Hong Liu and Daming Zhu}, +title = {Parameterized complexity of control problems in Maximin election}, +journal = ipl, volume = 110, year = 2010, pages = {383-388}} + +%Ll + +%Llo + +@article{LloydSW88, +author = {Errol L. Lloyd and Mary Lou Soffa and Ching-Chy Wang}, +title = {On locating minimum feedback vertex sets}, +journal = jcss, volume = 37, pages = {292-311}, year = 1988} + +%Lo + +%Lok + +%Lokshtanov 2009 + +@inproceedings{LokshtanovMS09, +author = {Daniel Lokshtanov and Matthias Mnich and Saket Saurabh}, +title = {Linear kernel for planar connected dominating set}, +editor = {Jianer Chen and S. Barry Cooper}, +booktitle = tamc09, publisher = lncs5532, year = 2009, pages = {281-290}} + +%Lokshtanov 2010 + +@article{Lokshtanov10, +author = {Daniel Lokshtanov}, +title = {On the complexity of computing treelength}, +journal = dam, volume = 158, year = 2010, pages = {820-827}} + +@article{LokshtanovMP10, +author = {Daniel Lokshtanov and Federico Mancini and Charis Papadopoulos}, +title = {Characterizing and computing minimal cograph completions}, +journal = dam, volume = 158, year = 2010, pages = {755-764}} + +%Lop + +@article{LopezL80, +author = {A. D. Lopez and H. F. S. Law}, +title = {A dense gate matrix layout method for {MOS VLSI}}, +journal = ieeeted, +volume = 27, year = 1980, pages = {1671-1675}} + +%Loz + +@article{LozinR04, +author = {Vadim Lozin and Dieter Rautenbach}, +title = {On the band-, tree-, and clique-width of graphs with +bounded vertex degree}, +journal = sjdm, volume = 18, year = 2004, pages = {195-206}} + +@article{LozinR04a, +author = {Vadim Lozin and Dieter Rautenbach}, +title = {Chordal bipartite graphs of bounded tree- and clique-width}, +journal = dm, volume = 283, pages = {151-158}, year = 2004} + +@article{LozinR07, +author = {Vadim Lozin and Dieter Rautenbach}, +title = {The relative clique-width of a graph}, +journal = jctb, volume = 97, pages = {846-858}, year = 2007} + +@inproceedings{Lozin08, +author = {Vadim Lozin}, +title = {From tree-width to clique-width: {E}xcluding a unit interval graph}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {871-882}} + +%Lu + +@article{LuKT02, +author = {Ching Lung Lu and Ming-Tat Ko and Chuan Yi Tang}, +title = {Perfect edge domination and efficient edge domination in graphs}, +journal = dam, volume = 119, year = 2002, pages = {227-250}} + +%Lub + +@article{Luby86, +author = {Michael Luby}, +title = {A simple parallel algorithm for the maximal independent set +problem}, +journal = siamjc, volume = 4, year = 1986 , pages = {1036-1053}} + +@misc{Luby88, +author = {Michael Luby}, +title = {Removing randomness in parallel computation without a processor +penalty}} + +%Luc + +@article{LuccioS07, +author = {Flaminia L. Luccio and Jop F. Sibeyn}, +title = {Feedback vertex sets in mesh-based networks}, +journal = tcs, volume = 383, year = 2007, pages = {86-101}} + +@phdthesis{Lucena02, +author = {Brian Lucena}, +title = {Dynamic Programming, Tree-Width, and Computation on Graphical +Models}, +school = {Brown University}, +address = {Providence, RI, USA}, +year = 2002} + +@article{Lucena03, +author = {Brian Lucena}, +title = {A new lower bound for tree-width using maximum cardinality search}, +journal = sjdm, volume = 16, year = 2003, pages = {345-353}} + +@article{Lucena07, +author = {Brian Lucena}, +title = {Achievable sets, brambles, and sparse treewidth obstructions}, +journal = dam, volume = 155, pages = {1055-1065}, year = 2007} + +@article{LucetMC00, +author = {C. Lucet and J.-F. Manouvrier and J. Carlier}, +title = {Evaluating network reliability and 2-edge-connected reliability in +linear time for bounded pathwidth graphs}, +journal = alg, volume = 27, year = 2000, pages = {316-336}} + +@article{LucetMM06, +author = {C. Lucet and F. Mendes and A. Moukrim}, +title = {An exact method for graph coloring}, +journal = cor, volume = 33, year = 2006, pages = {2189-2207}} + +@article{LuekerB79, +author = {G. S. Lueker and K. S. Booth}, +title = {A linear-time algorithm for deciding interval graph isomorphism}, +journal = jacm, volume = 26, year = 1979, pages = {183-195}} + +%M + +%Ma + +%Maa + +@article{MaamounM87, +author = {M. Maamoun and H. Meyniel}, +title = {On a game of policemen and robbers}, +journal = dam, volume = 17, year = 1987, pages = {307-309}} + +%Mad + +@article{MadelaineS08, +author = {Florent R. Madelaine and Iain A. Stewart}, +title = {Improved upper and lower bounds on the feedback vertex numbers of +grids and butterflies}, +journal = dm, year = 2008, volume = 308, pages = {4144-4164}} + +%Mah + +%Mahajan 1987 + +@inproceedings{MahajanP87, +author = {Sanjeev Mahajan and Joseph G. Peters}, +title = {Algorithms for Regular Properties in Recursive Graphs}, +booktitle = {Proceedings of the 25th Annual Allerton Conference on +Communication, Control, and Computing}, +pages = {14-23}, +year = 1987} + +%Mahajan 1994 + +@article{MahajanP94, +author = {Sanjeev Mahajan and Joseph G. Peters}, +title = {Regularity and locality in $k$-terminal graphs}, +journal = dam, volume = 54, pages = {229-250}, year = 1994} + +%Mahajan 1999 + +@article{MahajanR99, +author = {M. Mahajan and V. Raman}, +title = {Parameterizing Above Guaranteed Values: MaxSat and MaxCut}, +journal = ja, volume = 31, issue = 2, year = 1999, pages = {335-354}} + +%Mahajan 2006 + +@article{MahajanRS09, +author = {Meena Mahajan and Venkatesh Raman and Somnath Sikdar}, +title = {Parameterizing problems above or below guaranteed values}, +journal = jcss, volume = 72, year = 2009, pages = {137-153}} + +@article{Maharry99, +author = {J. Maharry}, +title = {An excluded minor theorem for the octahedron}, +journal = jgt, volume = 31, year = 1999, pages = {95-100}} + +@article{MaheshRS91, +author = {R. Mahesh and C. P. Rangan and A. Srinivasan}, +title = {On finding the minimum bandwidth of interval graphs}, +journal = ic2, volume = 95, year = 1991, pages = {218-224}} + +@inproceedings{MaheshwariZ01, +author = {A. Maheshwari and N. Zeh}, +title = {I/O-Efficient Algorithms for Bounded Treewidth Graphs}, +booktitle = soda01, pages = {89-90}, year = 2001} + +%Mak + +@article{MakedonS89, +author = {F. S. Makedon and Ivan Hal Sudborough}, +title = {On minimizing width in linear layouts}, +journal = dam, volume = 23, pages = {201-298}, year = 1989 } + +@article{MakedonSW93, +author = {F. Makedon and D. Sheinwald and Y. Wolfsthal}, +title = {A simple linear-time algorithm for the recognition of bandwidth-2 +biconnected graphs}, +journal = ipl, volume = 46, year = 1993, pages = {103-107}} + +@article{MakedonPS85, +author = {F. S. Makedon and Christos H. Papadimitriou and Ivan Hal Sudborough}, +title = {Topological Bandwidth}, +journal = sjadm, volume = 6, year = 1985, pages = {418-444}} + +@article{MakinoUI01, +author = {K. Makino and Y. Uno and T. Ibaraki}, +title = {On minimum edge ranking spanning trees}, +journal = ja, volume = 38, year = 2001, pages = {411-437}} + +%Makowsky + +@article{MakowskyR99, +author = {J. A. Makowsky and Udi Rotics}, +title = {On the clique-width of graphs with few {$P_4$}'s}, +journal = ijfcs, volume = 10, year = 1999, pages = {329-348}} + +@inproceedings{Makowsky01, +author = {J. A. Makowsky}, +title = {Colored {T}utte polynomials and {K}auffman brackets for graphs of +bounded treewidth}, +booktitle = soda01, pages = {487-495}, year = 2001} + +@article{MakowskyM03, +author = {J. A. Makowsky and J. P. Mari\~{n}o}, +title = {The parameterized complexity of knot polynomials}, +journal = jcss, volume = 67, year = 2003, pages = {742-756}} + +@article{Makowsky04, +author = {J. A. Makowsky}, +title = {Coloured {T}utte polynomials and {K}auffman brackets for graphs of +bounded tree width}, +journal = dam, volume = 145, pages = {276-290}, year = 2004} + +%Mal + +@article{Malitz94, +author = {Seth M. Malitz}, +title = {Graphs with {$E$} edges have pagenumber {$O(\sqrt{E})$}}, +journal = ja, volume = 17, year = 1994, pages = {71-84}} + +@article{Malitz94a, +author = {Seth M. Malitz}, +title = {Genus $g$ graphs have pagenumber {$O(\sqrt{g})$}}, +journal = ja, volume = 17, year = 1994, pages = {85-109}} + +%Man + +%Manb + +@article{ManberT84, +author = {Udi Manber and Martin Tompa}, +title = {The effect of number of {H}amiltonian paths on the complexity of a vertex coloring problem}, +journal = siamjc, volume = 13, year = 1984, pages = {109-115}} + +%Manc + +@article{Mancini10, +author = {Federico Mancini}, +title = {Minimum fill-in and treewidth of split$+ke$ and split$+kv$ graphs}, +journal = dam, volume = 158, year = 2010, pages = {747=754}} + +%Mann + +@article{ManninoORC07, +author = {Carlo Mannino and Gianpaolo Oriolo and Federico Ricci and Sunil Chandran}, +title = {The stable set problem and the thinness of a graph}, +journal = orl, volume = 35, year = 2007, pages = {1-9}} + +%Mans + +@article{Mansfield82, +author = {A. Mansfield}, +title = {Determining the thickness of graphs is {NP}-hard}, +journal = {Mathematical Proceedings of the Cambridge Philosophical Society}, volume = 93, year = 1982, pages = {9-23}} + +@article{MansourS89, +author = {Yishay Mansour and Baruch Schieber}, +title = {Finding the edge connectivity of directed graphs}, +volume = 10, year = 1989, journal = ja, pages = {76-85}} + +%Mar + +@unpublished{MarchalHK08, +author = {B. Marchal and Hoesel, C.P.M. {v}an and Koster, A. M. C. A.}, +title = {A local search algorithm for determining tree decompositions of graphs}, +note = {Presented on the International Symposium on Combinatorial Optimization}, +month = 3, year = 2008} + +@article{Marcotte90, +author = {O. Marcotte}, +title = {Exact edge-colorings of graphs without prescribed minors}, +journal = {DIMACS Ser. Discrete Math. Theoretc. Comput. Sci.}, +volume = 1, year = 1990, pages = {235-243}} + +@techreport{Marecek09, +author = {Jakub Mare\u{c}ek}, +title = {Some probabilistic results on width measures of graphs}, +type = {Report}, +number = {arXiv:0908.1772v5}, +year = 2009} + +@article{Markowitz57, +author = {H. M. Markowitz}, +title = {The elimination form of the inverse and its application to linear programming}, +journal = {Management Science}, volume = 3, year = 1957, pages = {255-269}} + +%Marx 2005 + +@article{Marx05, +author = {D\'{a}niel Marx}, +title = {Parameterized complexity of constraint satisfaction problems}, +journal = {Computational Complexity}, volume = 14, year = 2005, pages = {153-183}} + +%Marx 2006 + +@article{Marx06, +author = {D\'{a}niel Marx}, +title = {Parameterized graph separation problems}, +journal = tcs, volume = 351, year = 2006, pages = {394-406}} + +@article{Marx06a, +author = {D\'{a}niel Marx}, +title = {Parameterized coloring problems on chordal graphs}, +journal = tcs, volume = 351, year = 2006, pages = {407-424}} + +@article{Marx06b, +author = {D\'{a}niel Marx}, +title = {Precoloring extension on unit interval graphs}, +journal = dam, volume = 154, year = 2006, pages = {995-1002}} + +@article{Marx06c, +author = {D\'{a}niel Marx}, +title = {Minimum sum multicoloring on the edges of trees}, +journal = tcs, volume = 361, year = 2006, pages = {133-149}} + +@inproceedings{Marx06d, +author = {D\'{a}niel Marx}, +title = {Chordal deletion is fixed-parameter tractable}, +editor = {Fedor V. Fomin}, +booktitle = wg06, year = 2006, pages = {37-48}, publisher = lncs4271} + +%Marx 2009 + +@article{Marx09, +author = {D\'{a}niel Marx}, +title = {A parameterized view on matroid optimization problems}, +journal = tcs, volume = 410, year = 2009, pages = {4471-4479}} + +@article{MarxR09, +author = {D\'{a}niel Marx and Igor Razgon}, +title = {Constant ratio fixed-parameter approximation of the edge multicut problem}, +journal = ipl, volume = 109, year = 2009, pages = {1161-1166}} + +@article{MarxS09, +author = {D\'{a}niel Marx and Marcus Schaefer}, +title = {The complexity of nonrepetive coloring}, +journal = dam, volume = 157, year = 2009, pages = {13-18}} + +@article{MarxS09a, +author = {D\'{a}niel Marx and Ildik\'{o} Schlotter}, +title = {Parameterized graph cleaning problems}, +journal = dam, volume = 157, year = 2009, pages = {3258-3267}} + +%Marz + +@article{MarzbanGJ09, +author = {Marjan Marzban and Qian-Ping Gu and Xiaohua Jia}, +title = {Computational study on planar dominating set problem}, +journal = tcs, volume = 410, year = 2009, pages = {5455-5466}} + +%Mas + +@article{MasudaN88, +author = {S. Masuda and N. Nakajima}, +title = {An optimal algorithm for finding a maximum independent set of +a circular-arc graphs}, +journal = siamjc, volume = 17, pages = {41-52}, year = 1988 } + +%Mat + +%Mata + +@phdthesis{Mata-Montero90, +author = {E. Mata-Montero}, +title = {Reliability of Partial $k$-Tree Networks}, +school = {University of Oregon}, +number = {UO-CIS-TR-90-14}, +year = 1990} + +@article{Mata-Montero91, +author = {E. Mata-Montero}, +title = {Resilience of partial $k$-tree networks with edge and node failures}, +journal = networks, volume = 21, year = 1991, pages = {321-344}} + +%Mate + +@article{Mate81, +author = {A. M\'at\'e}, +title = {A lower estimate for the achromatic number of irreducible graphs}, +journal = dm, volume = 2, year = 1981, pages = {128-145}} + +%Math + +@inproceedings{MathiesonPS04, +author = {Luke Mathieson and Elena Prieto and Peter Shaw}, +title = {Packing Edge Disjoint Triangles: A Parameterized View}, +editor = {R. G. Downey and M. R. Fellows}, +booktitle = iwpec04, year = 2004, publisher = lncs3162, pages = {127-137}} + +%Mato + +@article{MatousekT91, +author = {Ji{\u{r}}\'{\i} Matou{\v{s}}ek and Robin Thomas}, +title = {Algorithms for finding tree-decompositions of graphs}, +year = 1991, journal = ja, volume = 12, pages = {1-22}} + +@article{MatousekT92, +author = {Ji{\u{r}}\'{\i} Matou{\v{s}}ek and Robin Thomas}, +title = {On the Complexity of Finding Iso- and Other Morphisms for +Partial $k$-Trees}, +journal = dm, volume = 108, year = 1992, pages = {343-364}} + +%Mats + +@inproceedings{MatsuiUU08, +author = {Yasuko Matsui and Ryuhei Uehara and Takeaki Uno}, +title = {Enumeration of perfect sequences of chordal graph}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {859-870}} + +%Mau + +@article{MauerSW81, +author = {H. A. Mauer and Ivan Hal Sudborough and E. Welzl}, +title = {On the complexity of the general coloring problem}, +journal = ic, volume = 51, year = 1981, pages = {128-145}} + +%May + +@article{MayhewNW09, +author = {Dillon Mayhew and Mike Newman and Geoff Whittle}, +title = {On excluded minors for real-representability}, +journal = jctb, volume = 99, year = 2009, pages = {685-689}} + +%Maz + +@phdthesis{Mazoit04, +author = {Fr\'{e}d\'{e}ric Mazoit}, +title = {D\'{e}compositions algorithmiques des graphes}, +school = {Ecole Normale Sup\'{e}rieure de Lyon}, +year = 2004} + +@article{Mazoit06, +author = {F. Mazoit}, +title = {Listing all the minimal separators of a 3-connected planar graph}, +journal = dm, volume = 306, pages = {372 - 380}, year = 2006} + +@inproceedings{Mazoit06a, +author = {F. Mazoit}, +title = {The branch-width of circular-arc graphs}, +editor = {Jos\'{e} R. Correa and Alejandro Hevia and Marcos A. Kiwi}, +booktitle = latin06, publisher = lncs3887, year = 2006, pages = {727-736}} + +@article{MazoitN08, +author = {Fr\'{e}d\'{e}ric Mazoit and Nicolas Nisse}, +title = {Monotonicity of non-deterministic graph searching}, +journal = tcs, volume = 399, year = 2008, pages = {169-178}} + +%Mc + +%McC + +@article{McConnellS99, +author = {R.~M. Mc{C}onnell and J. Spinrad}, +title = {Modular decomposition and transitive orientation}, +journal = dm, volume = 201, year = 1999, pages = {189-241}} + +@article{McConnellM04, +author = {Ross M. Mc{C}onnell and Fabien {de Montgolfier}}, +title = {Linear-time modular decomposition of directed graphs}, +journal = dam, volume = 145, pages = {198-209}, year = 2004} + +%McD + +@inproceedings{McDiarmidRSS92, +author = {C. McDiarmid and Bruce Reed and A. Schrijver and B. Shepherd}, +title = {Non-Interfering Network Flows}, +editor = {O. Nurmi and E. Ukkonen}, +booktitle = swat92, publisher = lncs621, year = 1992, pages = {245-257}} + +@article{McDiarmidR03, +author = {C. McDiarmid and B. Reed}, +title = {Channel assignment on graphs of bounded treewidth}, +journal = dm, volume = 273, pages = {183-192}, year = 2003} + +%McG + +@inproceedings{McGuinnessK92, +author = {Patrick J. McGuinness and Andr{\'{e}} E. K{\'{e}}zdy}, +title = {An Algorithm to Find a {$K_5$} Minor}, +booktitle = soda92, year = 1992, pages = {345-356}} + +%McH + +@article{McHughP90, +author = {J. McHugh and Y. Perl}, +title = {Best location of service centers in a tree-like network under budget +constraints}, +journal = dm, year = 1990, volume = 86, pages = {199-214}} + +%McK + +@article{McKayW90, +author = {Brendan D. {McKay} and Nicholas C. Wormald}, +title = {Uniform generation of random regular graphs of moderate +degree}, +journal = ja, volume = 11, year = 1990, pages = {52-67}} + +%McM + +@article{McMorrisWW94, +author = {F. R. McMorris and Tandy Warnow and T. Wimer}, +title = {Triangulating Vertex-Colored Graphs}, +journal = sjdm, volume = 7, number = 2, year = 1994, pages = {296-306}} + +%McN + +@article{McNaughton93, +author = {R. McNaughton}, +title = {Infinite games played on finite graphs}, +journal = apal, volume = 65, pages={149-184}, year = 1993} + +%McV + +@article{McVitieW71, +author = {D. {McVitie} and L. B. Wilson}, +title = {The stable marriage problem}, +journal = cacm, volume = 14, year = 1971, pages = {486-490}} + +%Me + +%Mee + +@inproceedings{MeerR06, +author = {Klaus Meer and Dieter Rautenbach}, +title = {On the {OBDD} size for graphs of bounded tree- and clique-width}, +editor = {Hans L. Bodlaender and Michael A. Langston}, +booktitle = iwpec06, publisher = lncs4169, year = 2006, pages = {71-82}} + +@article{MeerR09, +author = {Klaus Meer and Dieter Rautenbach}, +title = {On the {OBDD} size for graphs of bounded tree- and clique-width}, +journal = dm, volume = 309, year = 2009, pages = {843-851}} + +%Meg + +@article{MegiddoHGJP88, +author = {Nimrod Megiddo and S. L. Hakimi and Michael R. Garey and David S. Johnson +and Christos H. Papadimitriou}, +title = {The Complexity of Searching a Graph}, +journal = jacm, volume = 35, pages = {18-44}, year = 1988 } + +@article{MegiddoV88, +author = {Nimrod Megiddo and Uzi Vishkin}, +title = {On finding a minimum dominating set in a tournament +({N}ote)}, +journal = tcs, volume = 61, year = 1988, pages = {307-316}} + +%Meh + +@book{Mehlhorn84a, +author = {Kurt Mehlhorn}, +title = {Sorting and Searching}, +series = {Data Structures and Algorithms}, +volume = 1, +publisher = {Springer Verlag}, +address = {Berlin}, +year = 1984 } + +@book{Mehlhorn84, +author = {K. Mehlhorn}, +title = {Graph Algorithms and {NP}-Completeness}, +series = {Data Structures and Algorithms}, +volume = 2, +publisher = {Springer Verlag}, +address = {Berlin}, +year = 1984 } + +@inproceedings{MehlhornNR89, +author = {K. Mehlhorn and S. N\"{a}her and M. Rauch}, +title = {On the complexity of a game related to the dictionary +problem}, +booktitle = focs89, year = 1989, pages = {546-548}} + +@book{MehlhornN95, +author = {Kurt Mehlhorn and Stefan N\"aher}, +title = {{LEDA}: A Platform for Combinatorial and Geometric Computing}, +publisher = {Cambridge University Press}, +year = 1995 +} + + +%Mei + +%Meister 2006 + +@article{Meister06, +author = {Daniel Meister}, +title = {Two characterisations of minimal triangulations of {$2K_2$}-free graphs}, +journal = dm, volume = 306, year = 2006, pages = {3327-3333}} + +%Meister 2010 + +@article{MeisterTV10, +author = {Daniel Meister and Jan Arne Telle and Martin Vatshelle}, +title = {Recognizing digraphs of {K}elly-width 2}, +journal = dam, volume = 158, year = 2010, pages = {741-746}} + +%Men + +@article{Menger27, +author = {K. Menger}, +title = {Zur Allgemeinen {K}urventheorie}, +journal = fundmath, volume = 10, year = 1927, pages = {96-115}} + +%Mes + +@article{MessingerNP08, +author = {M. E. Messinger and R. J. Nowakowski and P. Pra{\l}at}, +title = {Cleaning a network with brushes}, +journal = tcs, volume = 399, year = 2008, pages = {191-205}} + +%Mez + +@article{MezziniM10, +author = {Mauro Mezzini and Marina Moscarini}, +title = {Simple algorithms for minimal triangulation of a graph and backward selection of a decomposable {M}arkov network}, +journal = tcs, volume = 411, year = 2010, pages = {958-966}} + +%Mi + +%Mil + +@article{Miller83, +author = {Gary L. Miller}, +title = {Isomorphism of $k$-contractible graphs: A generalization of bounded valence and bounded genus}, +journal = ic, volume = 56, year = 1983, pages = {1-23}} + +@inproceedings{MillerR85, +author = {Gary L. Miller and John Reif}, +title = {Parallel Tree Contraction and its Application}, +booktitle = focs85, year = 1985, pages = {478-489}} + +@article{Miller86, +author = {Gary L. Miller}, +title = {Finding small simple cycle separators for 2-connected planar graphs}, +journal = jcss, volume = 32, year = 1986, pages = {265-279}} + +@inproceedings{MillerS86, +author = {Z. Miller and Ivan Hal Sudborough}, +title = {Polynomial Algorithms for Recognizing Small Cutwidth in Hypergraphs}, +booktitle = {Proc. Aegean Workshop on Computing, VLSI algorithms and +architecture AWOC '86, Springer Verlag Lecture Notes in Computer +Science, Vol. 227}, +year = 1986, +pages = {252-260} +} + +@article{Miller88, +author = {Z. Miller}, +title = {A linear algorithm for topological bandwidth in degree 3 trees}, +journal = siamjc, volume = 17, year = 1988, pages = {1018-1035}} + +@incollection{MillerR89, +author = {Gary L. Miller and John Reif}, +title = {Parallel Tree Contraction. {P}art 1: {F}undamentals}, +booktitle = {Advances in Computing Research 5: Randomness and Computation}, +editor = {S. Micali}, +publisher = {JAI Press, Greenwich, CT}, +pages = {47-72}, +year = 1989} + +@article{MillerR91, +author = {Gary L. Miller and John Reif}, +title = {Parallel Tree Contraction. {P}art 2: {F}urther applications}, +journal = siamjc, year = 1991, pages = {1128 - 1147}, volume = 20} + +%Mis + +@inproceedings{MishraRSS07, +author = {S. Mishra and V. Raman and S. Saurabh and S. Sikdar and C. R. Subramanian}, +title = {The Complexity of Finding Subgraphs Whose Matching Number Equals the Vertex Cover Number}, +editor = {Takeshi Tokuyama}, +booktitle = isaac07, publisher = lncs4835, year = 2007, pages = {268-279}} + +%Mit + +@article{Mitchell79, +author = {S. L. Mitchell}, +title = {Linear algorithms to recognize outerplanar and maximal +outerplanar graphs}, +journal = ipl, volume = 9, pages = {229-232}, year = 1979 } + +@article{MitchellCH79, +author = {S. L. Mitchell and E. J. Cockayne and S. T. Hedetniemi}, +title = {Linear algorithms on recursive representations of trees}, +journal = jcss, volume = 18, year = 1979, pages = {76-85}} + +@article{MitchellH79, +author = {Sandra L. Mitchell and Stephen T. Hedetniemi}, +title = {Linear algorithms for edge-coloring trees and unicyclic graphs}, +journal = ipl, volume = 9, year = 1979, pages = {110-112}} + +@article{Mittal88, +author = {Hari Ballabh Mittal}, +title = {A fast backtrack algorithm for graph isomorphism}, +journal = ipl, volume = 29, year = 1988, pages = {105-110}} + +@inproceedings{Miyano87, +author = {Satoru Miyano}, +title = {The lexicographically first maximal subgraph problems: {P}-completeness and {NC} algorithms}, +booktitle = icalp87, publisher = lncs267, year = 1987, pages = {425-234}} + +@article{Miyano88, +author = {Satoru Miyano}, +title = {A Parallelizable Lexicographically First Maximal Edge-Induced Subgraph Problem}, +journal = ipl, volume = 27, pages = {75-78}, year = 1988 } + +%Mo + +%Moe + +@article{MoehringR84, +author = {Rolf H. M{\"{o}}hring and F. J. Radermacher}, +title = {Substitution decomposition and connections with combinatorial +optimization}, +journal = adm, volume = 19, year = 1984, pages = {257-356}} + +@inproceedings{Moehring85, +author = {Rolf H. M{\"{o}}hring}, +title = {Algorithmic aspects of comparability graphs and interval graphs}, +booktitle = {Graphs and Order}, +editor = {I. Rival}, +pages = {41-101}, +year = 1985, +publisher = {Reidel}, +address = {Dordrecht} +} + +@article{Moehring856, +author = {Rolf H. M{\"{o}}hring}, +title = {Algorithmic aspects of the substitution decomposition in optimization +over relations, set systems and boolean functions}, +journal = aor, volume = 4, year = {1985/1986}, pages = {195-225}} + +@inproceedings{Moehring89, +author = {Rolf H. M{\"{o}}hring}, +title = {Computationally tractable classes of ordered sets}, +booktitle = {Algorithms and Order}, +editor = {I. Rival}, +publisher = {Kluwer Acad. Publ.}, +address = {Dordrecht}, +year = 1989} + +@inproceedings{Moehring90, +author = {Rolf H. M{\"{o}}hring}, +title = {Graph Problems Related to Gate Matrix Layout and {PLA} +Folding}, +booktitle = {Computational Graph Theory, Comuting Suppl. 7}, +editor = {E. Mayr and H. Noltemeier and M. Sys{\l}o}, +publisher = {Springer Verlag}, pages = {17-51}, year = 1990} + +@article{Moehring96, +author = {Rolf H. M{\"{o}}hring}, +title = {Triangulating graphs without asteroidal triples}, +journal = dam, volume = 64, year = 1996, pages = {281-287}} + +%Moh + +@article{MoharR96, +author = {Bojan Mohar and Neil Robertson}, +title = {Disjoint Essential Cycles}, +journal = jctb, volume = 68, year = 1996, pages = {324-349}} + +@article{MoharR96a, +author = {Bojan Mohar and Neil Robertson}, +title = {Planar Graphs on Nonplanar Surfaces}, +journal = jctb, volume = 68, year = 1996, pages = {87-111}} + +@book{MoharT2001, +author = {Bojan Mohar and Carsten Thomassen}, +title = {Graphs on Surfaces}, +year = {2001}, +publisher = {The Johns Hopkins University Press}, +address = {Baltimore} +} + +%Mon + +@article{Monien85, +author = {Burkhard Monien}, +title = {How to find long paths efficiently}, +journal = adm, volume = 25, pages = {239-254}, year = 1985 } + +@article{MonienS85, +author = {Burkhard Monien and Ival Hal Sudborough}, +title = {Bandwidth-Constrained {NP}-Complete Problems}, +journal = tcs, volume = 41, year = 1985, pages = {141-167}} + +@article{Monien86, +author = {Burkhard Monien}, +title = {The Bandwidth Minimization Problem for Caterpillars with Hair +Length 3 is {NP}-complete}, +journal = sjadm, volume = 7, year = 1986, pages = {505-512}} + +@article{MonienS88, +author = {Burkhard Monien and Ival Hal Sudborough}, +title = {Min Cut is {NP}-complete for Edge Weighted Trees}, +journal = tcs, volume = 58, year = 1988, pages = {209-229}} + +@article{MonmaW86, +author = {Clyde L. Monma and Victor K. Wei}, +title = {Intersection Graphs of Paths in a Tree}, +journal = jctb, volume = 41, year = 1986, pages = {141-181}} + +%Mor + +@article{MoranW91, +author = {Shlomo Moran and Yaron Wolfstahl}, +title = {Optimal covering of cacti by vertex-disjoint paths}, +journal = tcs, volume = 84, year = 1991, pages = {179-187}} + +@inproceedings{MoranS05, +author = {Shlomo Moran and Sagi Snir}, +title = {Convex recolorings of strings and trees: Definitions, hardness results, and algorithms}, +editor = {Frank K. H. A. Dehne and Alejandro L\'{o}pez-Ortiz and J\"{o}rg-R\"{u}dinger Sack}, +booktitle = wads05, publisher = lncs3608, year = 2005, pages = {218-232}} + +@inproceedings{MoranS05a, +author = {Shlomo Moran and Sagi Snir}, +title = {Efficient Approximation of Convex Recolorings}, +booktitle = {Proceedings APPROX 2005: 8th International Workshop on +Approximation Algorithms for Combinatorial Optimization Problems, published +with Proceedings RANDOM 2005}, +publisher = lncs3624, +pages = {192-208}, year = 2005} + +@article{MoranS07, +author = {Shlomo Moran and Sagi Snir}, +title = {Efficient approximation of convex recolorings}, +journal = jcss, volume = 73, year = 2007, pages = {1078-1089}} + +@article{MoranS08, +author = {Shlomo Moran and Sagi Snir}, +title = {Convex recolorings of strings and trees: {D}efinitions, hardness results and algorithms}, +journal = jcss, volume = 74, year = 2008, pages = {850-869}} + +%Mos + +@phdthesis{Mosbah92, +author = {Mohamed H\'{e}di Mosbah}, +title = {Constructions d'Algorithmes Pour les Graphes Structur\'{e}s par des M{\'e}thodes Alg\'{e}briques et Logiques}, +year = 1992, +school = {Universit{\'e} Bordeaux-I}} + +@inproceedings{Mosbah93, +author = {Mohamed H\'{e}di Mosbah}, +title = {Probabilistic graph grammars}, +editor = {Ernst W. Mayr}, +booktitle = wg92, year = 1993, publisher = lncs657, pages = {236-247}} + +@inproceedings{Moser09, +author = {Hannes Moser}, +title = {A problem kernelization for graph packing}, +editor = {Mogens Nielsen and Anton{\'{\i}}n Kucera and Peter Bro Miltersen and Catuscia Palamidessi and Petr Tuma and Frank D. Valencia}, +booktitle = sofsem09, publisher = lncs5404, year = 2009, pages = {401-412}} + +@article{MoserS09, +author = {Hannes Moser and Somnath Sikdar}, +title = {The parameterized complexity of the induced matching problem}, +journal = dam, volume = 157, year = 2009, pages = {715-727}} + +%Mot + +@mastersthesis{Motte93, +author = {Nikolas Motte}, +title = {Algorithmen zur Berechnung der Baumweite von Graphen}, +school = {University of Passau, Germany}, +year = 1993} + +@inproceedings{MotwaniRS88, +author = {Rajeev Motwani and Arvind Raghunathan and Huzur Saran}, +title = {Constructive results from graph minors: {L}inkless embeddings}, +booktitle = focs88, year = 1988, pages = {398-407}} + +%Mu + +@article{MullerB87, +author = {H. M\"{u}ller and A. Brandst\"{a}dt}, +title = {The {NP}-completeness of {Steiner Tree} and {Dominating Set} for chordal bipartite graphs}, +journal = tcs, volume = 53, year = 1987, pages = {157-165}, +remark = {The page number may be wrong}} + +@article{MullerS89, +author = {John H. Muller and Jeremy Spinrad}, +title = {Incremental Modular Decomposition}, +journal = jacm, volume = 36, year = 1989, pages = {1-19}} + +@article{MullerU10, +author = {Haiko M\"{u}ller and Ruth Urner}, +title = {On a disparity between relative cliquewidth and relative {NLC}-width}, +journal = dam, volume = 158, year = 2010, pages = {828-840}} + +%Mv + +%Mx + +%My + +@article{MyungLT95, +author = {Y. S. Myung and C. H. Lee and D. W. Tcha}, +title = {On the generalized minimum spanning tree problem}, +journal = networks, year = 1995, volume = 26, pages = {231-241}} + +%Mz + +%N + +%Na + +%Nag + +@article{NagamochiI92, +author = {Hiroshi Nagamochi and T. Ibaraki}, +title = {A linear-time algorithm for finding a sparse $k$-connected spanning +subgraph of a $k$-connected graph}, +journal = alg, volume = 7, year = 1992, pages = {583-596}} + +@article{NagamochiK06, +author = {Hiroshi Nagamochi and Taizo Kawada}, +title = {Minmax subtree cover problem on cacti}, +journal = dam, volume = 154, year = 2006, pages = {1254-1263}} + +%Nak + +@article{NakanoON94, +author = {Shin-Ichi Nakano and Takashi Oguma and Tako Nishizeki}, +title = {A linear time algorithm for c-triangulating three-colored graphs}, +journal = {Trans. Institute of Electronics, Information and Communication, +Eng., A.}, volume = {377-A}, number = 3, pages = {543-546}, year = 1994, +note = {In Japanese}} + +@article{NakayamaM07, +author = {Shin-Ichi Nakayama and Shigeru Masuyama}, +title = {A polynomial time algorithm for obtaining minimum edge ranking on +two-connected outerplanar graphs}, +journal = ipl, volume = 103, year = 2007, pages = {211-250}} + +%Nao + +@article{NaorNS87, +author = {Joseph Naor and Moni Naor and Alejandro A. Sch\"{a}ffer}, +title = {Fast Parallel Algorithms for Chordal Graphs}, +journal = siamjc, volume = 18, year = 1989, pages = {327-349}} + +@article{NaorN90, +author = {Joseph Naor and Mark B. Novick}, +title = {An efficient reconstruction of a graph from its line graph in +parallel}, +journal = ja, year = 1990, volume = 11, pages = {132-143}} + +@inproceedings{NaorGM90, +author = {Dalit Naor and Dan Gusfield and Charles Martel}, +title = {A Fast Algorithm for Optimally Increasing the +Edge-Connectivity}, +booktitle = focs90, pages = {698-707}, year = 1990 } + +%Nar + +@techreport{NarasimhanM88, +author = {Giri Narasimhan and Rachel Manber}, +title = {A Generalization of {L}ovasz's Sandwich Theorem}, +number = 800, +institution = {Computer Science Dept., University of Wisconsin-Madison}, +year = 1988 +} + +@techreport{NarasimhanM88a, +author = {Giri Narasimhan and Rachel Manber}, +title = {Stability Number and Chromatic Number of Tolerance Graphs}, +number = 788, +institution = {Computer Science Dept., University of Wisconsin-Madison}, +year = 1988 +} + +@article{Narasimhan89, +author = {Giri Narasimhan}, +title = {A note on the Hamiltonian Circuit problem on Directed Path +Graphs}, +journal = ipl, volume = 32, year = 1989, pages = {167-170}} + +@phdthesis{Narayanan89, +author = {{Ch.} Narayanan}, +title = {Fast Parallel Algorithms and Enumeration Techniques for Partial $k$-Trees}, +school = {The Clemson University}, +month = {8}, year = 1989, pages = {i-vii,1-116}, +note = {Report No. URI-071}} + +@article{NarayananN98, +author = {Lata Narayanan and Naomi Nishimura}, +title = {Interval routing on $k$-trees}, +journal = ja, volume = 26, year = 1998, pages = {325-369}} + +%Nas + +@article{NashW65, +author = {C. {Nash-Williams}}, +title = {On well-quasi ordering infinite trees}, +journal = {Proceedings of the Cambridge Philosophical Society}, volume = 61, year = 1965, pages = {697-720}} + +%Nat + +@article{NatanzonSS00, +author = {Assaf Natanzon and Ron Shamir and Roded Sharan}, +title = {A Polynomial Approximation Algorithm for the Minimum Fill-In +Problem}, +journal = sjdm, volume = 30, pages = {1067-1079}, year = 2000} + +@article{NatarajanW78, +author = {K. S. Natarajan and L. J. White}, +title = {Optimum domination in weighted trees}, +journal = ipl, volume = 7, year = 1978, pages = {261-265}} + +%Nau + +@techreport{Naumann94, +author = {Valeska Naumann}, +title = {Measuring the distance to series-parallel graphs by path +expressions}, +number = {376/1994}, year = 1994, +institution = {Technische Universit\"{a}t Berlin}, +address = {Berlin, Germany}} + +%Ne + +%Nem + +@article{NemhauserT75, +author={G. L. Nemhauser and L. E. Trotter}, +title = {Vertex packing: Structural properties and algorithms}, +journal = mp, year = 1975, volume = 8, pages = {232-248}} + +%Ner + +@article{NerodeRY96, +author = {Anil Nerode and Jeffrey B. Remmel and Alexander Yakhnis}, +title = {McNaughton games and extracting strategies for concurrent programs}, +journal = apal, volume = 78, year = 1996, pages = {203-242}} + +%Nes + +@article{NesetrilZ96, +author = {Jaroslav Ne\~{s}et\~{r}il and Xuding Zhu}, +title = {On bounded treewidth duality of graphs}, +journal = jgt, volume = 23, pages = {151-162}, year = 1996} + +@article{NesetrilS01, +author = {Jaroslav Ne\~{s}et\~{r}il and E. Sopena}, +title = {On the oriented game chromatic number}, +journal = ejc, volume = 8, year = 2001, number = 2, pages = {R14}} + +@article{NesetrilM06, +author = {Jaroslav Ne\~{s}et\~{r}il and Patrice Ossona de Mendez}, +title = {Tree-depth, subgraph coloring and homomorphism bounds}, +journal = ejcom, volume = 27, year = 2006, pages = {1022-1041}} + +%Neu + +@article{NeufeldtC85, +author = {E. M. Neufeldt and C. J. Colbourn}, +title = {The most reliable series-parallel networks}, +journal = networks, volume = 15, year = 1985, pages = {27-32}} + +%Ni + +%Nie + +@booklet{Niedermeier02, +author = {R. Niedermeier}, +title = {Invitation to fixed-parameter algorithms}, +year = 2002, +note = {Habilitation Thesis}, +address = {Universit\"{a}t T\"{u}bingen}} + +@book{Niedermeier06, +author = {Rolf Niedermeier}, +title = {Invitation to fixed-parameter algorithms}, +publisher = {Oxford University Press}, +series = {Oxford Lecture Series in Mathematics and Its Applications}, +year = 2006} + +%Nik + +@article{NikolopoulosP06, +author = {Stavros D. Nikolopoulos and Leonidas Palios}, +title = {Minimal separators in {$P_4$}-sparse graphs}, +journal = dm, volume = 306, pages = {381-392}, year = 2006} + +%Nis + +@article{NishimuraRT00, +author = {Naomi Nishimura and Prabhakar Ragde and Dimitrios M. Thilikos}, +title = {Finding smallest supertrees under minor containment}, +journal = ijfcs, volume = 11, year = 2000, pages = {445-466}} + +@inproceedings{NishimuraRT04, +author = {Naomi Nishimura and Prabhakar Ragde and Dimitrios M. Thilikos}, +title = {Smaller kernels for hitting set problems of constant arity}, +editor = {R. G. Downey and M. R. Fellows}, +booktitle = iwpec04, year = 2004, publisher = lncs3162, pages = {239-250}} + +@article{Nisse09, +author = {Nicolas Nisse}, +title = {Connected graph searching in chordal graphs}, +journal = dam, volume = 157, year = 2009, pages = {2603-2610}} + +@article{NisseS09, +author = {Nicolas Nisse and David Soguet}, +title = {Graph searching with advice}, +journal = tcs, volume = 410, year = 2009, pages = {1307-1318}} + +%No + +%Nob + +@article{Noble98, +author = {S. D. Noble}, +title = {Evaluating the {T}utte polynomial for graphs of bounded tree-width}, +journal = cpc, year = 1998, pages = {307-321}, volume = 7} + +%Nog + +@article{NogaYZ95, +author = {Noga Alon and Raphael Yuster and Uri Zwick}, +title = {Color-coding}, +journal = jacm, volume = 42, year = 1995, pages = {855-856}} + +%Nor + +@article{NorineSTW06, +author = {Serguei Norine and Paul Seymour and Robin Thomas and Paul Wollan}, +title = {Proper minor-closed families are small}, +journal = jctb, volume = 96, year = 2006, pages = {754-757}} + +%Nov + +@techreport{Novick89, +author = {Mark B. Novick}, +title = {Fast Parallel Algorithms for the Modular Decomposition}, +institution = {Department of Computer Science, Cornell University}, +number = {TR 89-1016}, year = 1989 } + +%O + +%Oc + +@article{OchemP08, +author = {Pascal Ochem and Alexandre Pinlou}, +title = {Oriented colorings of partial 2-trees}, +journal = ipl, volume = 108, year = 2008, pages = {82-86}} + +%Og + +@article{OgawaHS03, +author = {M. Ogawa and Z. Hu and I. Sasano}, +title = {Iterative-free program analysis}, +journal = {ACM SIGPLAN Notices}, volume = 38, year = 2003, pages = {111-123}} + +%Oh + +%Ohs + +@article{Ohsugi10, +author = {Hidefumi Ohsugi}, +title = {Normality of cut polytopes of graphs is a minor closed property}, +journal = dm, volume = 310, year = 2010, pages = {1160-1166}} + +%Oht + +@article{Othsuki76, +author = {T. Ohtsuki}, +title = {A fast algorithm for finding an optimal ordering in the +vertex elimination ordering of a graph}, +journal = siamjc, volume = 5, year = 1976, pages = {133-145}} + +@article{OthsukiCF76, +author = {T. Ohtsuki and L. K. Cheung and T. Fujisawa}, +title = {Minimal triangulation of a graph and optimal pivoting ordering +in a sparse matrix}, +journal = jmaa, volume = 54, pages = {622-633}, year = 1976} + +@article{OhtsukiMKF81, +author = {T. Ohtsuki and H. Mori and T. Kashiwabara and T. Fujisawa}, +title = {On minimal augmentation of a graph to obtain an interval graph}, +journal = jcss, volume = 22, year = 1981, pages = {60-97}} + +%Ol + +%Ola + +@article{Olariu89, +author = {Stephan Olariu}, +title = {A decomposition for strongly perfect graphs}, +journal = jgt, volume = 13, number = 3, year = 1989, pages = {301-311}} + +@article{Olariu91, +author = {Stephan Olariu}, +title = {On the structure of unbreakable graphs}, +journal = jgt, volume = 15, number = 4, year = 1991, pages = {349-373}} + +@article{OlariuSZ92, +author = {Stephan Olariu and James L. Schwing and Jingyuan Zhang}, +title = {Optimal parallel encoding and decoding algorithms for trees}, +journal = ijfcs, volume = 3, number = 1, year = 1992, pages = {1-10}} + +%Ole + +@article{OlesenM02, +author = {Kristian G. Olesen and Anders L. Madsen}, +title = {Maximal prime subgraph decomposition of {B}ayesian networks}, +journal = {IEEE Trans. on Systems, Man, and Cybernetics, Part B}, +volume = 32, year = 2002, pages = {21-31}} + +%Or + +%Ord + +%author = {F. Ord\'o\~nez and B. Krishnamachari}, + +@article{OrdonezK04, +author = {F. Ordonez and B. Krishnamachari}, +title = {Optimal information extraction in energy-limited wireless sensor networks}, +journal = {IEEE Journal on Selected Areas in Communications}, +volume = 22, year = 2004, number = 6, pages = {1121-1129}} + +%Orl + +@article{OrlinBB81, +author = {James B. Orlin and Maurizio A. Bonucelli and Daniel P. Bovet}, +title = {An {$O(n^2)$} algorithm for coloring proper circular arc graphs}, +journal = sjadm, volume = 2, year = 1981, pages = {88-93}} + +%Os + +%Ost + +@article{Ostrovskii10, +author = {M. I. Ostrovskii}, +title = {Minimum congestion spanning trees in planar graphs}, +journal = dm, volume = 310, year = 2010, pages = {1204-1209}} + +%Ou + +%Oum + +%Oum 2005 + +@article{Oum05, +author = {{Sang-il} Oum}, +title = {Rank-width and vertex-minors}, +journal = jctb, volume = 95, year = 2005, pages = {79-100}} + +%Oum 2006 + +@article{OumS06, +author = {{Sang-il} Oum and Paul Seymour}, +title = {Approximating clique-width and branch-width}, +journal = jctb, volume = 96, year = 2006, pages = {514-528}} + +%Oum 2007 + +@article{OumS07, +author = {{Sang-il} Oum and Paul Seymour}, +title = {Testing branch-width}, +journal = jctb, volume = 97, year = 2007, pages = {385-393}} + +%Oum 2008 + +@article{Oum08, +author = {{Sang-il} Oum}, +title = {Rank-width and well-quasi ordering}, +journal = sjdm, volume = 22, year = 2008, pages = {666-682}} + +@article{Oum08a, +author = {{Sang-il} Oum}, +title = {Rank-width is less than or equal to branch-width}, +journal = jgt, volume = 57, year = 2008, pages = {239-244}} + +@article{Oum08b, +author = {{Sang-il} Oum}, +title = {Approximating rank-width and clique-width quickly}, +journal = acmtalg, volume = 5, number = 1, year = 2008} + +%Oum 2009 + +@article{Oum09, +author = {Sang-il Oum}, +title = {Computing rank-width exactly}, +journal = ipl, volume = 109, year = 2009, pages = {730-738}} + +%P + +%Pa + +%Pan + +@article{PandaD03, +author = {B. S. Panda and S. K. Das}, +title = {A linear time recognition algorithm for proper interval graphs}, +journal = ipl, volume = 87, year = 2003, pages = {153-161}} + +%Pap + +%Papadimitriou 1975 + +@article{Papadimitriou75, +author = {Christos H. Papadimitriou}, +title = {Games Against Nature}, +journal = jcss, volume = 31, year = 1985, pages = {288-301}} + +%Papadimitriou 1976 + +@article{Papadimitriou76, +author = {Christos H. Papadimitriou}, +title = {The {NP}-completeness of the bandwidth minimization problem}, +journal = comp, volume = 16, year = 1976, pages = {263-270}} + +%Papadimitriou 1981 + +@article{PapadimitriouY81, +author = {Christos H. Papadimitriou and Mihalis Yannakakis}, +title = {The clique problem for planar graphs}, +journal = ipl, volume = 13, year = 1981, pages = {131-133}} + +%Papadimitriou 1982 + +@book{PapadimitriouS82, +author = {Christos H. Papadimitriou and K. Steiglitz}, +title = {Combinatorial Optimization: Algorithms and Complexity}, +publisher = {Prentice Hall}, +address = {Englewoods Cliffs, NJ}, +year = 1982 } + +%Papadimitriou 1984 + +@article{Papadimitriou84, +author = {Christos H. Papadimitriou}, +title = {On the complexity of unique solutions}, +journal = jacm, volume = 31, year = 1984, pages = {392-400}} + +%Papadimitriou 1989 + +@techreport{PapadimitriouS89, +author = {Christos H. Papadimitriou and Martha Sideris}, +title = {The Bisection Width of Grid Graphs}, +number = {89.0584}, +institution = {CTI Patras}, +year = 1989} + +%Papadimitriou 1994 + +@book{Papadimitriou94, +author = {Christos H. Papadimitriou}, +title = {Computational Complexity}, +year = 1994, +publisher = {Addison-Wesley}, +address = {Reading, Mass.}} + +@article{PapakostasT98, +author = {Achilleas Papakostas and Ioannis G. Tollis}, +title = {Algorithms for area-efficient orthogonal drawings}, +journal = {Computation Geometry: Theory and Applications}, volume = 9, year = 1998, pages = {83-110}} + +%Par + +%Park + +@inproceedings{Park02, +author = {J. D. Park}, +title = {MAP complexity results and approximation methods}, +editor = {A. Darwiche and N. Friedman}, +booktitle = uai02, publisher = {Morgan Kaufmann}, pages = {388-396}, year = 2002} + +@article{ParkD04, +author = {J. D. Park and A. Darwiche}, +title = {Complexity results and approximation settings for {MAP} explanations}, +journal = jair, volume = 21, year = 2004, pages = {101-133}} + +%Parn + +@article{ParnasR07, +author = {Michal Parnas and Dana Ron}, +title = {Approximating the minimum vertex cover in sublinear time and a +connection to distributed algorithms}, +journal = tcs, volume = 381, year = 2007, pages = {183-196}} + +%Parr + +@unpublished{Parra94, +author = {Andreas Parra}, +title = {Triangulating bitolerance graphs}, +note = {Manuscript}, +year = 1994} + +@misc{Parra95, +author = {Andreas Parra}, +note = {Personal communication}, year = 1995} + +@phdthesis{Parra96, +author = {Andreas Parra}, +title = {Structural and Algorithmic Aspects of Chordal Graph Embeddings}, +year = 1996, +school = {Technical University Berlin}} + +@article{ParraS97, +author = {Andreas Parra and Petra Scheffler}, +title = {Characterizations and algorithmic applications of chordal graph +embeddings}, +journal = dam, volume = 79, pages = {171-188}, year = 1997} + +@article{Parra98, +author = {Andreas Parra}, +title = {Triangulating multitolerance graphs}, +journal = dam, volume = 84, year = 1998, pages = {183-197}} + +%Pars + +@inproceedings{Parsons76, +author = {T. D. Parsons}, +title = {Pursuit Evasion in a Graph}, +booktitle = {Theory and Application of Graphs}, +editor = {Y. Alavi and D. R. Lick}, +publisher = {Springer Verlag}, +address = {Berlin}, +year = 1976, pages = {426-441}} + +%Part + +@article{Parter61, +author = {S. Parter}, +title = {The use of linear graphs in {Gauss} elimination}, +journal = {SIAM Review}, volume = 3, pages = {119-130}, year = 1961} + +%Pau + +%Paul 1978 + +@article{Paul78, +author = {J. L. Paul}, +title = {Tic-Tac-Toe in $n$-dimensions}, +journal = {Math. Mag.}, year = 1978, pages = {45-49}, volume = 51 } + +%Paul 1980 + +@article{PaulPR80, +author = {W. J. Paul and E. J. Prauss and R. Reischuk}, +title = {On alternation}, +journal = ai, volume = 14, pages = {243-255}, year = 1980 } + +@article{PaulR80, +author = {W. J. Paul and R. Reischuk}, +title = {On alternation {II}}, +journal = ai, volume = 14, pages = {391-403}, year = 1980 } + +%Paul 2005 + +@inproceedings{PaulT05, +author = {Christophe Paul and Jan Arne Telle}, +title = {New tools and simpler algorithms for branchwidth}, +booktitle = esa05, publisher = lncs3669, year = 2005, pages = {379-390}} + +%Paul 2009 + +@article{PaulT09, +author = {Christophe Paul and Jan Arne Telle}, +title = {Branchwidth of chordal graphs}, +journal = dam, volume = 157, year = 2009, pages = {2718-2725}} + +%Paw + +@article{PawagiGR87, +author = {Shaunak R. Pawagi and P. S. Gopalakrishnan and I. V. +Ramakrishnan}, +title = {Computing dominators in parallel}, +journal = ipl, volume = 24, year = 1987, pages = {217-221}} + +%Pe + +%Pea + +@book{Pearl88, +author = {J. Pearl}, +title = {Probablistic Reasoning in Intelligent Systems: Networks of Plausible +Inference}, +publisher = {Morgan Kaufmann}, year = 1988, address = {Palo Alto}} + +%Pec + +@article{PeckS92, +author = {G. W. Peck and A. Shastri}, +title = {Bandwidth of theta graphs with short paths}, +journal = dm, volume = 103, pages = {177-187}, year = 1992} + +%Pen + +@article{PengHHKT00, +author = {Sheng-Lung Peng and Chin-Wen Ho and Tsan-Shen Hsu and Ming-Tat Ko +and {Chuan Yi} Tang}, +title = {Edge and node searching problems on trees}, +journal = tcs, volume = 240, pages = {429-446}, year = 2000} + +@article{PengKHHT00, +author = {S.-L. Peng and M.-T. Ko and C.-W. Ho and T.-S. Hsu and C. Y. Tang}, +title = {Graph searching on some subclasses of chordal graphs}, +journal = alg, volume = 27, pages = {395-426}, year = 2000} + +@article{PengC06, +author = {Sheng-Lung Peng and Chi-Kang Chen}, +title = {On the interval completion of chordal graphs}, +journal = dam, volume = 154, pages = {1003-1010}, year = 2006} + +%Per + +@inproceedings{PerkovicR99, +author = {Ljubomir Perkovi{\'{c}} and Bruce Reed}, +title = {An improved algorithm for finding tree decompositions of small width}, +editor = {Peter Widmayer and Gabriele Neyer and Sephan Eidenbenz}, +booktitle = wg99, publisher = lncs1665, year = 1999, pages = {148-154}} + +@article{PerkovicR00, +author = {Ljubomir Perkovi{\'{c}} and Bruce Reed}, +title = {An improved algorithm for finding tree decompositions of small width}, +journal = ijfcs, volume = 11, year = 2000, pages = {365-371}} + +%Per + +@article{PerlS78, +author = {Y. Perl and Y. Shiloach}, +title = {Finding two disjoint paths between two pairs of vertices in a +graph}, +journal = jacm, year = 1978, volume = 23, pages = {1-9}} + +%Pey + +@article{Peyton01, +author = {B. W. Peyton}, +title = {Minimal orderings revisited}, +journal = sjmaa, volume = 23, year = 2001, pages = {271-294}} + +%Pf + +@article{PfaffLH84, +author = {J. Pfaff and R. Laskar and S. T. Hedetniemi}, +title = {Linear algorithms for independent domination and total +domination in series-parallel graphs}, +journal = cn, volume = 45, year = 1984, pages = {71-82}} + +%Ph + +%Phi + +@inproceedings{PhilipRS09, +author = {Geevarghese Philip and Venkatesh Raman and Somnath Sikdar}, +title = {Solving Dominating Set in larger classes of graphs: {FPT} algorithms +and polynomial kernels}, +editor = {Amos Fiat and Peter Sanders}, +booktitle = esa09, publisher = lncs5757, year = 2009, pages = {694-705}} + +%Pl + +@inproceedings{PlehnV90, +author = {J\"{u}rgen Plehn and Bernd Voigt}, +title = {Finding minimally weighted subgraphs}, +editor = {Rolf H. M\"{o}hring}, +booktitle = wg90, publisher = lncs484, year = 1991, pages = {18-29}} + +%Pi + +%Pie + +@article{Pietrzak03, +author = {Krzysztof Pietrzak}, +title = {On the parameterized complexity of the fixed alphabet {\em shortest +common supersequence} and {\em longest common subsequence} problems}, +journal = jcss, volume = 67, year = 2003, pages = {757-771}} + +%Pin + +@article{PinlouS06, +author = {Alexandre Pinlou and \'{E}ric Sopena}, +title = {Oriented vertex and arc colorings of outerplanar graphs}, +journal = ipl, volume = 100, year = 2006, pages = {97-104}} + +%Po + +%Pon + +@inproceedings{PontaHN08, +author = {Oriana Ponta and Falk H\"{u}ffner and Rolf Niedermeier}, +title = {Speeding up Dynamic Programming for Some {NP}-Hard Graph Recoloring +Problems}, +editor = {M. Agrawal and D.-Z. Du and Z. Duan and A. Li}, +booktitle = tamc08, publisher = lncs4978, year = 2008, pages = {490-501}} + +%Pr + +%Pri + +@phdthesis{Prieto05, +author = {Elena Prieto}, +title = {Systematic Kernelization in {FPT} Algorithm Design}, +school = {University of Newcastle}, +address = {Australia}, year = 2005} + +@article{PrietoS06, +author = {Elena Prieto and Christian Sloper}, +title = {Looking at the stars}, +journal = tcs, volume = 351, pages = {437-445}, year = 2006} + +%Pro + +%Proskurowski 1979 + +@article{Proskurowski79, +author = {Andrzej Proskurowski}, +title = {Minimum dominating cycles in two-trees}, +journal = ijcis, volume = 8, number = 5, year = 1979, pages = {405-417}} + +%Proskurowski 1980 + +@article{Proskurowski80, +author = {Andrzej Proskurowski}, +title = {Centers of maximal outerplanar graphs}, +journal = jgt, year = 1980, volume = 4, number = 2, pages = {75-79}} + +@article{Proskurowski80a, +author = {Andrzej Proskurowski}, +title = {Centers of 2-trees}, +journal = adm, volume = 9, year = 1980, pages = {1-5}} + +%Proskurowski 1981 + +@article{Proskurowski81, +author = {Andrzej Proskurowski}, +title = {Recursive graphs, recursive labelings and shortest paths}, +journal = siamjc, volume = 16, year = 1981, pages = {391-397}} + +@article{ProskurowskiS81, +author = {Andrzej Proskurowski and Maciej M. Sys{\l}o}, +title = {Minimum dominating cycles in outerplanar graphs}, +journal = ijcis, volume = 10, year = 1981, pages = {127-139}} + +%Proskurowski 1984 + +@article{Proskurowski84, +author = {Andrzej Proskurowski}, +title = {Separating subgraphs in $k$-trees: {C}ables and Caterpillars}, +journal = dm, volume = 49, year = 1984, pages = {275-285}} + +%Proskurowski 1986 + +@article{ProskurowskiS86, +author = {Andrzej Proskurowski and Maciej M. Sys{\l}o}, +title = {Efficient Vertex- and Edge-colorings of Outerplanar Graphs}, +journal =sjadm, volume = 7, year = 1986, pages = {131-136}} + +%Proskurowski 1989 + +@techreport{Proskurowski89, +author = {Andrzej Proskurowski}, +title = {Maximal Graphs of Pathwidth $k$ or Searching a Partial +$k$-caterpillar}, +number = {CIS-TR-89-17}, +institution = {Dept. of Computer and Information Science, University +of Oregon}, +year = 1989} + +%Proskurowski 1990 + +@article{ProskurowskiS90, +author = {Andrzej Proskurowski and Maciej M. Sys{\l}o}, +title = {Efficient Computations in Tree-like Graphs}, +journal = {Comput. Suppl.}, volume = 7, year = 1990, pages = {1 - 15}} + +%Proskurowski 1993 + +@inproceedings{Proskurowski93, +author = {Andrzej Proskurowski}, +title = {Graph reductions, and techniques for finding minimal forbidden minors}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint +Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147.}, +pages = {591-600}, +year = 1993} + +@article{ProvanB83, +author = {{J. Scott} Provan and Michael O. Ball}, +title = {The complexity of counting cuts and of computing the probability that +a network remains connected}, +journal = siamjc, volume = 12, number = 4, year = 1983, pages = {777-788}} + +%Prz + +@article{PrzytyckaC91, +author = {T. Przytycka and D. G. Corneil}, +title = {Parallel algorithms for parity graphs}, +journal = ja, volume = 12, pages = {96-109}, year = 1991} + +%Pu + +%Pul + +@article{Pullman84, +author = {Normal J. Pullman}, +title = {Clique covering of graphs {IV}. {A}lgorithms}, +journal = siamjc, volume = 13, year = 1984, pages = {57-75}} + +%Pun + +@article{PunnenN94, +author = {Abraham P. Punnen and K. P. K. Nair}, +title = {A fast and simple algorithm for the bottleneck biconnected spanning +subgraph problem}, +journal = ipl, volume = 50, year = 1994, pages = {283-286}} + +%Q + +%Qu + +@article{Quilliot85, +author = {A. Quilliot}, +title = {A short note about pursuit games played on a graph with a given genus}, +journal = jctb, volume = 38, year = 1985, pages = {89-92}} + +%R + +%Ra + +%Rab + +@article{RabinS59, +author = {M. O. Rabin and D. S. Scott}, +title = {Finite automata and their decision problems}, +journal = {IBM Journal of Research and Development}, volume = 3, year = 1959, pages = {114-125}} + +@inproceedings{Rabin65, +author = {M. O. Rabin}, +title = {A simple method for undecidability proofs and some applications}, +publisher = {North-Holland Publishing Company}, +booktitle = {Logic, Methodology and Philosophy of Science}, +year = 1965, editor = {Y. {Bar-Hillel}}, pages = {58-68}} + +@article{Rabin69, +author = {M. O. Rabin}, +title = {Decidability of second-order theories and automata on infinite trees}, +journal = {Transactions of the American Mathematical Society}, volume = 141, year = 1969, pages = {1-35}} + +@incollection{Rabin77, +author = {M. O. Rabin}, +title = {Decidable theories}, +booktitle = {Handbook of Mathematical Logic}, +editor = {K. J. Barwise}, +publisher = {North-Holland Publishing Company}, +year = 1977, pages = {595-629}} + +@article{RabinV89, +author = {Michael O. Rabin and Vijay V. Vazirani}, +title = {Maximum matchings in general graphs through randomization}, +journal = ja, volume = 10, year = 1989, pages = {557-567}} + +%Rad + +@techreport{RadhakrishnanHS92, +author = {Venkatesh Radhakrishnan and Harry B. {Hunt III} and Richard E. Stearns}, +title = {On Solving Systems of Linear Equations and Path Problems for Bounded Treewidth Graphs}, +institution = {Dept. of Computer Science, SUNY Albany}, +number = {92-5}, +year = 1992} + +@techreport{RadhakrishnanHS93, +author = {Venkatesh Radhakrishnan and Harry B. {Hunt III} and Richard E. Stearns}, +title = {Efficient Algorithms for Hierarchical Descriptions with Bounded Treewidth}, +institution = {Dept. of Computer Science, SUNY Albany}, +number = {93-7}, +year = 1993} + +%Rai + +@inproceedings{RaibleF08, +author = {Daniel Raible and Henning Fernau}, +title = {Power domination in {$O^\ast(1.7448^n)$} using reference search trees}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {136-147}} + +%Raj + +@unpublished{RajaramanBP93, +author = {Anand Rajaraman and Hari Balakrishnan and C. {Pandu Rangan}}, +title = {Modular Decomposition Techniques for Distance-Hereditary Graphs}, +note = {Manuscript}, year = 1993} + +%Ram + +@phdthesis{Ramachandramurthi94, +author = {Siddharthan Ramachandramurthi}, +title = {Algorithms for {VLSI} Layout Based on Graph Width Metrics}, +school = {Computer Science Department, University of Tennessee}, +address = {Knoxville, Tennessee, USA}, +year = 1994} + +@inproceedings{Ramachandramurthi95, +author = {Siddharthan Ramachandramurthi}, +title = {A Lower Bound for Treewidth and its Consequences}, +editor = {Ernst W. Mayr and Gunther Schmidt and Gottfried Tinhofer}, +booktitle = wg94, publisher = lncs903, year = 1995, pages = {14-25}} + +@article{Ramachandramurthi97, +author = {Siddharthan Ramachandramurthi}, +title = {The structure and number of obstructions to treewidth}, +journal = sjdm, volume = 10, year = 1997, pages = {146-157}} + +@article{Ramachandran88, +author = {Vijaya Ramachandran}, +title = {Finding a minimum feedback arc set in reducible flow graphs}, +journal = ja, volume = 9, pages = {299-313}, year = 1988 } + +@article{RamalingamP88, +author = {G. Ramalingam and C. {Pandu Rangan}}, +title = {Total Domination in Interval Graphs Revisited}, +journal = ipl, volume = 27, year = 1988, pages = {17-22}} + +@article{RamalingamP88a, +author = {G. Ramalingam and C. {Pandu Rangan}}, +title = {A unified approach to domination problems on interval graphs}, +journal = ipl, volume = 27, year = 1988, pages = {271-274}} + +@article{RamalingamP90, +author = {G. Ramalingam and C. {Pandu Rangan}}, +title = {New sequential and parallel algorithms for interval graph +recognition}, +journal = ipl, volume = 34, year = 1990, pages = {215-219}} + +%Raman + +@inproceedings{RamanSS02, +author = {Venkatesh Raman and Saket Saurabh and C. R. Subramanian}, +title = {Faster fixed parameter tractable algorithms for undirected feedback vertex set}, +editor = {P. Bose and P. Morin}, +booktitle = isaac02, year = 2002, pages = {241 - 248}, publisher = lncs2518} + +@article{RamanSS05, +author = {Venkatesh Raman and Saket Saurabh and C. R. Subramanian}, +title = {Faster algorithms for feedback vertex set}, +journal = {Proceedings 2nd Brazilian Symposium on Graphs, Algorithms, and Combinatorics, GRACO 2005, +Electronic Notes in Discrete Mathematics}, +volume = 19, year = 2005, pages = {273-279}} + +@article{RamanS06, +author = {Venkatesh Raman and Saket Saurabh}, +title = {Parameterized algorithms for feedback set problems and their duals in +tournaments}, +journal = tcs, volume = 351, pages = {446-458}, year = 2006} + +@article{RamanS07, +author = {Venkatesh Raman and Somnath Sikdar}, +title = {Parameterized complexity of the induced subgraph problem in +directed graphs}, +journal = ipl, volume = 104, pages = {79-85}, year = 2007} + +%Ran + +@techreport{RanderathS05, +author = {B. Randerath and I. Schiermeyer}, +title = {Exact Algorithms for Minimum Dominating Set}, +type = {Technical Report}, +number = {zaik2005-501}, +institution = {Universit\"{a}t zu K\"{o}ln, Cologne, Germany}, +year = 2005} + +%Rao + +@article{RaoR89, +author = {A. {Srinivasa Rao} and C. {Pandu Rangan}}, +title = {Linear algorithm for domatic number on interval graphs}, +journal = ipl, volume = 33, year = 1989, pages = {29-33}} + +@article{RaoR89a, +author = {A. {Srinivasa Rao} and C. {Pandu Rangan}}, +title = {Optimal parallel algorithms on circular-arc graphs}, +journal = ipl, volume = 33, year = 1989, pages = {147-156}} + +@article{RaoR90, +author = {Srinivasa {Rao Arikati} and C. {Pandu Rangan}}, +title = {Linear algorithm for optimal path cover problem on interval +graphs}, +journal = ipl, volume = 34, year = 1990, pages = {149-153}} + +%Rau + +@article{Rautenbach07, +author = {Dieter Rautenbach}, +title = {Dominating and large induced trees in regular graphs}, +journal = dm, volume = 307, year = 2007, pages = {3177-3186}} + +%Rav + +@article{RaviSMRR96, +author = {R. Ravi and R. Sundaram and Madhav V. Marathe and D. J. Rosenkrantz and +S. S. Ravi}, +title = {Spanning trees---Short or Small}, +journal = sjdm, volume = 9, pages = {178 - 200}, year = 1996} + +%Raz + +@inproceedings{Razgon06, +author = {Igor Razgon}, +title = {Exact Computation of Maximum Induced Forest}, +editor = {Lars Arge and Rusins Freivalds}, +booktitle = swat06, publisher = lncs4059, year = 2006, pages = {160-171}} + +@article{Razgon07, +author = {Igor Razgon}, +title = {A {$2^{O(k)}$}poly($n$) algorithm for +the parameterized Convex Recoloring problem}, +journal = ipl, volume = 104, pages = {53-58}, year = 2007} + +@inproceedings{RazgonS08, +author = {Igor Razgon and B. O'Sullivan}, +title = {Almost $2$-{SAT} is Fixed-Parameter Tractable (Extended Abstract)}, +editor = {Luca Aceto and Ivan Damg{\aa}rd and Leslie Ann Goldberg and +Magn\'{u}s M. Halld\'{o}rsson and Anna Ing\'{o}lfsd\'{o}ttir and Igor Walukuewics}, +booktitle = icalp08-1, year = 2008, publisher = lncs5125, pages = {551-562}} + +%Re + +%Rea + +@inbook{Read93, +author = {Ronald C. Read}, +title = {Prospects for Graph Theory Algorithms}, +booktitle = {Quo Vadis, Graph Theory}, +Xeditor = {J. Gimbel and J. W. Kennedy and L. V, Quintas}, +publisher = {Elsevier Science Publishers}, +series = {Annals of Discrete Mathematics}, +volume = {55}, +pages = {201-210}, +year = 1993} + +%Ree + +%Reed 1992 + +@inproceedings{Reed92, +author = {Bruce Reed}, +title = {Finding approximate separators and computing tree-width +quickly}, +publisher = {ACM Press}, address = {New York}, +booktitle = stoc92, pages = {221-228}, +year = 1992} + +%Reed 1993 + +@inproceedings{ReedRSS93, +author = {Bruce A. Reed and N. Robertson and A. Schrijver and Raul D. +Seymour}, +title = {Finding disjoint trees in planar graphs in linear time}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint +Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147.}, +pages = {295 - 301 }, +year = 1993} + +%Reed 1997 + +@incollection{Reed97, +author = {Bruce A. Reed}, +title = {Tree width and tangles, a new measure of connectivity and some +applications}, +booktitle = {Surveys in Combinatorics}, +series = {LMS Lecture Note Series}, +volume = 241, pages = {87-162}, year = 1997, +publisher = {Cambridge University Press}, address = {Cambridge, UK}} + +%Reed 2003 + +@incollection{Reed03, +author = {Bruce A. Reed}, +title = {Algorithmic aspects of tree width}, +booktitle = {Recent advances in algorithms and combinatorics}, +series = {CMS Books Math. / Ouvrages Math. SMC, 11}, +publisher = {Springer}, address = {New York}, pages = {85-107}, +year = 2003} + +%Reed 2008 + +@inproceedings{ReedL08, +author = {Bruce A. Reed and Zhentao Li}, +title = {Optimization and recognition for {$K_5$}-minor free graphs in linear time}, +editor = {Eduardo Sany Laber and Claudson F. Bornstein and Loana Tito Nogueira and Luerbio Faria}, +booktitle = latin08, year = 2008, publisher = lncs4957, pages = {206-215}} + +%Rei + +@article{Reisch80, +author = {S. Reisch}, +title = {Gobang ist {PSPACE}-vollst{\"{a}}ndig}, +journal = ai, volume = 13, year = 1980, pages = {59-66}} + +@article{Reisch81, +author = {S. Reisch}, +title = {Hex ist {PSPACE}-vollst{\"{a}}ndig}, +journal = ai, volume = 15, year = 1981, pages = {167-191}} + +%Ren + +@article{RenooijGP02, +author = {Slija Renooij and Linda C. van der Gaag and Simon Parsons}, +title = {Context-specific sign-propogation in qualitative probabilistic networks}, +journal = ai, volume = 140, year = 2002, pages = {207-230}} + +%Ri + +%Ric + +@article{RichardsL85, +author = {D. Richards and A. L. Liestman}, +title = {Finding Cycles of a Given Length}, +journal = adm, volume = 27, pages = {249-256}, year = 1985 } + +@article{Richards86, +author = {D. Richards}, +title = {Finding Short Cycles in Planar Graphs Using Separators}, +journal = ja, volume = 7, year = 1986, pages = {249-256}} + +@phdthesis{Richey85, +author = {M. B. Richey}, +title = {Combinatorial optimization on series-parallel graphs: algorithms and complexity}, +school = {School of Industrial and Systems Engineering, Georgia Institute of +Technology}, +year = 1985} + +%Rie + +@article{RiegeRSY07, +author = {Tobias Riege and J\"{o}rg Rothe and Holger Spakowski and Masaki Yamamoto}, +title = {An improved exact algorithm for the domatic number problem}, +journal = ipl, volume = 101, year = 2007, pages = {101-106}} + +%Ro + +%Rob + +@article{Robson86, +author = {J. M. Robson}, +title = {Algorithms for maximum independent sets}, +journal = ja, volume = 7, year = 1986, pages = {425-440}} + +@techreport{Robson01, +author = {J. M. Robson}, +title = {Finding an independent set in time {$O(2^{n/4})$}}, +note = {Technical report 1251-01}, +institution = {LaBRi, Universit\'{e} Bordeaux}, +year = 2001} + +%Robertson + +%Exception to rule: The graph minors papers are numbered to their +%number in the series + +@article{RobertsonS1, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {I}. {E}xcluding a Forest}, +journal = jctb, year = 1983, volume = 35, pages = {39-61}} + +@article{RobertsonS2, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {II}. {A}lgorithmic Aspects of Tree-Width}, +journal = ja, year = 1986, volume = 7, pages = {309-322}} + +@article{RobertsonS85, +author = {Neil Robertson and Paul D. Seymour}, +title = {Disjoint Paths -- A Survey}, +journal = sjadm, volume = 6, year = 1985, pages = {300-305}} + +@article{RobertsonS3, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {III}. {P}lanar Tree-Width}, +journal = jctb, volume = 36, year = 1984, pages = {49-64}} + +@article{RobertsonS4, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {IV}. {T}ree-Width and Well-Quasi-Ordering}, +journal = jctb, volume = 48, year = 1990, pages = {227-254}} + +@article{RobertsonS5, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {V}. {E}xcluding a planar graph}, +journal = jctb, volume = 41, year = 1986, pages = {92-114}} + +@article{RobertsonS6, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {VI}. {D}isjoint Paths across a Disc}, +journal = jctb, volume = 41, year = 1986, pages = {115-138}} + +@article{RobertsonS7, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {VII}. {D}isjoint paths on a surface}, +journal = jctb, volume = 45, pages = {212-254}, year = 1988} + +@article{RobertsonS8, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {VIII}. {A} {K}uratowski theorem for general +surfaces}, +journal = jctb, volume = 48, pages = {255-288}, year = 1990} + +@article{RobertsonS9, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {IX}. {D}isjoint crossed paths}, +journal = jctb, volume = 49, pages = {40-77}, year = 1990} + +@article{RobertsonS10, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {X}. {O}bstructions to tree-decomposition}, +journal = jctb, volume = 52, year = 1991, pages = {153-190}} + +@article{RobertsonS11, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XI}. {D}istance on a Surface}, +journal = jctb, volume = 60, year = 1994, pages = {72-106}} + +@article{RobertsonS12, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XII}. {E}xcluding a Non-planar Graph}, +journal = jctb, volume = 64, year = 1995, pages = {240-272}} + +@article{RobertsonS13, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XIII}. {T}he Disjoint Paths Problem}, +journal = jctb, volume = 63, year = 1995, pages = {65-110}} + +@article{RobertsonS14, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XIV}. {E}xtending an Embedding}, +journal = jctb, volume = 65, year = 1995, pages = {23-50}} + +@article{RobertsonS15, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XV}. {G}iant Steps}, +journal = jctb, volume = 68, year = 1996, pages = {112-148}} + +@article{RobertsonS16, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XVI}. {E}xcluding a non-planar graph}, +journal = jctb, volume = 89, year = 2003, pages = {43-76}} + +@article{RobertsonS17, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XVII}. {T}aming a vortex}, +journal = jctb, volume = 77, year = 1999, pages = {162-210}} + +@article{RobertsonS18, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XVIII}. {T}ree-decompositions and well-quasi ordering}, +journal = jctb, volume = 89, year = 2003, pages = {77-108}} + +@article{RobertsonS19, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XIX}. {W}ell-quasi-ordering on a surface}, +journal = jctb, volume = 90, year = 2004, pages = {325-385}} + +@article{RobertsonS20, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XX}. {W}agner's conjecture}, +journal = jctb, volume = 92, year = 2004, pages = {325-357}} + +@article{RobertsonS21, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XXI}. {G}raphs with unique linkages}, +journal = jctb, volume = 99, year = 2009, pages = {583-616}} + +@unpublished{RobertsonS22, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph Minors. {XXII}. {I}rrelevant vertices in linkage problems}, +note = {Manuscript}, +year = 1992 +} + +@article{RobertsonS23, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph minors {XXIII}. {N}ash-{W}illiams' immersion conjecture}, +journal = jctb, volume = 100, year = 2010, pages = {181-205}} + + + +%Robertson 1984 + +@article{RobertsonS84, +author = {Neil Robertson and Paul D. Seymour}, +title = {Generalizing {K}uratowskis Theorem}, +journal = cn, volume = 45, year = 1984, pages = {129-138}} + +@inproceedings{RobertsonS84a, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph width and well-quasi ordering: a survey}, +booktitle = {Progress in Graph Theory}, +editor = {J. A. Bondy and U. S. R. Murty}, +publisher = {Academic Press}, +address = {Toronto}, +year = 1984, pages = {399-406}} + +%Robertson 1985 + +@inproceedings{RobertsonS85a, +author = {Neil Robertson and Paul D. Seymour}, +title = {Graph minors --- A survey}, +editor = {I. Anderson}, +booktitle = {Surveys in Combinatorics}, +publisher = {Cambridge Univ.\ Press}, +year = 1985, pages = {153--171}} + +%Robertson 1988 + +@unpublished{RobertsonS88, +author = {Neil Robertson and Paul D. Seymour}, +title = {An Outline of a Disjoint Path Algorithm}, +note = {Preprint}, year = 1988, month = {5}} + +%Robertson 1993 + +@inproceedings{RobertsonS93, +author = {Neil Robertson and Paul D. Seymour}, +title = {Excluding a graph with one crossing}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint +Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147.}, +pages = {669-675}, +year = 1993} + +@inproceedings{RobertsonST93, +author = {Neil Robertson and Paul D. Seymour and Robin Thomas}, +title = {A survey of linkless embeddings}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint +Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147.}, +pages = {125-136}, +year = 1993} + +@inproceedings{RobertsonST93a, +author = {Neil Robertson and Paul D. Seymour and Robin Thomas}, +title = {Structural Description of Lower Ideals of Trees}, +booktitle = {Graph Structure Theory, Proceedings of the AMS-IMS-SIAM Joint +Summer Research Conference, Seattle WA, June 1991}, +publisher = {American Math. Soc.}, +address = {Providence, RI}, +editor = {Neil Robertson and Paul Seymour}, +note = {Contemp. Math. 147.}, +pages = {525-538}, +year = 1993} + +%Robertson 1994 + +@article{RobertsonST94, +author = {Neil Robertson and Paul D. Seymour and Robin Thomas}, +title = {Quickly Excluding a Planar Graph}, +journal = jctb, volume = 62, year = 1994, pages = {323-348}} + +%Robertson 1997 + +@article{RobertsonSST97, +author = {Neil Robertson and Daniel Sanders and Paul Seymour and Robin +Thomas}, +title = {The Four-Colour Theorem}, +journal = jctb, volume = 70, year = 1997, pages = {2-44}} + +@article{RobinsonG89, +author = {A. G. Robinson and A. J. Goldman}, +title = {The set coincidence game: Complexity, Attainability, and +Symmetric Strategies}, +journal = jcss, volume = 39, year = 1989, pages = {376-387}} + +@article{Robson84, +author = {J. M. Robson}, +title = {{$N$} by {$N$} {Checkers} is {Exptime} complete}, +journal = siamjc, volume = 13, year = 1984, pages = {252-267}} + +@article{Robson85, +author = {J. M. Robson}, +title = {Alternation with restrictions on looping}, +journal = ic, volume = 67, pages = {2-11}, year = 1985 } + +%Roc + +@book{Rockafellar84, +author = {R. T. Rockafellar}, +title = {Network Flows and Monotronic Optimization}, +publisher = {Wiley}, +address = {New York}, +year = 1984} + +%Rod + +@article{Rodriguez-VelazquezS09, +author = {J. A. Rodr\'{\i}guez-Vel\'{a}zquez and J. M. Sigarreta}, +title = {Global defensive $k$-alliances in graphs}, +journal = dam, volume = 157, year = 2009, pages = {211-218}} + +%Roh + +@mastersthesis{Rohrig98, +author = {Hein R{\"{o}}hrig}, +title = {Tree decomposition: A feasibility study}, +school = {Max-Planck-Institut f{\"{u}}r Informatik}, +address = {Saarbr{\"{u}}cken, Germany}, +year = 1998} + +%Ron + +@article{Ronn90, +author = {Eytan Ronn}, +title = {{NP}-complete stable matching problems}, +journal = ja, volume = 11, year = 1990, pages = {285 - 304}} + +%Roo + +%van Rooij 2006 + +@mastersthesis{vanRooij06, +author = {Johan M. M. {van Rooij}}, +title = {Design by Measure and Conquer: An {$O(1.5086^n)$} Algorithm for Minimum Dominating Set and Similar Problems}, +school = {Institute for Information and Computing Sciences, Utrecht University}, +number = {INF/SRC-06-05}, year = 2006} + +%van Rooij 2008 + +@inproceedings{vanRooijB08, +author = {Johan M. M. van Rooij and Hans L. Bodlaender}, +title = {Design by Measure and Conquer --- A faster exact algorithm for Dominating Set}, +booktitle = stacs08, +year = 2008, pages = {657-668}} + +@inproceedings{vanRooijB08a, +author = {Johan M. M. van Rooij and Hans L. Bodlaender}, +title = {Exact algorithms for Edge Domination}, +booktitle = {Proceedings of the 3rd International Workshop on Parameterized and Exact Computation, IWPEC 2008}, +editor = {Martin Grohe and Rolf Niedermeier}, +year = 2008, +pages = {214-225}, +publisher = {Springer, Lecture Notes in Computer Science, volume 5018}, +address = {Berlin}} + +%van Rooij 2009 + +@inproceedings{vanRooijBR09, +author = {Johan M. M. van Rooij and Hans L. Bodlaender and Peter Rossmanith}, +title = {Dynamic programming on tree decompositions using generalised fast subset convolution}, +editor = {Amos Fiat and Peter Sanders}, +booktitle = esa09, publisher = lncs5757, year = 2009, +pages = {566-577}} + +@inproceedings{vanRooijNvD09, +author = {Johan M. M. van Rooij and Jesper Nederlof and Thomas C. van Dijk}, +title = {Inclusion/Exclusion meets Measure and Conquer: Exact algorithms for counting dominating sets}, +editor = {Amos Fiat and Peter Sanders}, +booktitle = esa09, publisher = lncs5757, year = 2009, +pages = {554-565}} + +%Ros + +@article{Rose70, +author = {Donald J. Rose}, +title = {Triangulated graphs and the elimination process}, +journal = jmaa, volume = 32, year = 1970, pages = {597-609}} + +@inproceedings{Rose72, +author = {Donald J. Rose}, +title = {A graph-theoretic study of the numerical solution of sparse positive definite systems of linear equations}, +booktitle = {Graph Theory and Computing}, +editor = {R. C. Reed}, +publisher = {Academic Press}, year = 1972, pages = {183-217}} + +@article{Rose74, +author = {Donald J. Rose}, +title = {On simple characterization of $k$-trees}, +journal = dm, volume = 7, year = 1974, pages = {317-322}} + +@article{RoseTL76, +author = {Donald J. Rose and Robert Endre Tarjan and George S. Lueker}, +title = {Algorithmic aspects of vertex elimination on graphs}, +journal = siamjc, volume = 5, year = 1976, pages = {266-283}} + +@article{RosenbergS81, +author = {A. Rosenberg and Ivan Hal Sudborough}, +title = {Bandwidth and pebbling}, +journal = comp, volume = 31, year = 1981, pages = {115-139}} + +@article{RosentalG77, +author = {A. Rosental and A. Goldner}, +title = {Smallest augmentations to biconnect a graph}, +journal = siamjc, volume = 6, year = 1977, pages = {55-66}} + +%Rot + +@article{Roth96, +author = {D. Roth}, +title = {On the hardness of approximate reasoning}, +journal = artint, volume = 82, pages = {273-302}, year = 1996} + +@techreport{Rote89, +author = {G\"{u}nther Rote}, +title = {Path Problems in Graphs}, +number = {B-89-11}, +year = 1989, +institution = {Freie Universit\"{a}t Berlin}} + +%Ru + +%Rub + +@article{RubalcabaS08, +author = {Robert R. Rubalcaba and Peter J. Slater}, +title = {Roman dominating influence parameters}, +journal = dm, volume = 307, year = 2007, pages = {3194-3200}} + +%Ruz + +@article{Ruzzo80, +author = {W. L. Ruzzo}, +title = {Tree-size bounded alternation}, +journal = jcss, volume = 21, year = 1980, pages = {218-235}} + +%S + +%Sa + +%Sak + +@article{Sakai94, +author = {D. Sakai}, +title = {Labeling chordal graphs: {D}istance two condition}, +journal = sjdm, volume = 7, year = 1994, pages = {133-140}} + +%Sal + +@article{SalamonW08, +author = {G. Salamon and G. Wiener}, +title = {On finding spanning trees with few leaves}, +journal = ipl, volume = 105, year = 2008, pages = {164-169}} + +@article{Salavatipour04, +author = {Mohammad R. Salavatipour}, +title = {A polynomial time algorithm for strong edge coloring of partial $k$-trees}, +journal = dam, volume = 143, year = 2004, pages = {285-291}} + +%Sam + +@article{SamerS10, +author = {Marko Samer and Stefan Szeider}, +title = {Algorithms for propositional model counting}, +journal = jda, volume = 8, year = 2010, pages = {50-64}} + +@article{SamerS10a, +author = {Marko Samer and Stefan Szeider}, +title = {Constraint satisfaction with bounded treewidth revisited}, +journal = jcss, volume = 76, year = 2010, pages = {103-114}} + +%San + +@article{Sanders96, +author = {Daniel P. Sanders}, +title = {On Linear Recognition of Tree-Width at Most Four}, +journal = sjdm, volume = 9, number = 1, year = 1996, pages = {101-117}} + +@article{SantoroK85, +author = {N. Santoro and R. Khatib}, +title = {Labelling and Implicit Routing in Networks}, +journal = tcj, volume = 28, year = 1985, pages = {5-8}} + +@inproceedings{Santos91, +author = {Eugene Santos Jr.}, +title = {On the generation of alternative explanations with implications for belief revision}, +editor = {Bruce D'Ambrosio and Philippe Smets}, +booktitle = uai91, year = 1991, pages = {339-347}, publisher = {Morgan Kaufmann}} + +%Sas + +@article{Sasatte08, +author = {Prashant Sasatte}, +title = {Improved {FPT} algorithm for feedback vertex set problem in bipartite tournament}, +journal = ipl, volume = 105, year = 2008, pages = {79-82}} + +%Sat + +@techreport{SatyanP92, +author = {C. R. Satyan and C. {Pandu Rangan}}, +title = {Treewidth of bipartite permutation graphs}, +number = {TR-TCS-92-8}, +institution = {Indian Institute of Technology, Madras, India}, +year = 1992} + +@article{SatyanarayanaT90, +author = {A. Satyanarayana and L. Tung}, +title = {A characterization of partial 3-trees}, +journal = netw, volume = 20, year = 1990, pages = {299-322}} + +%Sau + +@misc{Saurabh09, +author = {Saket Saurabh}, +note = {Personal communication}, +year = 2009} + +%Sax + +@article{Saxe80, +author = {J. B. Saxe}, +title = {Dynamic programming algorithms for recognizing small-bandwidth graphs in polynomial time}, +journal = sjadm, volume = 1, year = 1980, pages = {363-369}} + +%Sc + +%Sch + +%Scha + +@article{Schaefer78a, +author = {T. J. Schaefer}, +title = {On the complexity of some two-person perfect-information games}, +journal = jcss, volume = 16, year = 1978, pages = {185-225}} + +@inproceedings{Schaefer78b, +author = {T. J. Schaefer}, +title = {The complexity of satisfiability problems}, +booktitle = stoc78, year = 1978, pages = {216-226}} + +@article{Schaffer89, +author = {A. A. Sch\"{a}ffer}, +title = {Optimal node ranking of trees in linear time}, +journal = ipl, volume = 33, year = 1989, pages = {91-99}} + +%Sche + +%Scheffler 1986 + +@unpublished{SchefflerS86, +author = {Petra Scheffler and Detlef Seese}, +title = {A Combinatorial and Logical Approach to Linear-Time Computability }, +note = {Extended abstract}, +year = 1986 } + +%Scheffler 1987 + +@techreport{Scheffler87, +author = {Petra Scheffler}, +title = {Linear-time Algorithms for {NP}-complete Problems Restricted +to Partial $k$-Trees}, +type = {Report}, +number = {R-MATH-03/87}, +institution = {Karl-Weierstrass-Institut F\"ur Mathematik}, +address = {Berlin, GDR}, +year = 1987 +} + +%Scheffler 1988 + +@inproceedings{Scheffler88, +author = {Petra Scheffler}, +title = {What graphs have bounded treewidth?}, +year = 1988, +booktitle = {Proc. 7th Fishland Coll. Discr. Math. and Appl.}, +address = {Wustrow, Rostocker Mathematisches Kolloquium} +} + +@unpublished{Scheffler88a, +author = {Petra Scheffler}, +title = {Linear-time Algorithms for Graphs of Bounded Tree-width. {T}he DISJOINT-PATHS-problem}, +year = 1988, +note = {Manuscript, to appear in Graphentheorie und Anwendungen} +} + +%Scheffler 1989 + +@phdthesis{Scheffler89, +author = {Petra Scheffler}, +title = {Die {B}aumweite von {G}raphen als ein {M}a\ss \ f\"{u}r die +{K}ompliziertheit algorithmischer {P}robleme}, +school = {Akademie der Wissenschaften der DDR}, +address = {Berlin}, year = 1989 } + +%Scheffler 1990 + +@inproceedings{Scheffler90, +author = {Petra Scheffler}, +title = {A linear algorithm for the pathwidth of trees}, +booktitle = {Topics in combinatorics and graph theory}, +editor = {R. Bodendiek and R. Henn}, +publisher = {Physica-Verlag}, address = {Heidelberg}, year = {1990}, +pages = {613-620}} + +%Scheffler 1994 + +@techreport{Scheffler94, +author = {Petra Scheffler}, +title = {A practical linear time algorithm for disjoint paths in graphs with +bounded tree-width}, +institution = {TU Berlin, Fachbereich Mathematik}, +type={Report}, +number = {396/1994}, +address={Berlin}, year = 1994} + +%Schi + +@article{SchieberM89, +author = {Baruch Schieber and Shlomo Moran}, +title = {Parallel algorithms for maximum bipartite matchings and +maximum 0-1 flows}, +journal = jpdc, volume = 6, year = 1989 } + +@article{Schiermeyer08, +author = {Ingo Schiermeyer}, +title = {Efficiency in exponential time for domination-type problems}, +journal = dam, volume = 156, year = 2008, pages = {3291-3297}} + +%Scho + +@inproceedings{Schoening05, +author = {Uwe Sch\"{o}ning}, +title = {Algorithmics in Exponential Time}, +booktitle = stacs05, +publisher = lncs3404, year = 2005, pages = {36-43}} + +@article{Schoening06, +author = {Uwe Sch\"{o}ning}, +title = {Smaller superconcentrators of density 28}, +journal = ipl, volume = 28, pages = {127-129}, year = 2006} + +%Schr + +@book{Schrijver86, +author = {Alexander Schrijver}, +title = {Theory of Linear and Integer Programming}, +publisher = {John Wiley \& Sons}, +address = {Chichester}, year = 1986} + +@article{Schrijver91, +author = {A. Schrijver}, +title = {Disjoint Homotopic Paths and Trees in a Planar Graph}, +journal = dcg, volume = 6, year = 1991, pages = {527-574}} + +@book{Schrijver03, +author = {Alexander Schrijver}, +title = {Combinatorial Optimization. Polyhedra and Efficiency}, +year = 2003, +publisher = {Springer}, address = {Berlin}} + +%Schw + +@article{SchwarzT06, +author = {C. Schwarz and D. S. Troxell}, +title = {{$L(2,1)$}-labelings of {C}artesian products of two cycles}, +journal = dam, volume = 154, year = 2006, pages = {1522-1540}} + +@article{SchwikowskiS02, +author = {Benno Schwikowski and Ewald Speckenmeyer}, +title = {On enumerating all minimal solutions of feedback problems}, +journal = dam, volume = 117, year = 2002, pages = {253-265}} + +%Se + +%See + +%Seese 1975 + +@article{Seese75, +author = {Detlef Seese}, +title = {Zur {E}ntscheidbarkeit der monadische {T}heorie 2. {S}tufe baumartiger {G}raphen}, +journal = {W.Z. der Humbolt-Universit\"{a}t zu Berlin}, +volume = {Math.-Nat. R. XXIV}, +year = 1975, number = 6, pages = {768-772}} + +@article{Seese75a, +author = {Detlef Seese}, +title = {Ein {U}nentscheidbarkeitskriterium}, +journal = {W.Z. der Humbolt-Universit\"{a}t zu Berlin}, +volume = {Math.-Nat. R. XXIV}, +year = 1975, number = 6, pages = {772-780}} + +%Seese 1979 + +@article{Seese79, +author = {Detlef Seese}, +title = {Some graph theoretical operations and decidability}, +journal = {Mathematische Nachrichten}, volume = 87, year = 1979, pages = {15-21}} + +%Seese 1985 + +@inproceedings{Seese85, +author = {Detlef Seese}, +title = {Tree-partite graphs and the complexity of algorithms}, +editor = {L. Budach}, +year = 1985, booktitle = fct85, publisher = lncs199, pages = {412-421}} + +%Seese 1989 + +@unpublished{Seese89, +author = {Detlef Seese}, +title = {Interpretability and Tree Automata: A Simple Way to Solve Algorithmic Problems Closely Related to Graphs}, +year = 1989, note = {Preprint}, pages = {1-63}} + +@unpublished{SeeseW89a, +author = {Detlef G. Seese and W. Wessel}, +title = {Graphminoren und Gitter, Zu einigen Arbeiten +von N. Robertson und P. D. Seymour}, +note = {Preprint}, pages = {1-77}, year = 1989} + +@article{SeeseW89, +author = {Detlef G. Seese and W. Wessel}, +title = {Grids and their minors}, +journal = jctb, volume = 47, year = 1989, pages = {349-360}} + +%Seese 1991 + +@article{Seese91, +author = {Detlef Seese}, +title = {The structure of the models of decidable monadic theories of +graphs}, +journal = apal, volume = 53, year = 1991, pages = {169-195}} + +@unpublished{Seese91a, +author = {Detlef Seese}, +title = {Interpretability and Tree Automata: a Simple Way to Solve +Algorithmic Problems on Graphs Closely Related to Trees}, +year = 1991, +note = {Manuscript}} + +%Seg + +@article{Segawa94, +author = {Tomomi Segawa}, +title = {Radius increase caused by edge deletion}, +journal = {SUT Journal of Mathematics}, volume = 30, year = 1994, pages = {159-162}} + +%Set + +@article{Sethi75, +author = {R. Sethi}, +title = {Complete register allocation problems}, +journal = siamjc, volume = 4, year = 1975, pages = {226-248}} + +%Sey + +%Seymour 1980 + +@article{Seymour80, +author = {Paul D. Seymour}, +title = {Disjoint paths in graphs}, +journal = dm, volume = 29, year = 1980, pages = {293-309}} + +%Seymour 1989 + +%Seymour 1990 + +@article{Seymour90, +author = {Paul D. Seymour}, +title = {Colouring series-parallel graphs}, +journal = comb, volume = 85, pages = {12-75}, year = 1990} + +%Seymour 1993 + +@article{SeymourT93, +author = {Paul D. Seymour and Robin Thomas}, +title = {Graph Searching and a Minimax Theorem for Tree-width}, +journal = jctb, volume = 58, year = 1993, pages = {239-257}} + +%Seymour 1994 + +@article{SeymourT94, +author = {Paul D. Seymour and Robin Thomas}, +title = {Call routing and the ratcatcher}, +journal = combinatorica, volume = 14, number = 2, year = 1994, pages = {217-241}} + +%Seymour 2006 + +%Note: this is a reissue of Seymour80: +@article{Seymour06, +author = {P. D. Seymour}, +title = {Disjoint paths in graphs}, +journal = dm, volume = 306, pages = {979-991}, year = 2006} + +%Sh + +%Sha + +@article{ShamirS04, +author = {Ron Shamir and Roded Sharan}, +title = {A fully dynamic algorithm for modular decomposition and recognition +of cographs}, +journal = dam, volume = 136, pages = {329-340}, year = 2004} + +@article{Shannon88, +author = {Gregory E. Shannon}, +title = {A Linear-Processor Algorithm for Depth-First Search in Planar +Graphs}, +journal = ipl, volume = 29, year = 1988, pages = {119-123}} + +@article{ShashaZ90, +author = {Dennis Shasha and Kaizhong Zhang}, +title = {Fast algorithms for the unit cost editing distance between +trees}, +journal = ja, volume = 11, year = 1990, pages = {581-621}} + +%Shc + +@Article{Shcherbina07, + author = {O. A. Shcherbina}, + title = {Tree Decompositions and Discrete Optimization + Problems: {A} Survey}, + journal = {Cybernetics and Systems Analysis}, + year = {2007}, + volume = {43}, + number = {4}, + pages = {549--562}, +} + +%Shi + +@article{ShihH89, +author = {W.-K. Shih and W.-L. Hsu}, +title = {An $O(n log n + m log log n)$ maximum weight clique algorithm +for circular-arc graphs}, +journal = ipl, volume = 31, year = 1989, pages = {129-134}} + +@article{Shiloach79, +author = {Y. Shiloach}, +title = {A Minimum Linear Arrangement Algorithms for Undirected +Trees}, +journal = siamjc, volume = 8, pages = {15-32}, year = 1979 } + +@article{Shiloach79a, +author = {Y. Shiloach}, +title = {A polynomial solution to the undirected two paths problem}, +journal = jacm, volume = 27, year = 1980, pages = {445-456}} + +@article{ShiloachV82, +author = {Y. Shiloach and U. Vishkin}, +title = {An {${O}(n \log n )$} parallel connectivity algorithm}, +journal = ja, year = 1982, pages = {57-67}} + +@article{Shimony94, +author = {S. E. Shimony}, +title = {Finding {MAPs} for belief networks is {NP}-hard}, +journal = artint, volume = 68, pages = {399-410}, year = 1994} + +%Sho + +@unpublished{ShoikhetG97a, +author = {Kirill Shoikhet and Dan Geiger}, +title = {Finding optimal triangulations via minimal vertex separators}, +note = {Manuscript}, year = 1997} + +@inproceedings{ShoikhetG97, +author = {Kirill Shoikhet and Dan Geiger}, +title = {A practical algorithm for finding optimal triangulations}, +booktitle = aaai97, publisher = {Morgan Kaufmann}, year = 1997, pages = {185-190}} + +%Si + +%Sid + +@article{Sidorowicz07, +author = {E. Sidorowicz}, +title = {The game chromatic number and the game colouring number of cactuses}, +journal = ipl, volume = 102, year = 2007, pages = {147-151}} + +%Sie + +@Book{SiekLL01, +author = {Jeremy G. Siek and Lie-Quan Lee and Andrew Lumsdaine}, +title = {{The Boost Graph Library: User Guide and Reference Manual}}, +publisher = {Addison-Wesley Professional}, +year = {2001}, +note = {Software available on \url{http://www.boost.org}}} + +%Sig + +@article{SigarretaR09, +author = {J. M. Sigarreta and J. A. Rodr\'{\i}guez}, +title = {On the global offensive alliance number of a graph}, +journal = dam, volume = 157, year = 2009, pages = {219-226}} + +%Sim + +@phdthesis{Simon75, +author = {J. Simon}, +title = {On Some Central Problems in Computational Complexity}, +school = {Cornell University}, +address = {Ithaca, N.Y.}, +year = 1975} + +@inproceedings{Simon77, +author = {Janos Simon}, +title = {On the difference between one and many}, +booktitle = icalp77, publisher = lncs52, year = 1977, pages = {480-491}} + +@article{Simonovits67, +author = {M. Simonovits}, +title = {A new proof and generalizations of a theorem of {E}rd\"{o}s and {P}\'{o}sa on graphs without $k+1$ independent circuits}, +journal = {Acta Mathematica Academiae Scientiarum Hungaricae}, volume = 18, year = 1976, pages = {191-206}} + +@phdthesis{Simonson86, +author ={Shai Simonson}, +title = {Layout Problems on Graphs}, +school = {EECS Department, Northwestern University}, +year = 1986} + +@article{Simonson87, +author ={Shai Simonson}, +title = {A variation on the Min Cut Linear Arrangement Problem}, +journal = mst, volume = 20, year = 1987, pages = {235-252}} + +@article{SimonsonS92, +author = {Shai Simonson and I. Hal Sudborough}, +title = {On the complexity of tree embedding problems}, +journal = ipl, volume = 44, year = 1992, pages = {323-328}} + +%Sk + +%Sko + +@article{Skodinis01, +author = {Konstantin Skodinis}, +title = {The complexity of the {$K_{n,n}$}-problem for node replacement graph +languages}, +journal = ic2, volume = 168, pages = {95-112}, year = 2001} + +@article{Skodinis03, +author = {Konstantin Skodinis}, +title = {Construction of linear tree-layouts which are optimal with respect to +vertex separation in linear time}, +journal = ja, volume = 47, pages = {40-59}, year = 2003} + +@inproceedings{Skowronska82, +author = {M. Skoronska}, +title = {Efficient vertex- and edge-coloring of {H}alin Graphs}, +booktitle = {Proceedings of the 3rd Czechoslovak Symposium on Graph Theory}, +address = {Prague}, +year = 1982 +} + +%Sl + +@article{Slisenko82, +author = {A. O. Slisenko}, +title = {Context-free graph grammars as a tool for describing +polynomial-time subclasses of hard problems}, +journal = ipl, year = 1982, pages = {52-56}, volume = 14} + +%Sn + +@phdthesis{Snir04, +author = {S. Snir}, +title = {Computational Issues in Phylogenetic Reconstruction: Analytic Maximum +Likelihood Solutions, and Convex Recoloring}, +school = {Department of Computer Science, Technion}, +address = {Haifa, Israel}, +year = 2004} + +%So + +@inproceedings{SongLMPC05, +author = {Y. Song and C. Liu and R. Malmberg and F. Pan and L. Cai}, +title = {Tree Decomposition Based Fast Search of {RNA} Structures Including Pseudoknots in Genomes}, +booktitle = {Proceedings of the 2005 IEEE Computational Systems Bioinformatics Conference, CSB'05}, +year = {2005}, +isbn = {0-7695-2344-7}, +pages = {223--234}, +doi = {http://dx.doi.org/10.1109/CSB.2005.52}, +publisher = {IEEE Computer Society}, +address = {Washington, DC, USA}, +} + +%Sp + +%Spi + +@article{Spinrad91, +author = {Jeremy P. Spinrad}, +title = {Finding large holes}, +journal = ipl, volume = 39, year = 1991, pages = {227-229}} + +@article{Spinrad94, +author = {Jeremy P. Spinrad}, +title = {Recognition of circle graphs}, +journal = ja, volume = 16, year = 1994, pages = {264-282}} + +%Spr + +@article{Sprague94, +author = {A. P. Sprague}, +title = {An {$O(n \log n)$} algorithm for the bandwidth of interval graphs}, +journal = sjdm, volume = 7, year = 1994, pages = {213-220}} + +%Sr + +%Sre + +@article{Srebo03, +author = {N. Srebo}, +title = {Maximum likelihood bounded tree-width Markov networks}, +journal = ai, volume = 143, pages = {123-138}, year = 2003} + +%Sri + +@inproceedings{SrinivasN96, +author = {Shenoy Srinivas and Pandurang Nayak}, +title = {Efficient enumeration of instantiations of {B}ayesian networks}, +editor = {Eric Horvitz and Finn Verner Jensen}, +booktitle = uai96, year = 1996, pages = {500-508}, publisher = {Morgan Kaufmann}} + +%St + +%Sta + +@inproceedings{Stamm90, +author = {Hermann Stamm}, +title = {On feedback problems in planar digraphs}, +editor = {Rolf M\"{o}hring}, +booktitle = wg90, publisher = lncs484, pages = {79-89}, year = 1991} + +%Ste + +@article{StearnsH96, +author = {Richard E. Stearns and Harry B. {Hunt III}}, +title = {An algebraic model for combinatorial problems}, +journal = siamjc, volume = 25, year = 1996, pages = {448-476}} + +@article{StearnsH02, +author = {Richard E. Stearns and Harry B. {Hunt III}}, +title = {Exploiting structure in quantified formulas}, +journal = ja, volume = 43, year = 2002, pages = {220-263}} + +@article{Steel92, +author="M. Steel", +title="The complexity of reconstructing trees from +qualitative characters and subtrees", +journal="J. of Classification", +volume="9", +year="1992", +pages="91--116" } + +@unpublished{Stewart88?, +author = {Iain A. Stewart}, +title = {Colouring perfect planar graphs in parallel}, +year = 1988, +note = {Manuscript} +} + +%Sto + +@article{Stockmeyer76, +author = {L. J. Stockmeyer}, +title = {The polynomial-time hierarchy}, +journal = tcs, year = 1976, volume = 3, pages = {1-22}} + +@article{StockmeyerC79, +author = {L. J. Stockmeyer and A. K. Chandra}, +title = {Provably difficult combinatorial games}, +journal = siamjc, volume = 8, pages = {151-174}, year = 1979 } + +@article{Storer83, +author = {J. A. Storer}, +title = {On the complexity of chess}, +journal = jcss, volume = 27, pages = {77-100}, year = 1983} + +%Str + +@article{Strassen69, +author = {V. Strassen}, +title = {Gaussian elimination is not optimal}, +journal = {Numerische Mathematik}, volume = 14, year = 1969, pages = {354-356}} + +%Su + +%Suc + +@article{SuchanT07, +author = {Karol Suchan and Ioan Todinca}, +title = {On powers of graphs of bounded NLC-width (clique-width)}, +journal = dam, volume = 155, year = 2007, pages = {1885-1893}} + +@article{SuchanT09, +author = {Karol Suchan and Ioan Todinca }, +title = {Minimal interval completion through graph exploration}, +journal = tcs, volume = 410, year = 2009, pages = {35-43}} + +@unpublished{SuchanV09, +author = {Karol Suchan and Yngve Villanger}, +title = {Computing pathwidth faster than $2^n$}, +year = 2009, +note = {To appear in Proceedings IWPEC 2009}} + +%Sud + +@article{Sudborough87, +author = {Ivan Hal Sudborough}, +title = {``{C}utwidth'' and Related Graph Problems}, +journal = beatcs, +pages = {79-110}, +year = 1987, +month = 2 +} + +%Sug + +@article{SugiharaS89, +author = {Kazuo Sugihara and Ichiro Suzuki}, +title = {Optimal algorithms for a pursuit-evasion problem in grids}, +journal = sjdm, volume = 2, year = 1989, pages = {126-143}} + +%Sun + +@article{SundaramSR94, +author = {Ravi Sundaram and Karan {Sher Singh} and C. {Pandu Rangan}}, +title = {Treewidth of circular-arc graphs}, +year = 1994, journal = sjdm, volume = 7, pages = {647-655}} + +%Suz + +@article{SuzukiTN90, +author = {H. Suzuki and N. Takahashi and Takao Nishizeki}, +title = {A linear algorithm for bipartition of biconnected graphs}, +journal = ipl, volume = 33, pages = {227-231}, year = 1990 } + +%Sy + +@inproceedings{Sy92, +author = {Bon K. Sy}, +title = {Reasoning {MPE} to multiply connected belief networks using message passing}, +booktitle = aaai92, publisher = {AAAI Press}, year = 1992, pages = {570-576}} + +%Sys + +@article{Syslo79, +author = {Maciej M. Sys{\l}o}, +title = {Characterisations of outerplanar graphs}, +journal = dm, volume = 26, year = 1979, pages = {47-53}} + +@article{Syslo82, +author = {Maciej M. Sys{\l}o}, +title = {The subgraph isomorphism problem for outerplanar graphs}, +journal = tcs, volume = 17, year = 1982, pages = {91-97}} + +@article{Syslo82b, +author = {Maciej M. Sys{\l}o}, +title = {A labeling algorithm to recognize a line graph and output its root graph}, +journal = ipl, volume = 15, year = 1982, pages = {28-30}} + +@inproceedings{Syslo83, +author = {Maciej M. Sys{\l}o}, +title = {{NP}-Complete Problems On Some Tree-Structured Graphs: A Review}, +editor = {M. Nagl and J. Perl}, +booktitle = wg83, year = 1983, pages = {342-353}, +publisher = {University Verlag Rudolf Trauner}, +address = {Linz, West Germany}} + +@inproceedings{SysloP83, +author = {Maciej M. Sys{\l}o and Andrzej Proskurowski}, +title = {On {H}alin graphs}, +booktitle = {Graph Theory, Lagow, 1981}, +publisher = lncs1018, pages = {248-256}, year = 1983} + +@article{Syslo84, +author = {Maciej M. Sys{\l}o}, +title = {Series-parallel graphs and depth-first search trees}, +journal = ieeetcs, +volume = {CAS-31}, number = 12, year = 1984, month = {12}, pages = +{1029-1033}} + +@inproceedings{Syslo86, +author = {Maciej M. Sys{\l}o}, +title = {On Some Generalizations of Outerplanar Graphs: Results and Open Problems}, +editor = {G. Tinhofer and G. Schmidt}, +booktitle = wg86, publisher = lncs246, year = 1986, pages = {146-164}} + +%Sz + +@article{SzekeresW68, +author = {G. Szekeres and H. S. Wilf}, +title = {An inequality for the chromatic number of a graph}, +journal = jct, volume = 4, year = 1968, pages = {1-3}} + +%T + +%Ta + +%Tak + +@article{TakahashiUK91, +author = {Atsushi Takahashi and Shuichi Ueno and Yoji Kajitani}, +title = {Minimal Acyclic Forbidden Minors for the Family of Graphs +with Bounded Path-Width}, +journal = dm, pages={293 - 304}, volume = 127, number = {1/3}, year = 1994} + +@article{TakahashiUK91a, +author = {Atsushi Takahashi and Shuichi Ueno and Yoji Kajitani}, +title = {Mixed-Searching and Proper-Path-Width}, +journal = tcs, volume = 137, year = 1995, pages = {253-268}} + +@article{TakahashiUK95, +author = {Atsushi Takahashi and Shuichi Ueno and Yoji Kajitani}, +title = {Mixed-Searching and Proper-Path-Width}, +journal = tcs, volume = 137, year = 1995, pages = {253-268}} + +@article{TakahashiUK95a, +author = {Atsushi Takahashi and Shuichi Ueno and Yoji Kajitani}, +title = {Minimal forbidden minors for the family of graphs with proper-path-width at most two}, +journal = {IEICE Trans. Fund.}, volume = {E78-A}, year = 1995, pages = {1828-1839}} + +@article{TakamizawaNS82, +author = {K. Takamizawa and Takao Nishizeki and N. Saito}, +title = {Linear-time computability of combinatorial problems on series-parallel graphs}, +journal = jacm, volume = 29, year = 1982, pages = {623-641}} + +@article{Takaoka92, +author = {Tadao Takaoka}, +title = {A new upper bound on the complexity of the all pairs shortest path problem}, +journal = ipl, volume = 43, year = 1992, pages = {195-199}} + + +%Tam + +@article{Tamassia87, +author = {R. Tamassia}, +title = {On embedding a graph in the grid with the minimum number of bends}, +journal = siamjc, volume = 16, pages = {421-444}, year = 1987} + +%Tan + +@article{Tan91, +author = {Jimmy J. M. Tan}, +title = {A necessary and sufficient condition for the existence of a complete stable matching}, +journal = ja, volume = 12, year = 1991, pages = {154-178}} + +%Tar + +%Tarjan 1972 + +@article{Tarjan72, +author = {Robert Endre Tarjan}, +title = {Depth first search and linear graph algorithms}, +journal = siamjc, volume = 1, year = 1972, pages = {146-160}} + +@techreport{Tarjan72a, +author = {Robert Endre Tarjan}, +title = {Finding a maximum clique}, +type = {Technical report}, +institution = {Department of Computer Science, Cornell University, Ithaca, NY}, +year = 1972} + +%Tarjan 1974 + +@article{Tarjan74, +author = {Robert Endre Tarjan}, +title = {A note on finding the bridges of a graph}, +journal = ipl, volume = 2, year = 1974, pages = {160-161}} + +%Tarjan 1975 + +@article{Tarjan75, +author = {R. E. Tarjan}, +title = {Efficiency of a good but not linear set union algorithm}, +journal = jacm, volume = 22, year = 1975, pages = {215-225}} + +%Tarjan 1975 + +@article{TarjanT77, +author = {R. E. Tarjan and A. Trojanowski}, +title = {Finding a maximum independent set}, +journal = siamjc, volume = 6, year = 1977, pages = {537-546}} + +%Tarjan 1983 + +@book{Tarjan83, +author = {Robert Endre Tarjan}, +title = {Data Structures and Network Algorithms}, +publisher = {SIAM}, +address = {Philadelphia, PA}, +year = 1983 } + +%Tarjan 1984 + +@article{TarjanY84, +author = {Robert Endre Tarjan and Mihalis Yannakakis}, +title = {Simple linear time algorithms to test chordiality of graphs, test acyclicity of graphs, and selectively reduce acyclic hypergraphs}, +journal = siamjc, volume = 13, pages = {566-579}, year = 1984 } + +%Tarjan 1985 + +@article{Tarjan85, +author = {Robert Endre Tarjan}, +title = {Decomposition by clique separators}, +journal = dm, volume = 55, year = 1985, pages = {221-232}} + +@article{TarjanV85, +author = {Robert Endre Tarjan and Uzi Vishkin}, +title = {An efficient parallel biconnectivity algorithm}, +journal = siamjc, volume = 14, number = 4, year = 1985, pages = {862-874}} + +@book{TarskiMR53, +author = {A. Tarski and A. Mostowski and R. M. Robinson}, +title = {Undecidable Theories}, +publisher = {North-Holland Publishing Company}, +year = 1953, pages = {xi+98 pp.}} + +%Taz + +@article{TazariM09, +author = {Siamak Tazari and Matthias M\"{u}ller-Hannemann}, +title = {Shortest paths in linear time on minor-closed graph classes, with an +application to {S}teiner tree approximation}, +journal = dam, volume = 157, year = 2009, pages = {673-684}} + +%Te + +%Tel + +%Telle 1993 + +@article{TelleP93, +author = {Jan Telle and Andrzej Proskurowski}, +title = {Efficient Sets in Partial $k$-Trees}, +journal = dam, volume = 44, year = 1993, pages = {109-117}} + +@inproceedings{TelleP93a, +author = {Jan Telle and Andrzej Proskurowski}, +title = {Practical algorithms on partial $k$-trees with an application to domination-like problems}, +editor = {Frank K. H. A. Dehne and J\"{o}rg-R\"{u}diger Sack and Nicola Santoro and Sue Whitesides}, +booktitle = wads93, publisher = lncs709, year = 1993, pages = {610-621}} + +%Telle 1994 + +@phdthesis{Telle94, +author = {Jan Arne Telle}, +title = {Vertex Partitioning Problems: Characterization, Complexity and Algorithms on Partial $k$-Trees}, +school = {Department of Computer and Information Science, University of +Oregon}, address = {Eugene, Oregon, USA}, +year = 1994} + +@article{Telle94a, +author = {Jan Arne Telle}, +title = {Complexity of Domination-Type Problems in Graphs}, +journal = nordicjc, volume = 1, year = 1994, pages = {157-171}} + +%Telle 1997 + +@article{TelleP97, +author = {Jan Arne Telle and Andrzej Proskurowski}, +title = {Algorithms for vertex partitioning problems on partial $k$-trees}, +journal = sjdm, volume = 10, year = 1997, pages = {529 - 550}} + +%Telle 2005 + +@article{Telle01, +author = {Jan Arne Telle}, +title = {Tree-decompositions of small pathwidth}, +journal = dam, volume = 145, year = 2005, pages = {210-218}} + +%Th + +%Tha + +@article{ThatcherW68, +author = {J. W. Thatcher and J. B. Wright}, +title = {Generalized Finite Automata Theory with an Application to a Decision Problem in Second-Order Logic}, +journal = mst, volume = 2, year = 1988, pages = {57-81}} + +%Thi + +%Thilikos 1997 + +@techreport{Thilikos97, +author = {Dimitrios M. Thilikos}, +title = {Algorithms and Obstructions for Linear-Width and Related Search Parameters}, +number = {UU-CS-97-35}, +year = 1997, +institution = {Department of Computer Science, Utrecht University}, +address = {Utrecht}, +type = {Technical Report}} + +@article{ThilikosB97, +author = {Dimitrios M. Thilikos and Hans L. Bodlaender}, +title = {Fast partitioning $l$-apex graphs with applications to approximating +maximum induced-subgraph problems}, +journal = ipl, volume = 61, pages = {227-232}, year = 1997} + +%Thilikos 1999 + +@article{Thilikos99, +author = {Dimitrios M. Thilikos}, +title = {Quickly excluding $K_{2,r}$ from planar graphs}, +journal = {Electronic Notes in Discrete Mathematics}, year = 1999, volume = 3, pages = {189-194}} + +%Thilikos 2000 + +@article{Thilikos00, +author = {Dimitrios M. Thilikos}, +title = {Algorithms and obstructions for linear-width and related search parameters}, +journal = dam, volume = 105, year = 2000, pages = {239-271}} + +@techreport{ThilikosSB00, +author = {Dimitrios M. Thilikos and Maria J. Serna and Hans L. Bodlaender}, +title = {A constructive linear time algorithm for small cutwidth}, +institution = {Departament de Llenguatges i Sistemes Informatics, +Universitat Politecnica de Catalunya}, +address = {Barcelona, Spain}, +number = {LSI-00-48-R}, +year = 2000 +} + +@inproceedings{ThilikosSB00a, +author = {Dimitrios M. Thilikos and Maria J. Serna and Hans L. Bodlaender}, +title = {Constructive linear time algorithms for small cutwidth and carving-width}, +editor = {D.T. Lee and Shang-Hua Teng}, +booktitle = isaac00, publisher = lncs1969, pages = {192--203}, year = {2000}} + +%Thilikos 2005 + +@article{ThilikosSB05, +author = {Dimitrios M. Thilikos and Maria J. Serna and Hans L. Bodlaender}, +title = {Cutwidth {I}: {A} linear time fixed parameter algorithm}, +journal = ja, volume = 56, pages = {1-24}, year = 2005} + +@article{ThilikosSB05a, +author = {Dimitrios M. Thilikos and Maria J. Serna and Hans L. Bodlaender}, +title = {Cutwidth {II}: {Algorithms} for partial $w$-trees of bounded degree}, +journal = ja, volume = 56, pages = {25-49}, year = 2005} + +%Tho + +@article{Thomas85, +author = {Robin Thomas}, +title = {Graphs without {$K_4$} and well-quasi-ordering}, +journal = jctb, volume = 38, pages = {240-247}, year = 1985} + +@article{Thomas90, +author = {Robin Thomas}, +title = {A {M}enger-like property of tree-width. {T}he finite case}, +journal = jctb, volume = 48, pages = {67-76}, year = 1990} + +@article{Thomason84, +author = {Andrew Thomason}, +title = {An extremal function for contraction of graphs}, +journal = {Mathematical Proceedings of the Cambridge Philosophical Society}, year = 1984, volume = 95, pages = {261-265}} + +@inproceedings{Thomasse09, +author = {St\'{e}phan Thomass\'{e}}, +title = {A quadratic kernel for Feedback Vertex Set}, +booktitle = soda09, +pages = {115-119}, +year = 2009} + +@unpublished{Thomassen87, +author = {C. Thomassen}, +title = {Embeddings and Minors}, +note = {Manuscript, to appear in Handbook of Combinatorics, ed. by R. L. Graham, M. +Gr\"{o}tschel and L. Lovasz, North Holland}, +year = 1987, +something = {Mat-Report No. 1987-10, pp. 1-63}} + +@article{Thomassen89, +author = {Carsten Thomassen}, +title = {The graph genus problem is {NP}-complete}, +journal = ja, volume = 10, year = 1989, pages = {568-576}} + +@article{Thomassen97, +author = {Carsten Thomassen}, +title = {A Simpler Proof of the Excluded Minor Theorem for Higher Surfaces}, +journal = jctb, volume = 70, year = 1997, pages = {306-311}} + +@article{Thorup98, +author = {Mikkel Thorup}, +title = {Structured Programs have Small Tree-Width and Good Register Allocation}, +journal = ic2, volume = 142, year=1998, pages = {159-181}} + +%To + +%Tod + +@article{Toda91, +author = {S. Toda}, +title = {PP is as hard as the polynomial-time hierarchy}, +journal = siamjc, volume = 20, year = 1991, pages = {865-877}} + +@article{TodaO92, +author = {S. Toda and M. Ogiwara}, +title = {Counting classes are at least as hard as the polynomial-time hierarchy}, +journal = siamjc, volume = 21, year = 1992, pages = {316-328}} + +@article{Toda94, +author = {Seinosuke Toda}, +title = {Simple characterizations of {P($\#$P)} and complete problems}, +journal = jcss, volume = 49, year = 1994, pages = {1-17}} + +%Tog + +@article{TogasakiY02, +author = {Mitsunori Togasaki and Koichi Yamazaki}, +title = {Pagenumber of pathwidth-$k$ graphs and strong pathwidth-$k$ graphs}, +journal = dm, volume = 259, year = 2002, pages = {361-368}} + +%Tor + +@article{Toran91, +author = {S. Toran}, +title = {Complexity classes defined by counting quantifiers}, +journal = jacm, volume = 38, year = 1991, pages = {752-773}} + +@article{TorreGS92, +author = {Pilar {de la Torre} and Raymond Greenlaw and Alejandro A. Sch\"{a}ffer}, +title = {Optimal Tree Ranking is in {{\cal NC}}}, +journal = ipl, volume = 2, number = 1, year = 1992, pages = {31-41}} + +@techreport{TorreGS93, +author = {Pilar {de la Torre} and Raymond Greenlaw and Alejandro A. Sch\"{a}ffer}, +title = {A Note on {D}eogun and {P}eng's Edge Ranking Algorithm}, +type = {Technical Report}, +number = {93-13}, +institution = {Department of Computer Science, University of New Hampshire}, +address = {Durham, New Hampshire, USA}, +year = 1993} + +@article{TorreGS95, +author = {Pilar {de la Torre} and Raymond Greenlaw and Alejandro A. Sch\"{a}ffer}, +title = {Optimal edge ranking of trees in polynomial time}, +journal = alg, volume = 13, year = 1995, pages = {592-618}} + +%Tr + +%Tra + +@article{Traldi06, +author = {Lorenzo Traldi}, +title = {On the colored {T}utte polynomial of a graph of bounded treewidth}, +journal = dam, volume = 154, year = 2006, pages = {1032-1036}} + +%Ts + +@article{TsinC84, +author = {Yung H. Tsin and Franciss Y. Chin}, +title = {Efficient parallel algorithms for a class of graph theoretic problems}, +journal = siamjc, volume = 13, year = 1984, pages = {580-599}} + +%Tu + +%Tuc + +@article{Tucker80, +author = {A. Tucker}, +title = {An efficient test for circular-arc graphs}, +journal = siamjc, volume = 9, pages = {1-24}, year = 1980 } + +@article{Tucker84, +author = {A. Tucker}, +title = {An ${O}(n^2)$ algorithm for coloring perfect planar graphs}, +journal = ja, volume = 5, year = 1984, pages = {60-68}} + +%Tur + +@article{Turing36, +author = {Alan Turing}, +title = {On computable numbers, with an application to the {E}ntscheidungsproblem}, +journal = {Proceedings of the London Mathematical Society Series 2}, volume = 42, year = 1936, pages = {230-265}} + +%Tut + +@article{Tutte54, +author = {W. T. Tutte}, +title = {A short proof of the factor theorem for finite graphs}, +journal = {Canadian Journal of Mathematics}, volume = 6, year = 1954, pages = {347-352}} + +@article{Tutte60, +author = {W. T. Tutte}, +title = {Convex representations of graphs}, +journal = {Proceedings of the London Mathematical Society}, volume = 10, year = 1960, pages = {304-320}} + +@book{Tutte84, +author = {W. T. Tutte}, +title = {Graph Theory}, +series = {Encyclopedia of Mathematics and Its Applications}, +volume = 21, +year = 1984, +publisher = {Addison-Wesley}, +address = {Menlo Park, CA}} + +%Tuz + +@unpublished{TuzaL??, +author = {Zsolt Tuza and Aristid Lindenmayer}, +title = {Locally Generated Colourings of Hexagonal Cell Division Patterns: +Application to Retinal Cell Differentiation}, +note = {Manuscript. +To appear in: Memorial Vol.? for A. Lindenmayer}} + +@article{Tuza04, +author = {Zsolt Tuza}, +title = {Strong branchwidth and local transversals}, +journal = dam, volume = 145, pages = {291-296}, year = 2004} + +%U + +%Ue + +%Ueh + +@article{UeharaU07, +author = {Ryuhei Uehara and Yushi Uno}, +title = {On computing longest paths in small graph classes}, +journal = ijfcs, year = 2007, volume = 18, pages = {911-930}} + +@inproceedings{Uehara08, +author = {Ryuhei Uehara}, +title = {Bandwidth of bipartite permutation graphs}, +editor = {Seok-Hee Hong and Hiroshi Nagamochi and Takuro Fukunaga}, +booktitle = isaac08, year = 2008, publisher = lncs5369, pages = {824-835}} + +%Un + +%Ung + +@article{Ungar51, +author = {P. Ungar}, +title = {A theorem on planar graphs}, +journal = {Journal of the London Mathematical Society}, volume = 26, year = 1951, pages = {256-262}} + +%V + +%Va + +%Val + +@article{ValdesTL82, +author = {J. Valdes and Robert Endre Tarjan and Eugene L. Lawler}, +title = {The recognition of series parallel digraphs}, +journal = siamjc, volume = 11, pages = {298-313}, year = 1982 } + +@article{Valiant79, +author = {Leslie Valiant}, +title = {The complexity of enumeration and reliability problems}, +journal = siamjc, volume = 6, year = 1979, pages = {410-421}} + +@article{Valiant79a, +author = {Leslie Valiant}, +title = {The complexity of computing the permanent}, +journal = tcs, volume = 8, year = 1979, pages = {189-201}} + +%Van + +@article{VanEmdeBoasKZ84, +author = {P. {van {Emde Boas}} and R. Kaas and E. Zijlstra}, +title = {Design and implementation of an efficient priority queue}, +journal = mst, volume = 10, year = 1984, pages = {99-127}} + +%Vas + +@article{Vassilevska09, +author = {Virginia Vassilevska}, +title = {Efficient algorithms for clique problems}, +journal = ipl, year = 2009, volume = 109, pages = {254-257}} + +%Vaz + +@article{Vazirani89, +author = {Vijay V. Vazirani}, +title = {{NC} Algorithms for Computing the Number of Perfect Matchings +in {$K_{3,3}$}-Free Graphs and Related Problems}, +journal = ic2, volume = 80, year = 1989, pages = {152-164}} + +%Vi + +%Vil + +@techreport{Villanger05, +author = {Yngve Villanger}, +title = {Counting and listing all potential maximal cliques of a graph}, +institution = {Department of Informatics, University of Bergen}, +address = {Bergen, Norway}, +type = {Reports in Informatics}, +number = {302}, +year = 2005} + +@article{Villanger06, +author = {Yngve Villanger}, +title = {{Lex M versus MCS-M}}, +journal = dm, volume = 306, year = 2006, pages = {393-400}} + +@inproceedings{Villanger06a, +author = {Yngve Villanger}, +title = {Improved exponential-time algorithms for treewidth and minimum fill-in}, +editor = {Jos\'{e} R. Correa and Alejandro Hevia and Marcos A. Kiwi}, +booktitle = latin06, publisher = lncs3887, year = 2006, pages = {800--811}} + +@article{VillangerHPT09, +author = {Yngve Villanger and Pinar Heggernes and Christophe Paul and Jan Arne Telle}, +title = {Interval completion is fixed parameter tractable}, +journal = siamjc, volume = 38, year = 2009, pages = {2007-2020}} + +%Vo + +@article{Vogler93, +author = {Walter Vogler}, +title = {On Hyperedge Replacement and {BNLC} Graph Grammars}, +journal = dam, volume = 46, pages = {253-273}, year = 1993} + +%W + +%Wa + +%Wag + +@article{Wagner37a, +author = {K. Wagner}, +title = {{\"U}ber eine {E}rweiterung eines {S}atzes von {K}uratowski}, +journal = {Deut.\ Math.}, volume = 2, year = 1937, pages = {280-285}} + +@article{Wagner37, +author = {K. Wagner}, +title = {{\"U}ber eine {E}igenshaft der Ebenen {C}omplexe}, +journal = {Math. Ann.}, volume = 14, year = 1937, pages = {570-590}} + +@inproceedings{WagnerW93, +author = {D. Wagner and K. Weihe}, +title = {A linear-time algorithm for edge-disjoint paths in planar graphs}, +editor = {Thomas Lengauer}, +booktitle = esa93, year = 1993, pages = {384-395}, publisher = lncs726} + +%Wal + +@article{WaldC83, +author = {J. A. Wald and Charles J. Colbourn}, +title = {Steiner Trees, Partial 2-Trees, and Minimum {IFI} Networks}, +journal = netw, year = 1983, volume = 13, pages = {159-167}} + +@inproceedings{WaldC82, +author = {J. A. Wald and Charles J. Colbourn}, +title = {Steiner trees in outerplanar graphs}, +booktitle = {Proceedings of the 13th Southeastern Conf. on Combinatorics, Graph Theory, and Computing}, +publisher = {Utilitas Mathematica Publishing, Winnipeg, Ont.}, +year = 1982 +} + +@article{Walter78, +author = {J. Walter}, +title = {Representations of chordal graphs as subgraphs of a tree}, +journal = jgt, volume = 2, year = 1978, pages = {265-267}} + +%Wan + +%Wang + +%Wang 2008 + +@article{WangLL08, +author = {Rui Wang and Francis C. M. Lau and Yan Yan Liu}, +title = {On the hardness of minimizing space for all-shortest-path interval routing schemes}, +journal = tcs, volume = 389, year = 2008, pages = {250-264}} + +%Wang 2010 + +@article{WangNFC10, +author = {Jianxin Wang and Dan Ning and Qilong Feng and Jianer Chen}, +title = {An improved kernelization for {$P_2$}-packing}, +journal = ipl, volume = 110, year = 2010, pages = {188-192}} + + +%Wank + +@article{WankeW89, +author = {Egon Wanke and Manfred Wiegers}, +title = {Undecidability of the bandwidth problem on linear graph languages}, +journal = ipl, volume = 33, year = 1989, pages = {193-197}} + +@techreport{Wanke91, +author = {Egon Wanke}, +title = {$k$-{NLC} Graphs and polynomial algorithms}, +number = {80}, +type = {Bericht, Reihe Informatik}, +institution = {Universit\"{a}t Paderborn}, +year = 1991, pages = {1-19}} + +@article{Wanke94, +author = {Egon Wanke}, +title = {Bounded Tree-width and {LOGCFL}}, +journal = ja, volume = 16, year = 1994, pages = {470-491}} + +@article{Wanke94a, +author = {Egon Wanke}, +title = {$k$-NLC graphs and polynomial algorithms}, +journal = dam, volume = 54, year = 1994, pages = {251-266}} + +@article{Wanless01, +author = {I. M. Wanless}, +title = {Path achievement games}, +journal = {Austalasian Journal of Combinatorics}, volume = 23, year = 2001, pages = {9-18}} + +%Wax + +@article{WaxmanI88, +author = {Bernard M. Waxman and Makoto Imase}, +title = {Worst-case performance of {R}ayward-{S}mith's {S}teiner tree heuristic}, +journal = ipl, volume = 29, year = 1988, pages = {283-287}} + +%We + +%Wei + +@article{WeifanY06, +author = {Wang Weifan and Wang Yiqiao}, +title = {$L(p,q)$-labeling of {$K_4$}-minor free graphs}, +journal = ipl, volume = 98, year = 2006, pages = {169-173}} + +%Wen + +@inproceedings{Wen90, +author = {W. X. Wen}, +title = {Optimal decomposition of belief networks}, +editor = {P. P. Bonissone and M. Henrion and L. N. Kanal and J. F. Lemmer}, +booktitle = uai90, year = 1990, pages = {245--256}, publisher = {Elsevier}} + +%Wes + +@book{West01, +author = {D. B. West}, +title = {Introduction to graph theory}, +publisher = {Prentice Hall}, +year = {2001}} + +@article{WestbrookT92, +author = {J. Westbrook and R. E. Tarjan}, +title = {Maintaining bridge-connected and biconnected components on line}, +journal = alg, volume = 7, year = 1992, pages = {433-464}} + +%Wh + +%Whi + +@article{WhiteFP85, +author = {K. White and M. Farber and W. Pulleyblank}, +title = {Steiner tress, connected domination and strongly chordal graphs}, +journal = networks, volume = 15, year = 1985, pages = {109-124}} + +@article{Whitesides81, +author = {S. Whitesides}, +title = {An algorithm for finding clique cutsets}, +journal = ipl, volume = 12, year = 1981, pages = {31-32}} + +%Wi + +%Wid + +@inproceedings{Widmayer86, +author = {P. Widmayer}, +title = {On approximation algorithm for {S}teiner's problem in graphs}, +editor = {G. Tinhofer and G. Schmidt}, +booktitle = wg86, publisher = lncs246, year = 1986, pages = {17-28}} + +%Wie + +@inproceedings{Wiegers86, +author = {Manfred Wiegers}, +title = {Recognizing Outerplanar Graphs in Linear Time}, +editor = {G. Tinhofer and G. Schmidt}, +booktitle = wg86, publisher = lncs246, year = 1986, pages = {165-176}} + +@inproceedings{WiegersM88, +author = {Manfred Wiegers and Burkhard Monien}, +title = {Bandwidth and Profile Minimization}, +editor = {J. van Leeuwen}, +booktitle = wg88, publisher = lncs344, pages = {378-393}, year = 1988} + +@inproceedings{Wiegers90, +author = {Manfred Wiegers}, +title = {The $k$-section of treewidth restricted graphs}, +editor = {B. Rovan}, +booktitle = mfcs90, publisher = lncs452, year = 1990, pages = {530-537}} + +%Wil + +@article{Wilf87, +author = {H. Wilf}, +title = {Finite Lists of Obstructions}, +journal = amm, volume = 94, year = 1987, pages = {267-271}} + +@article{Williams09, +author = {Ryan Williams}, +title = {Finding paths of length $k$ in {$O^\ast(2^k)$} time}, +journal = ipl, volume = 109, year = 2009, pages = {315-318}} + +@article{Williamson84, +author = {S. G. Williamson}, +title = {Depth-first search and {K}uratowski subgraphs}, +journal = jacm, volume = 31, year = 1984, pages = {681-693}} + +%Wim + +@article{WimerHL85, +author = {T. V. Wimer and S. T. Hedetniemi and R. Laskar}, +title = {A methodology for constructing linear graph algorithms}, +journal = cn, volume = 50, year = 1985, pages = {43-60}} + +@techreport{WimerH86, +author = {T. V. Wimer and S. T. Hedetniemi}, +title = {$k$-Terminal Recursive Families of Graphs}, +institution = {Clemson University}, +year = 1986 +} + +@phdthesis{Wimer87, +author = {T. V. Wimer}, +title = {Linear Algorithms on $k$-Terminal Graphs}, +school = {Dept. of Computer Science, Clemson University}, +year = 1987 +} + +@article{Wimer87a, +author = {T. V. Wimer}, +title = {Linear algorithms for the dominating cycle problems in series-parallel graphs, 2-trees and {H}alin graphs}, +year = 1987, journal = cn, volume = 56 } + +%Win + +@article{Winter85, +author = {Pawel Winter}, +title = {Generalized {S}teiner problem in outerplanar graphs}, +journal = bit, volume = 25, year = 1985, pages = {485-496}} + +@article{Winter86, +author = {Pawel Winter}, +title = {Generalized Steiner problem in {H}alin networks}, +journal = ja, volume = 7, year = 1986, pages = {549-566}} + +@article{Winter87, +author = {P. Winter}, +title = {Steiner problem in networks: {A} survey}, +journal = netw, volume = 17, year = 1987, pages = {129-167}} + +%Wo + +%Woe + +@inproceedings{Woeginger03, +author = {Gerhard J. Woeginger}, +title = {Exact algorithms for {NP}-hard problems: {A} survey}, +booktitle = {Combinatorial Optimization: ''Eureka, you shrink''}, +publisher = {Springer Lecture Notes in Computer Science, vol.~2570}, +address = {Berlin}, year = 2003, pages = {185-207}} + +@inproceedings{Woeginger04, +author = {Gerhard J. Woeginger}, +title = {Space and time complexity of exact algorithms: some open problems +(invited talk)}, +editor = {R. G. Downey and M. R. Fellows}, +booktitle = iwpec04, publisher = lncs3162, year = 2004, pages = {281-290}} + +@article{Woeginger08, +author = {Gerhard J. Woeginger}, +title = {Open problems around exact algorithms}, +journal = dam, volume = 156, year = 2008, pages = {397-405}} + +%Wol + +@techreport{WolleKB04, +author = {Thomas Wolle and Arie M. C. A. Koster and Hans L. Bodlaender}, +title = {A Note on Contraction Degeneracy}, +institution = {Institute of Information and Computing Sciences, Utrecht University}, +address = {Utrecht, The Netherlands}, +year = 2004, +type = {Technical Report}, +number = {UU-CS-2004-042}} + +@techreport{WolleB04, +author = {Thomas Wolle and Hans L. Bodlaender}, +title = {A Note on Edge Contraction}, +institution = {Institute of Information and Computing Sciences, Utrecht University}, +address = {Utrecht, The Netherlands}, +year = 2004, +type = {Technical Report}, +number = {UU-CS-2004-028}} + +@phdthesis{Wolle05, +author = {Thomas Wolle}, +title = {Computational Aspects of Treewidth. {L}ower Bounds and Network +Reliability}, +school = {Faculty of Science, Utrecht University}, +address = {Utrecht, the Netherlands}, +year = 2005} + +%Woo + +@inproceedings{Wood02, +author = {David R. Wood}, +title = {Queue layouts, tree-width, and three-dimensional graph drawing}, +booktitle = fsttcs02, pages = {348-359}, year = 2002, publisher = lncs2556} + +@inproceedings{WoodT06, +author = {David R. Wood and Jan Arne Telle}, +title = {Planar decompositions and the crossing number of graphs with an excluded minor}, +editor = {Michael Kaufmann and Dorothea Wagner}, +booktitle = gd06, year = 2006, publisher = lncs4372, pages = {150-161}} + +%Wu + +@article{WuZ08, +author = {Jiaojiao Wu and Xuding Zhu}, +title = {Lower bounds for the game colouring number of partial $k$-trees +and planar graphs}, +journal = dm, volume = 308, year = 2008, pages = {2637-2642}} + +%Wul + +@article{WuDJLH06, +author = {Weili Wul and Hongwei Dul and Xiaohua Jial and Yingshu Li and +Scott C.-H. Huang}, +title = {Minimum connected dominating sets and maximal independent sets in +unit disk graphs}, +journal = tcs, volume = 352, pages = {1-7}, year = 2006} + + +%X + +%Xi + +%Xin + +@article{XingCC06, +author = {Hua-Ming Xing and Xin Chen and Xue-Gang Chen}, +title = {A note on {R}oman domination in graphs}, +journal = dm, volume = 306, year = 2006, pages = {3338-3340}} + +%Xu + +%Xue + +@article{XueCN05, +author = {Y. Xue and Y. Cui and K. Nahrstedt}, +title = {Maximizing Lifetime for Data Aggregation in Wireless Sensor Networks}, +journal = {Mobile Networks and Applications}, +volume = 10, pages = {853-864}, year = {2005}} + +%Y + +%Ya + +%Yam + +@article{YamaguchiAM03, +author = {Atsuko Yamaguchi and Kiyoko F. Aoki and Hiroshi Mamitsuka}, +title = {Graph complexity of chemical compounds in biological pathways}, +journal = {Genome Informatics}, volume = 14, year = 2003, pages = {376-377}} + +@article{YamaguchiAM04, +author = {Atsuko Yamaguchi and Kiyoko F. Aoki and Hiroshi Mamitsuka}, +title = {Finding the maximum common subgraph of a partial $k$-tree and a graph with a polynomially bounded number of spanning trees}, +journal = ipl, volume = 92, year = 2004, pages = {57-63}} + +@inproceedings{YamazakiBFT97, +author = {Koichi Yamazaki and Hans L. Bodlaender and Babette {de Fluiter} and Dimitrios Thilikos}, +title = {Isomorphism for graphs of bounded distance width}, +booktitle = ciac97, publisher = lncs1203, year = 1997, pages = {276-287}} + +@article{Yamazaki01, +author = {Koichi Yamazaki}, +title = {On approximation intractability of the path-distance-width problem}, +journal = dam, volume = 110, pages = {317-325}, year = 2001} + +@article{YamazakiBFT99, +author = {Koichi Yamazaki and Hans L. Bodlaender and Babette {de Fluiter} and +Dimitrios Thilikos}, +title = {Isomorphism for graphs of bounded distance width}, +journal = alg, volume = 24, pages = {105-127}, year = 1999} + +%Yan + +@mastersthesis{Yan89, +author = {X. Yan}, +title = {A relative approximation algorithm for computing the pathwidth of outerplanar graphs}, +type = {Master thesis}, +school = {Department of Computer Science, Washington State University}, +address = {Pullman, WA, USA}, +year = 1989} + +@article{YangC08, +author = {Boting Yang and Yi Cao}, +title = {Digraph searching, directed vertex separation and directed pathwidth}, +journal = dam, volume = 156, year = 2008, pages = {1822-1837}} + +@article{YannakakisG80, +author = {Mihalis Yannakakis and Fanica Gavril}, +title = {Edge dominating sets in graphs}, +journal = sjam, volume = 38, year = 1980, PAGES = {364-372}} + +@article{Yannakakis81, +author = {Mihalis Yannakakis}, +title = {Computing the minimum fill-in is {NP}-complete}, +journal = sjadm, volume = 2, year = 1981, pages = {77-79}} + +@article{Yannakakis85, +author = {Mihalis Yannakakis}, +title = {A polynomial algorithm for the Min-Cut Linear Arrangement +of trees}, +journal = jacm, volume = 32, year = 1985, pages = {950-988}} + +@article{YannakakisG87, +author = {Mihalis Yannakakis and Fanica Gavril}, +title = {The maximum $k$-colorable subgraph problem for chordal graphs}, +journal = ipl, volume = 24, year = 1987, pages = {133-137}} + +@article{Yannakakis89, +author = {Mihalis Yannakakis}, +title = {Embedding Planar Graphs in Four Pages}, +journal = jcss, volume = 38, year = 1989, pages = {36-67}} + +%Yap + +@book{Yap86, +author = {H. P. Yap}, +title = {Some Topics in Graph Theory}, +address = {Cambridge, UK}, +series = {London Mathematical Society Lecture Note Series}, +volume = 108, +year = 1986, +publisher = {Cambridge Univ. Press}} + +%Ye + +%Yeh + +@article{Yeh06, +author = {Roger K. Yeh}, +title = {A survey on labeling graphs with a condition at distance two}, +journal = dm, volume = 306, pages = {1217-1231}, year = 2006} + +%Yen + +@article{Yen02, +author = {W. C. K. Yen}, +title = {Bottleneck domination and bottleneck independent domination on +graphs}, +journal = jise, volume = 18, year = 2002, pages = {311-331}} + +%Yu + +@article{YuC94, +author = {Chang-Wu Yu and Gen-Huey Chen}, +title = {A theorem on permutation graphs with applications}, +journal = {Information Sciences}, volume = 77, year = 1994, pages = {177-193}} + +%Z + +%Ze + +%Zei + +@article{ZeitlhoferW03, +author = {Thomas Zeitlhofer and Bernhard Wess}, +title = {List-coloring of interval graphs with application to register assignment for heterogeneous register-set architectures}, +journal = {Signal Processing}, volume = 83, year = 2003, pages = {1411-1525}} + +%Zh + +%Zha + +@article{ZhangGW09, +author = {Zhao Zhang and Xiaofeng Gao and Weili Wu}, +title = {{PTAS} for connected vertex cover in unit disk graphs}, +journal = tcs, volume = 410, year = 2009, pages = {5398-5402}} + +@book{ZhaoG04, +author = {F. Zhao and L. Guibas}, +title = {Wireless Sensor Networks: An Information Processing Approach}, +publisher = {Morgan Kaufman}, +year = 2004} + +@inproceedings{ZhaoCC07, +author = {Jizhen Zhao and Dongsheng Che and Liming Cai}, +title = {Comparative pathway annotation with protein-{DNA} interaction and operon information via graph tree decomposition}, +booktitle = {Proceedings of Pacific Symposium on Biocomputing, PSB 2007}, +pages = {496-507}, year = {2007}, volume ={12}} + +@Article{ZhaoMC08, +author = {Jizhen Zhao and Russell L. Malmberg and Liming Cai}, +title = {Rapid ab initio Prediction of {RNA} Pseudoknots via Graph Tree Decomposition}, +journal = {Journal of Mathematical Biology}, year = {2008}, volume = 56, number = {1--2}, pages = {145--159}} + +%Zho + +%Zhou 1992 + +@inproceedings{ZhouNSN92, +author = {X. Zhou and S. Nakano and H. Suzuki and T. Nishizeki}, +title = {An efficient algorithm for edge-coloring series-parallel multigraphs}, +editor = {I. Simon}, +year = 1992, booktitle = latin92, publisher = lncs583, pages = {516-529}} + +@unpublished{ZhouNSN92a, +author = {X. Zhou and S. Nakano and H. Suzuki and T. Nishizeki}, +title = {Efficient Algorithm for Edge-Coloring Partial $k$-Trees}, +year = 1992, +institution = {Department of Information Engineering, Tohoku University}, +address ={Sendai, Japan}, +note = {Manuscript}} + +%Zhou 1993 + +@inproceedings{ZhouNN93, +author = {X. Zhou and S. Nakano and T. Nishizeki}, +title = {A linear algorithm for edge-coloring partial $k$-trees}, +editor = {Thomas Lengauer}, +booktitle = esa93, year = 1993, pages = {409-418}, publisher = lncs726 } + +%Zhou 1994 + +@inproceedings{ZhouN94, +author = {X. Zhou and T. Nishizeki}, +title = {An efficient algorithm for edge-ranking trees}, +editor = {Jan van Leeuwen}, +booktitle = esa94, year = 1994, pages = {118-129}, publisher = lncs855} + +%Zhou 1995 + +@inproceedings{ZhouN95, +author = {X. Zhou and T. Nishizeki}, +title = {Finding optimal edge-rankings of trees}, +booktitle = soda95, year = 1995, pages = {122-131}} + +@article{ZhouN95a, +author = {X. Zhou and T. Nishizeki}, +title = {Optimal parallel algorithms for edge-coloring partial $k$-trees with bounded degrees}, +journal = {IEICE Transactions on Fundamentals of Electronics, Communications and Computer Science}, +volume = {E78-A}, pages = {463-469}, year = 1995} + +@article{ZhouNN95, +author = {Xiao Zhou and Nobuaki Nagai and Takao Nishizeki}, +title = {Generalized vertex-rankings of trees}, +year = 1995, journal = ipl, volume = 56, pages = {321-328}} + +%Zhou 1996 + +@article{ZhouNN96, +author = {Xiao Zhou and S. Nakano and Takao Nishizeki}, +title = {Edge-coloring partial $k$-trees}, +journal = ja, volume = 21, year = 1996, pages = {598-617}} + +@article{ZhouSN96, +author = {Xiao Zhou and Hitoshi Suzuki and Takao Nishizeki}, +title = {A linear algorithm for edge-coloring series-parallel multigraphs}, +journal = ja, volume = 20, year = 1996, pages = {174-201}} + +@inproceedings{ZhouTN96, +author = {Xiao Zhou and Syurei Tamura and Takao Nishizeki}, +title = {Finding edge-disjoint paths in partial $k$-trees}, +editor = {Tetsuo Asano and Yoshidie Igarashi and Hiroshi Nagamochi and Satoru Miyano and Subhash Suri}, +booktitle = isaac96, publisher = lncs1178, year = 1996, pages = {203-212}} + +%Zhou 1997 + +@inproceedings{ZhouKN97, +author = {Xiao Zhou and Md. Abul Kashem and Takao Nishizeki}, +title = {Generalized edge-ranking of trees}, +editor = {Fabrizio d'Amore and Paolo Giulio Franciosa and Alberto Marchetti-Spaccamela}, +booktitle = wg96, pages = {390-404}, year = 1997, publisher = lncs1197} + +%Zhou 2000 + +@article{ZhouFN00, +author = {X. Zhou and K. Fuse and Takao Nishizeki}, +title = {A linear algorithm for finding $[g,f]$-colorings of partial $k$-trees}, +journal = alg, volume = 27, pages = {227-243}, year = 2000} + +@article{ZhouKN00, +author = {X. Zhou and Y. Kanari and Takao Nishizeki}, +title = {Generalized vertex-colorings of partial $k$-trees}, +journal = {IEICE Trans E.83-A}, volume = 4, year = 2000, pages = {671-677}} + +%Zhu + +@article{Zhu00, +author = {Xuding Zhu}, +title = {The game coloring number of pseudo partial $k$-trees}, +journal = dam, volume = 215, year = 2000, pages = {245-262}} + +%Zm + +@article{ZmazekZ04, +author = {Bla \~{Z}mazek and Janez \~{Z}erovnik}, +title = {The obnoxious center problem on weighted cactus graphs}, +journal = dam, volume = 136, pages = {377-386}, year = 2004} + +%%%% REFERENCES WITHOUT AUTHOR NAMES %%%% + +@misc{TreewidthLIB, +key = {TreewidthLIB}, +title= {TreewidthLIB}, +year = {2004-- \ldots}, +url = {http://www.cs.uu.nl/people/hansb/treewidthlib}, +howpublished = {http://www.cs.uu.nl/people/hansb/treewidthlib} +} + +@Misc{DIMACS_challenge2, +key = {DIMACS}, +title = {The Second {DIMACS} Implementation Challenge: {NP-Hard Problems: +Maximum Clique, Graph Coloring, and Satisfiability}}, +howpublished = {See http://dimacs.rutgers.edu/Challenges/}, +year = {1992--1993} +} + +@misc{Boost, +key = {Boost}, +title = {Boost {C}++ Libraries}, +howpublished = {http://www.boost.org/}, +year = {1999--2009} +} + +@misc{Koster2008, + key={ComputeTW}, + author = {Arie M. C. A. Koster}, + title={{ComputeTW} -- {A}n interactive platform for computing Treewidth of graphs}, + year={2009}, + note = {http://www.math2.rwth-aachen.de/{$\sim$}koster/ComputeTW} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/related.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/related.bcf new file mode 100644 index 00000000000..1f455dc583e --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/related.bcf @@ -0,0 +1,210 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">citeorder</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">related.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>key1</bcf:citekey> + <bcf:citekey>key2</bcf:citekey> + <bcf:citekey>key3</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/related.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/related.bib new file mode 100644 index 00000000000..c56530cefd6 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/related.bib @@ -0,0 +1,52 @@ +@Article{key1, + RELATED = {key2,key3,key4,missing1}, + RELATEDTYPE = {reprintas}, + AUTHOR = {Author}, + TITLE = {Original Title}, + JOURNALTITLE = {Journal Title}, + VOLUME = {12}, + NUMBER = {5}, + DATE = {1998}, + PAGES = {125--150}, + SHORTHAND = {RK1} +} + +@InBook{key2, + RELATED = {key1}, + RELATEDTYPE = {reprintof}, + RELATEDSTRING = {First}, + AUTHOR = {Author}, + TITLE = {Reprint Title}, + BOOKTITLE = {Booktitle}, + LOCATION = {Location}, + PUBLISHER = {Publisher}, + DATE = {2009}, + PAGES = {34--60}, + SHORTHAND = {RK2} +} + +@InBook{key3, + RELATED = {key1}, + RELATEDTYPE = {reprintof}, + RELATEDSTRING = {Second}, + AUTHOR = {Author}, + TITLE = {Reprint Title}, + BOOKTITLE = {Booktitle}, + LOCATION = {Location}, + PUBLISHER = {Publisher2}, + DATE = {2010}, + PAGES = {33--57}, + SHORTHAND = {RK3} +} + +@InBook{key4, + AUTHOR = {Author}, + TITLE = {Reprint Title}, + BOOKTITLE = {Booktitle}, + LOCATION = {Location}, + PUBLISHER = {Publisher2}, + DATE = {2011}, + PAGES = {33--57}, + SHORTHAND = {RK4} +} + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sections-complex.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections-complex.bcf new file mode 100644 index 00000000000..c5e3e947e03 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections-complex.bcf @@ -0,0 +1,262 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="collection"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shorteditor</bcf:value> + <bcf:value order="2">editor</bcf:value> + <bcf:value order="3">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">labelalpha</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5" sort_direction="descending"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem substring_side="right" substring_width="4" order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1" pad_char="0">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + <bcf:sort order="7"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">labelalpha.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>L1</bcf:citekey> + <bcf:citekey>L2</bcf:citekey> + <bcf:citekey>L3</bcf:citekey> + <bcf:citekey>L4</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> + <bcf:bibdata section="1"> + <bcf:datasource type="file" datatype="bibtex">labelalpha.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="1"> + <bcf:citekey>L5</bcf:citekey> + <bcf:citekey>L6</bcf:citekey> + <bcf:citekey>L7</bcf:citekey> + <bcf:citekey>L8</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sections.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections.bcf new file mode 100644 index 00000000000..525bda96229 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections.bcf @@ -0,0 +1,292 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="collection"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shorteditor</bcf:value> + <bcf:value order="2">editor</bcf:value> + <bcf:value order="3">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2"> + <bcf:sortitem order="1">labelalpha</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5" sort_direction="descending"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem substring_side="right" substring_width="4" order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1" pad_char="0">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + <bcf:sort order="7"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">sections1.bib</bcf:datasource> + <bcf:datasource type="file" datatype="bibtex">sections2.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>sect1</bcf:citekey> + <bcf:citekey>sect2</bcf:citekey> + <bcf:citekey>sect3</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> + <!-- SECTION 1 --> + <bcf:bibdata section="1"> + <bcf:datasource type="file" datatype="bibtex">sections3.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="1"> + <bcf:citekey>sect4</bcf:citekey> + <bcf:citekey>sect5</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> + <!-- SECTION 2 --> + <bcf:bibdata section="2"> + <bcf:datasource type="file" datatype="bibtex">sections4.bib</bcf:datasource> + <bcf:datasource type="file" datatype="bibtex">sections1.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="2"> + <bcf:citekey>sect1</bcf:citekey> + <bcf:citekey>sect6</bcf:citekey> + <bcf:citekey>sect7</bcf:citekey> + <bcf:citekey>sect3</bcf:citekey> <!-- Bad key for section 2, should be dropped in tests --> + <bcf:citekey>sectx</bcf:citekey> <!-- Bad key for section 2, should be dropped in tests --> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> + <!-- SECTION 3 --> + <bcf:bibdata section="3"> + <bcf:datasource type="file" datatype="bibtex">sections1.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="3"> + <bcf:citekey>*</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> + <!-- SECTION 0 --> + <bcf:section number="0"> + <bcf:citekey>sect8</bcf:citekey> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sections1.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections1.bib new file mode 100644 index 00000000000..877b01c7ee1 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections1.bib @@ -0,0 +1,34 @@ +@PREAMBLE{"Å tring for Preamble 1"} + +@STRING{STRING1 = {value1}} + +@ARTICLE{sect1, + SHORTHAND = {AA}, + AUTHOR = {Aaron Adamson}, + TITLE = {Artificial Advice}, + PUBLISHER = {Aardvark Press}, + LOCATION = {Arlington}, + VOLUME = {4}, + YEAR = {1995}, + NOTE = STRING1 +} + +@ARTICLE{sect2, + SHORTHAND = {BB}, + AUTHOR = {Brian Britherthwaite}, + TITLE = {Best Barnacled Boat Bottoms}, + PUBLISHER = {British Bulldog Press}, + LOCATION = {Bridlington}, + YEAR = {2004}, +} + +@ARTICLE{sectall1, + AUTHOR = {Alan All}, + TITLE = {Alternative Alternations}, + PUBLISHER = {Average Aunt Press}, + LOCATION = {Allertron}, + YEAR = {2004}, +} + + +@PREAMBLE{"String for Preamble 2"}
\ No newline at end of file diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sections2.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections2.bib new file mode 100644 index 00000000000..1b9f3ff5be4 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections2.bib @@ -0,0 +1,19 @@ +@ARTICLE{sect3, + AUTHOR = {Clive Clumberton}, + TITLE = {Clumsy Cultural Caveats}, + SUBTITLE = {Counter-cultural Concepts}, + PUBLISHER = {Clapp and Clopp Press}, + LOCATION = {Cambridge}, + YEAR = {1914}, +} + +@ARTICLE{sect8, + SHORTHAND = {JJ}, + AUTHOR = {Jimmy Johnson}, + TITLE = {Jovial Jamborees}, + PUBLISHER = {Jasper and Jiff}, + LOCATION = {Johannesburg}, + YEAR = {1938}, +} + +@PREAMBLE{"String for Preamble 3"}
\ No newline at end of file diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sections3.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections3.bib new file mode 100644 index 00000000000..a2e365f6a88 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections3.bib @@ -0,0 +1,22 @@ +@STRING{STRING1 = {value2}} + +@BOOK{sect4, + SHORTHAND = {DDDD}, + AUTHOR = {Derek Ditherington and David Dumpton}, + TITLE = {Dangerous Dames}, + SUBTITLE = {Don't Dally Dude!}, + PUBLISHER = {Dright and Drought Press}, + LOCATION = {Dunbar}, + YEAR = {2003}, + NOTE = STRING1 +} + +@BOOK{sect5, + SHORTHAND = {EE}, + SORTKEY = {aaaaaaa}, + AUTHOR = {Edward E. Ethoxon}, + TITLE = {Eating Evil Enemies}, + PUBLISHER = {Ethical Encouragement Press}, + LOCATION = {Edinburgh}, + YEAR = {2007}, +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sections4.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections4.bib new file mode 100644 index 00000000000..41bb6ee5cfa --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sections4.bib @@ -0,0 +1,19 @@ +@BOOK{sect6, + SHORTHAND = {MMMM}, + AUTHOR = {Michael Mumford and Millie Mutherington}, + TITLE = {Malodourous Muffins}, + PUBLISHER = {Ming and Mink Press}, + LOCATION = {Manchester}, + YEAR = {2003}, +} + +@PREAMBLE{"String for Preamble 4"} + +@BOOK{sect7, + SHORTHAND = {PP}, + AUTHOR = {Percy Pilkington}, + TITLE = {Perhaps Penguins Prance}, + PUBLISHER = {Possible Prattle Press}, + LOCATION = {Pimlico}, + YEAR = {2007}, +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/set-dynamic.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/set-dynamic.bcf new file mode 100644 index 00000000000..9e4713abebd --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/set-dynamic.bcf @@ -0,0 +1,220 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">citeorder</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">sets.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey type="set" members="Dynamic1,Dynamic2,Dynamic3,missing1">DynSet</bcf:citekey> + <bcf:citekey>DynSet</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> + <!-- SECTION 1 --> + <bcf:bibdata section="1"> + <bcf:datasource type="file" datatype="bibtex">sets.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="1"> + <bcf:citekey>Dynamic3</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/set-legacy.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/set-legacy.bcf new file mode 100644 index 00000000000..8526c5a421d --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/set-legacy.bcf @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">citeorder</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">sets.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>Elias1955</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/set-static.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/set-static.bcf new file mode 100644 index 00000000000..c5eec22b50f --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/set-static.bcf @@ -0,0 +1,222 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">citeorder</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">sets.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>Static2</bcf:citekey> + <bcf:citekey>Static1</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> + <!-- SECTION 1 --> + <bcf:bibdata section="1"> + <bcf:datasource type="file" datatype="bibtex">sets.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="1"> + <bcf:citekey>Static2</bcf:citekey> + <bcf:citekey>Static3</bcf:citekey> + <bcf:citekey>Static4</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sets.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sets.bib new file mode 100644 index 00000000000..882248de313 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sets.bib @@ -0,0 +1,80 @@ +@SET{Elias1955, + ENTRYSET = {Elias1955a,Elias1955b}, + CROSSREF = {Elias1955a} +} + +% Also test of month hacking - should be forced to "03" by the bibtex driver +@ARTICLE{Elias1955a, + AUTHOR = {Elias, P.}, + TITLE = {Predictive coding--I}, + JOURNAL = {IRE Transactions on Information Theory}, + YEAR = {1955}, + VOLUME = {1}, + PAGES = {16-24}, + NUMBER = {1}, + MONTH = {March}, + DOI = {10.1109/TIT.1955.1055126}, + ENTRYSET = {Elias1955}, + ISSN = {0096-1000}, +} + +% Also test of month hacking - should be forced to "03" by the bibtex driver +@ARTICLE{Elias1955b, + AUTHOR = {Elias, P.}, + TITLE = {Predictive coding--II}, + JOURNAL = {IRE Transactions on Information Theory}, + YEAR = {1955}, + VOLUME = {1}, + PAGES = {24-33}, + NUMBER = {1}, + MONTH = {Mar.}, + DOI = {10.1109/TIT.1955.1055116}, + ENTRYSET = {Elias1955}, + ISSN = {0096-1000}, +} + +@SET{Static1, + ENTRYSET = {Static2, Static3, Static4, missing1}, + ANNOTATION = {Some notes} +} + +@BOOK{Static2, + AUTHOR = {Brian Bumble}, + TITLE = {Blessed Brains}, + YEAR = {2001}, + ANNOTATION = {Some Blessed Note} +} + +@BOOK{Static3, + AUTHOR = {Clive Crenellation}, + TITLE = {Castles and Crime}, + YEAR = {2002} +} + +@BOOK{Static4, + AUTHOR = {Derek Dingle}, + TITLE = {Dungeons, Dark and Dangerous}, + YEAR = {2005} +} + +@BOOK{Dynamic1, + AUTHOR = {Derek Dynamism}, + TITLE = {Doing Daring Deeds}, + YEAR = {2002}, + ANNOTATION = {Some Dynamic Note}, + SHORTHAND = {d1} +} + +@BOOK{Dynamic2, + AUTHOR = {Brian Bunting}, + TITLE = {Beautiful Birthdays}, + YEAR = {2010}, + SHORTHAND = {d2} +} + +@BOOK{Dynamic3, + AUTHOR = {Roger Regardless}, + TITLE = {Reckless Ravishings}, + YEAR = {2000}, + SHORTHAND = {d3} +}
\ No newline at end of file diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/skips.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/skips.bcf new file mode 100644 index 00000000000..e1a29d86543 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/skips.bcf @@ -0,0 +1,253 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="collection"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shorteditor</bcf:value> + <bcf:value order="2">editor</bcf:value> + <bcf:value order="3">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">labelalpha</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5" sort_direction="descending"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem substring_side="right" substring_width="4" order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1" pad_char="0">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + <bcf:sort order="7"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">skips.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>skip1</bcf:citekey> + <bcf:citekey>skip2</bcf:citekey> + <bcf:citekey>skip3</bcf:citekey> + <bcf:citekey>skip4</bcf:citekey> + <bcf:citekey>seta</bcf:citekey> + <bcf:citekey>noseta</bcf:citekey> + <bcf:citekey>nosetb</bcf:citekey> + <bcf:citekey>nosetc</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/skips.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/skips.bib new file mode 100644 index 00000000000..9dea603f097 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/skips.bib @@ -0,0 +1,81 @@ +@ARTICLE{skip1, + OPTIONS = {skipbib}, + AUTHOR = {John Doe}, + SHORTHAND = {AFS}, + TITLE = {Algorithms For Sorting}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1994}, +} + +@ARTICLE{skip2, + OPTIONS = {skiplos}, + SHORTHAND = {SA}, + AUTHOR = {John Doe}, + TITLE = {Sorting Algorithms}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1995}, +} + +@ARTICLE{skip3, + OPTIONS = {skiplos,skiplab}, + SHORTHAND = {SWA}, + AUTHOR = {John Doe}, + TITLE = {Sorting With Algorithms}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1934}, +} + +@ARTICLE{skip4, + OPTIONS = {dataonly}, + SHORTHAND = {AWS}, + AUTHOR = {John Doe}, + TITLE = {Algorithms Which Sort}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1932}, +} + +@SET{seta, + ENTRYSET = {set:membera,set:memberb,set:memberc} +} + +@BOOK{set:membera, + KEYWORDS = {key1, key2}, + AUTHOR = {Doe, John}, + TITLE = {Set Member A}, + DATE = {2010}, +} + +@BOOK{set:memberb, + AUTHOR = {Doe, John}, + TITLE = {Set Member B}, + DATE = {2010}, +} + +@BOOK{set:memberc, + AUTHOR = {Doe, John}, + TITLE = {Set Member C}, + DATE = {2010}, +} + +@BOOK{noseta, + AUTHOR = {Doe, John}, + TITLE = {Stand-Alone A}, + DATE = {2010}, +} + +@BOOK{nosetb, + AUTHOR = {Doe, John}, + TITLE = {Stand-Alone B}, + DATE = {2010}, +} + +@BOOK{nosetc, + AUTHOR = {Doe, John}, + TITLE = {Stand-Alone C}, + DATE = {2010}, +} + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-case.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-case.bcf new file mode 100644 index 00000000000..8b97e698103 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-case.bcf @@ -0,0 +1,233 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5" sortcase="1" sortupper="0"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">sort-case.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>CS1</bcf:citekey> + <bcf:citekey>CS2</bcf:citekey> + <bcf:citekey>CS3</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-case.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-case.bib new file mode 100644 index 00000000000..49c8366846c --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-case.bib @@ -0,0 +1,15 @@ +% Test of U::C case sensitivity and case ordering +@BOOK{CS1, + AUTHOR = {Albert, Edwin}, + TITLE = {TITLE} +} + +@BOOK{CS2, + AUTHOR = {albert, Edwin}, + TITLE = {title} +} + +@BOOK{CS3, + AUTHOR = {Albert, edwin}, + TITLE = {The title} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-complex.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-complex.bcf new file mode 100644 index 00000000000..0da52f388bf --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-complex.bcf @@ -0,0 +1,248 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="collection"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shorteditor</bcf:value> + <bcf:value order="2">editor</bcf:value> + <bcf:value order="3">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">labelalpha</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="7"> + <bcf:sortitem order="1" pad_side="left" pad_width="4" pad_char="0">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">sort.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>L1</bcf:citekey> + <bcf:citekey>L2</bcf:citekey> + <bcf:citekey>L3</bcf:citekey> + <bcf:citekey>L4</bcf:citekey> + <bcf:citekey>L5</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"/> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-order.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-order.bcf new file mode 100644 index 00000000000..785bb1512a2 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-order.bcf @@ -0,0 +1,218 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">citeorder</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">sort-order.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>L2</bcf:citekey> + <bcf:citekey>L1B</bcf:citekey> + <bcf:citekey>L1</bcf:citekey> + <bcf:citekey>L4</bcf:citekey> + <bcf:citekey>L3</bcf:citekey> + <bcf:citekey>L5</bcf:citekey> + <bcf:citekey>L1A</bcf:citekey> + <bcf:citekey>L7</bcf:citekey> + <bcf:citekey>L8</bcf:citekey> + <bcf:citekey>L6</bcf:citekey> + <bcf:citekey>L9</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-order.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-order.bib new file mode 100644 index 00000000000..81ef2f64eb1 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-order.bib @@ -0,0 +1,91 @@ +@ARTICLE{L1, + AUTHOR = {Aaron Adamson}, + TITLE = {Artificial Advice}, + PUBLISHER = {Aardvark Press}, + LOCATION = {Arlington}, + VOLUME = {4}, + YEAR = {1995}, +} + +@ARTICLE{L1A, + AUTHOR = {Aaron Adamson}, + TITLE = {Anarchic Ambidexstrous Anomalies}, + PUBLISHER = {Aardvark Press}, + LOCATION = {Arlington}, + VOLUME = {40}, + YEAR = {1995}, +} + +@ARTICLE{L1B, + AUTHOR = {Aaron Adazki}, + TITLE = {Average Attitudes Are Awful}, + PUBLISHER = {Aardvark Press}, + LOCATION = {Arlington}, + YEAR = {1984}, +} + +@ARTICLE{L2, + AUTHOR = {Brian Britherthwaite}, + TITLE = {Best Barnacled Boat Bottoms}, + PUBLISHER = {British Bulldog Press}, + LOCATION = {Bridlington}, + YEAR = {2004}, +} + +@ARTICLE{L3, + AUTHOR = {Clive Clumberton}, + TITLE = {Clumsy Cultural Caveats}, + SUBTITLE = {Counter-cultural Concepts}, + PUBLISHER = {Clapp and Clopp Press}, + LOCATION = {Cambridge}, + YEAR = {1914}, +} + +@BOOK{L4, + AUTHOR = {Derek Ditherington and David Dumpton}, + TITLE = {Dangerous Dames}, + SUBTITLE = {Don't Dally Dude!}, + PUBLISHER = {Dright and Drought Press}, + LOCATION = {Dunbar}, + YEAR = {2003}, +} + +@BOOK{L5, + SORTKEY = {aaaaaaa}, + AUTHOR = {Edward E. Ethoxon}, + TITLE = {Eating Evil Enemies}, + PUBLISHER = {Ethical Encouragement Press}, + LOCATION = {Edinburgh}, + YEAR = {2007}, +} + +@BOOK{L6, + AUTHOR = {Richard F. Rank}, + TITLE = {Ruminating on Rhubarb}, + PUBLISHER = {Red, Raw and Raucous}, + LOCATION = {edinburgh}, + YEAR = {2011}, +} + +@BOOK{L7, + AUTHOR = {Peter Pettigrew}, + TITLE = {The Pretending Peanuts Pout}, + PUBLISHER = {Nut Press}, + LOCATION = {Edinburgh}, + YEAR = {2010}, +} + +@BOOK{L8, + AUTHOR = {Lawrence Langour}, + TITLE = {Why Walnuts Won't}, + PUBLISHER = {Nut Press}, + LOCATION = {Edinburgh}, + YEAR = {2009}, +} + +@BOOK{L9, + AUTHOR = {Steven Sensible}, + TITLE = {Sorting Sucks Eggs}, + PUBLISHER = {Yolk Enterprises}, + LOCATION = {London} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-uc.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-uc.bcf new file mode 100644 index 00000000000..a5dbb7d234b --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-uc.bcf @@ -0,0 +1,239 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">sort-uc.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>LS1</bcf:citekey> + <bcf:citekey>LS2</bcf:citekey> + <bcf:citekey>LS3</bcf:citekey> + <bcf:citekey>LS4</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + <bcf:sorting> + <bcf:sort order="1"> + <bcf:sortitem order="1">shorthand</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-uc.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-uc.bib new file mode 100644 index 00000000000..08bd995afb5 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort-uc.bib @@ -0,0 +1,37 @@ +% Test of U::C tailoring - Swedish - in UCA, å is sorted after ä but should be before +@BOOK{LS1, + AUTHOR = {Slippery, Zänny}, + TITLE = {Silent Slippers}, + PUBLISHER = {Footwear Folios}, + LOCATION = {London}, + YEAR = {1932}, + SHORTHAND = {SZä} +} + +@BOOK{LS2, + AUTHOR = {Slippery, Zånny}, + TITLE = {People Prefer Packages to Post}, + PUBLISHER = {Terrible Typists}, + LOCATION = {Grimsby}, + YEAR = {1945}, + SHORTHAND = {SZå} +} + +@BOOK{LS3, + AUTHOR = {Slippery, Zönny}, + TITLE = {Last Lingering Lemons}, + PUBLISHER = {Fruit Folios}, + LOCATION = {Catterick}, + YEAR = {1966}, + SHORTHAND = {SZo} +} + +% Upper before lower false +@BOOK{LS4, + AUTHOR = {Slippery, Zönny}, + TITLE = {last lingering lemons}, + PUBLISHER = {Fruit Folios}, + LOCATION = {Catterick}, + YEAR = {1966}, + SHORTHAND = {SZo} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sort.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort.bib new file mode 100644 index 00000000000..38384d53b18 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sort.bib @@ -0,0 +1,39 @@ +@BOOK{L1, + AUTHOR = {John Doe}, + TITLE = {Algorithms For Sorting}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1995}, +} + +@BOOK{L2, + AUTHOR = {John Doe}, + TITLE = {Sorting Algorithms}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1995}, +} + +@BOOK{L3, + AUTHOR = {John Doe}, + TITLE = {More and More Algorithms}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1995}, +} + +@BOOK{L4, + AUTHOR = {John Doe and others}, + TITLE = {Some title about sorting}, + PUBLISHER = {Another press}, + LOCATION = {Cambridge}, + YEAR = {1995}, +} + +@BOOK{L5, + AUTHOR = {John Doe and others}, + TITLE = {Some other title about sorting}, + PUBLISHER = {Another press}, + LOCATION = {Cambridge}, + YEAR = {1995}, +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sortlists.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/sortlists.bcf new file mode 100644 index 00000000000..ca553f09f5a --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sortlists.bcf @@ -0,0 +1,282 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">citeorder</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">sortlists.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>K1</bcf:citekey> + <bcf:citekey>K2</bcf:citekey> + <bcf:citekey>K3</bcf:citekey> + <bcf:citekey>K4</bcf:citekey> + <bcf:sectionlist label="lname" type="entry"> + <bcf:sorting> + <bcf:sort order="1"> + <bcf:sortitem order="1">author</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + <bcf:sectionlist label="lnamef1" type="entry"> + <bcf:filter type="field">publisher</bcf:filter> + <bcf:filter type="notfield">verba</bcf:filter> + <bcf:sorting> + <bcf:sort order="1"> + <bcf:sortitem order="1">author</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + <bcf:sectionlist label="lnamef2" type="entry"> + <bcf:filter type="keyword">key2</bcf:filter> + <bcf:sorting> + <bcf:sort order="1"> + <bcf:sortitem order="1">author</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + <bcf:sectionlist label="lnamef3" type="entry"> + <bcf:filter type="nottype">thesis</bcf:filter> + <bcf:filter type="notkeyword">key1</bcf:filter> + <bcf:sorting> + <bcf:sort order="1"> + <bcf:sortitem order="1">author</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + <bcf:sectionlist label="lnamef4" type="entry"> + <bcf:filter type="notfield">verba</bcf:filter> + <bcf:filter type="subtype">rubbish</bcf:filter> + <bcf:sorting> + <bcf:sort order="1"> + <bcf:sortitem order="1">author</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + <bcf:sectionlist label="lnamef5" type="entry"> + <bcf:filter type="field">author</bcf:filter> + <bcf:orfilter> + <bcf:filter type="field">verba</bcf:filter> + <bcf:filter type="subtype">rubbish</bcf:filter> + </bcf:orfilter> + <bcf:sorting> + <bcf:sort order="1"> + <bcf:sortitem order="1">author</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + <bcf:sectionlist label="lyear" type="entry"> + <bcf:sorting> + <bcf:sort order="1" sort_direction="descending"> + <bcf:sortitem order="1">year</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + <bcf:sectionlist label="ltitle" type="entry"> + <bcf:sorting> + <bcf:sort order="1"> + <bcf:sortitem order="1">title</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + <bcf:sectionlist label="ltitle" type="entry"> + <bcf:sorting> + <bcf:sort order="1"> + <bcf:sortitem order="1">publisher</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/sortlists.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/sortlists.bib new file mode 100644 index 00000000000..5703ab37c98 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/sortlists.bib @@ -0,0 +1,33 @@ +@ARTICLE{K1, + AUTHOR = {Aaron Adamson}, + TITLE = {Artificial Advice}, + PUBLISHER = {Aardvark Press}, + LOCATION = {Arlington}, + YEAR = {1995}, + VERBA = {String} +} + +@BOOK{K2, + AUTHOR = {Brian Bully}, + TITLE = {Lucid Lamas}, + PUBLISHER = {Aardvark Press}, + LOCATION = {Arlington}, + YEAR = {1971}, +} + +@PHDTHESIS{K3, + ENTRYSUBTYPE = {rubbish}, + AUTHOR = {Richard Radiator}, + TITLE = {Zenos Things}, + LOCATION = {Cambridge}, + YEAR = {1953}, +} + +@BOOK{K4, + AUTHOR = {Linda Lucid}, + TITLE = {Decrepit Delineations}, + PUBLISHER = {Stuff and Nonesense Press}, + LOCATION = {London}, + YEAR = {1999}, + KEYWORDS = {key1, key2} +} diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-constraints.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-constraints.bcf new file mode 100644 index 00000000000..38583e10010 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-constraints.bcf @@ -0,0 +1,630 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">author</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <bcf:structure> + <bcf:datetypes> + <bcf:datetype>date</bcf:datetype> + <bcf:datetype>origdate</bcf:datetype> + <bcf:datetype>eventdate</bcf:datetype> + <bcf:datetype>urldate</bcf:datetype> + </bcf:datetypes> + <bcf:entrytypes> + <bcf:entrytype>eta</bcf:entrytype> + <bcf:entrytype>etb</bcf:entrytype> + <bcf:entrytype>etc</bcf:entrytype> + <bcf:entrytype>etd</bcf:entrytype> + <bcf:entrytype>misc</bcf:entrytype> + </bcf:entrytypes> + <bcf:fields> + <bcf:field fieldtype="field" datatype="literal">abstract</bcf:field> + <bcf:field fieldtype="field" datatype="literal">addendum</bcf:field> + <bcf:field fieldtype="list" datatype="name">afterword</bcf:field> + <bcf:field fieldtype="field" datatype="literal">annotation</bcf:field> + <bcf:field fieldtype="list" datatype="name">annotator</bcf:field> + <bcf:field fieldtype="list" datatype="name">author</bcf:field> + <bcf:field fieldtype="field" datatype="key">authortype</bcf:field> + <bcf:field fieldtype="list" datatype="name">bookauthor</bcf:field> + <bcf:field fieldtype="field" datatype="key">bookpagination</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booksubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">chapter</bcf:field> + <bcf:field fieldtype="list" datatype="name">commentator</bcf:field> + <bcf:field fieldtype="field" datatype="literal">crossref</bcf:field> + <bcf:field fieldtype="field" datatype="literal">day</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">doi</bcf:field> + <bcf:field fieldtype="field" datatype="literal">edition</bcf:field> + <bcf:field fieldtype="list" datatype="name">editor</bcf:field> + <bcf:field fieldtype="list" datatype="name">editora</bcf:field> + <bcf:field fieldtype="field" datatype="key">editoratype</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorb</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorbtype</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorc</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorctype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editortype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eid</bcf:field> + <bcf:field fieldtype="field" datatype="literal">endday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">endmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">endyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">entryset</bcf:field> + <bcf:field fieldtype="field" datatype="literal">entrysubtype</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">eprint</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprintclass</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprinttype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventendday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">eventendyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">execute</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">file</bcf:field> + <bcf:field fieldtype="list" datatype="name">foreword</bcf:field> + <bcf:field fieldtype="field" datatype="literal">gender</bcf:field> + <bcf:field fieldtype="list" datatype="name">holder</bcf:field> + <bcf:field fieldtype="field" datatype="literal">howpublished</bcf:field> + <bcf:field fieldtype="field" datatype="literal">hyphenation</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indexsorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indextitle</bcf:field> + <bcf:field fieldtype="list" datatype="literal">institution</bcf:field> + <bcf:field fieldtype="list" datatype="name">introduction</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isan</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isbn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">ismn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isrn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issue</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuesubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuetitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">iswc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journalsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journaltitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">keywords</bcf:field> + <bcf:field fieldtype="field" datatype="literal">label</bcf:field> + <bcf:field fieldtype="list" datatype="key">language</bcf:field> + <bcf:field fieldtype="field" datatype="literal">library</bcf:field> + <bcf:field fieldtype="list" datatype="literal">lista</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listb</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listc</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listd</bcf:field> + <bcf:field fieldtype="list" datatype="literal">liste</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listf</bcf:field> + <bcf:field fieldtype="list" datatype="literal">location</bcf:field> + <bcf:field fieldtype="field" datatype="literal">mainsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="integer">month</bcf:field> + <bcf:field fieldtype="list" datatype="name">namea</bcf:field> + <bcf:field fieldtype="field" datatype="literal">nameaddon</bcf:field> + <bcf:field fieldtype="field" datatype="key">nameatype</bcf:field> + <bcf:field fieldtype="list" datatype="name">nameb</bcf:field> + <bcf:field fieldtype="field" datatype="key">namebtype</bcf:field> + <bcf:field fieldtype="list" datatype="name">namec</bcf:field> + <bcf:field fieldtype="field" datatype="key">namectype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">note</bcf:field> + <bcf:field fieldtype="field" datatype="literal">number</bcf:field> + <bcf:field fieldtype="field" datatype="literal">options</bcf:field> + <bcf:field fieldtype="list" datatype="literal">organization</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origendday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">origendyear</bcf:field> + <bcf:field fieldtype="field" datatype="key">origlanguage</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origlocation</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origmonth</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origpublisher</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origyear</bcf:field> + <bcf:field fieldtype="field" datatype="range">pages</bcf:field> + <bcf:field fieldtype="field" datatype="literal">pagetotal</bcf:field> + <bcf:field fieldtype="field" datatype="key">pagination</bcf:field> + <bcf:field fieldtype="field" datatype="literal">part</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">presort</bcf:field> + <bcf:field fieldtype="list" datatype="literal">publisher</bcf:field> + <bcf:field fieldtype="field" datatype="key">pubstate</bcf:field> + <bcf:field fieldtype="field" datatype="literal">reprinttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">series</bcf:field> + <bcf:field fieldtype="list" datatype="name">shortauthor</bcf:field> + <bcf:field fieldtype="list" datatype="name">shorteditor</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorthand</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorthandintro</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shortjournal</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shortseries</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortkey</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortname</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">subtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">title</bcf:field> + <bcf:field fieldtype="field" datatype="literal">titleaddon</bcf:field> + <bcf:field fieldtype="list" datatype="name">translator</bcf:field> + <bcf:field fieldtype="field" datatype="key">type</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">url</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usera</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userb</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userd</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usere</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userf</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlendday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">urlendyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">venue</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verba</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbb</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">version</bcf:field> + <bcf:field fieldtype="field" datatype="literal">volume</bcf:field> + <bcf:field fieldtype="field" datatype="literal">volumes</bcf:field> + <bcf:field fieldtype="field" datatype="literal">xref</bcf:field> + <bcf:field fieldtype="field" datatype="literal">year</bcf:field> + <bcf:field fieldtype="field" datatype="literal">fielda</bcf:field> + <bcf:field fieldtype="field" datatype="literal">fieldb</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field1</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field2</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field3</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field4</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field5</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field6</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field7</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field8</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field9</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field10</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field11</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field12</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field13</bcf:field> + <bcf:field fieldtype="field" datatype="literal">field14</bcf:field> + </bcf:fields> + <bcf:entryfields> + <bcf:entrytype>ALL</bcf:entrytype> + <bcf:field>abstract</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>set</bcf:entrytype> + <bcf:field>ALL</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>eta</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>etb</bcf:entrytype> + <bcf:entrytype>etc</bcf:entrytype> + <bcf:entrytype>etd</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>fielda</bcf:field> + <bcf:field>fieldb</bcf:field> + <bcf:field>field1</bcf:field> + <bcf:field>field2</bcf:field> + <bcf:field>field3</bcf:field> + <bcf:field>field4</bcf:field> + <bcf:field>field5</bcf:field> + <bcf:field>field6</bcf:field> + <bcf:field>field7</bcf:field> + <bcf:field>field8</bcf:field> + <bcf:field>field9</bcf:field> + <bcf:field>field10</bcf:field> + <bcf:field>field11</bcf:field> + <bcf:field>field12</bcf:field> + <bcf:field>field13</bcf:field> + <bcf:field>field14</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>journaltitle</bcf:field> + </bcf:entryfields> + <bcf:constraints> + <bcf:entrytype>ALL</bcf:entrytype> + <bcf:constraint type="data" datatype="integer" rangemin="1" rangemax="12"> + <bcf:field>month</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>eta</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>etb</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>journaltitle</bcf:field> + </bcf:constraint> + <bcf:constraint type="data" datatype="integer" rangemin="5" rangemax="12"> + <bcf:field>field1</bcf:field> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="all"> + <bcf:field>field2</bcf:field> + <bcf:field>field3</bcf:field> + <bcf:field>field4</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="none"> + <bcf:field>field5</bcf:field> + <bcf:field>field6</bcf:field> + </bcf:consequent> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="all"> + <bcf:field>field1</bcf:field> + <bcf:field>field2</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="one"> + <bcf:field>field7</bcf:field> + <bcf:field>field8</bcf:field> + </bcf:consequent> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="all"> + <bcf:field>field5</bcf:field> + <bcf:field>field6</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="all"> + <bcf:field>field9</bcf:field> + <bcf:field>field10</bcf:field> + </bcf:consequent> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>etc</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>journaltitle</bcf:field> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="one"> + <bcf:field>field2</bcf:field> + <bcf:field>field3</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="none"> + <bcf:field>field4</bcf:field> + </bcf:consequent> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="one"> + <bcf:field>field5</bcf:field> + <bcf:field>field6</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="none"> + <bcf:field>field7</bcf:field> + </bcf:consequent> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="one"> + <bcf:field>field2</bcf:field> + <bcf:field>field3</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="all"> + <bcf:field>field8</bcf:field> + <bcf:field>field9</bcf:field> + </bcf:consequent> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="one"> + <bcf:field>field10</bcf:field> + <bcf:field>field11</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="one"> + <bcf:field>field5</bcf:field> + </bcf:consequent> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>etd</bcf:entrytype> + <bcf:entrytype>etc</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:fieldor> + <bcf:field>fielda</bcf:field> + <bcf:field>fieldb</bcf:field> + </bcf:fieldor> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>etd</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>journaltitle</bcf:field> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="none"> + <bcf:field>field2</bcf:field> + <bcf:field>field3</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="none"> + <bcf:field>field4</bcf:field> + </bcf:consequent> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="none"> + <bcf:field>field7</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="none"> + <bcf:field>field5</bcf:field> + </bcf:consequent> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="none"> + <bcf:field>field8</bcf:field> + <bcf:field>field9</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="one"> + <bcf:field>field10</bcf:field> + <bcf:field>field11</bcf:field> + </bcf:consequent> + </bcf:constraint> + <bcf:constraint type="conditional"> + <bcf:antecedent quant="none"> + <bcf:field>field6</bcf:field> + </bcf:antecedent> + <bcf:consequent quant="all"> + <bcf:field>field12</bcf:field> + <bcf:field>field13</bcf:field> + </bcf:consequent> + </bcf:constraint> + </bcf:constraints> + </bcf:structure> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">structure-constraints.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>c1</bcf:citekey> + <bcf:citekey>c2</bcf:citekey> + <bcf:citekey>c3</bcf:citekey> + <bcf:citekey>c4</bcf:citekey> + <bcf:citekey>c5</bcf:citekey> + <bcf:citekey>c6</bcf:citekey> + <bcf:citekey>c7</bcf:citekey> + <bcf:citekey>c8</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-constraints.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-constraints.bib new file mode 100644 index 00000000000..98af5ff9a88 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-constraints.bib @@ -0,0 +1,114 @@ +% Not a valid type +@BADTYPE{c1, + AUTHOR = {Clive Constraint}, + TITLE = {Limits of Things}, + DATE = {2003-10-01}, +} + +% Completely nonexistent field and field (alias) not valid for this type +% Testing a field valid for all entrytypes (ABSTRACT) +% Testing missing mandatory field +@ETA{c2, + TITLE = {Limits of Things}, + DATE = {2003-10-01}, + BADFIELD = {Something}, + JOURNAL = {Some journal}, + ABSTRACT = {Some text} +} + +% Datatype constraint - wrong month format +% Randomly named field +@ETB{c3, + AUTHOR = {Clive Constraint}, + TITLE = {Limits of Things}, + JOURNAL = {Some journal}, + YEAR = {2003}, + MONTH = {WRONG FORMAT}, + FIELD1 = {7} +} + +% Datatype constraint - wrong month format (range) +% Randomly named field with custom range (integer) +@ETB{c4, + AUTHOR = {Clive Constraint}, + TITLE = {Limits of Things}, + JOURNAL = {Some journal}, + YEAR = {2003}, + MONTH = {14}, + FIELD1 = {4} +} + +% Conditional checks +% XOR mandatory check - DATE and YEAR are both defined +% all 2,3,4 -> none 5,6 (fail) +@ETB{c5, + AUTHOR = {Clive Constraint}, + TITLE = {Limits of Things}, + JOURNAL = {Some journal}, + DATE = {2004-01-02}, + YEAR = {2003}, + FIELD2 = {a}, + FIELD3 = {a}, + FIELD4 = {a}, + FIELD5 = {a}, + FIELD6 = {a}, +} + +% Conditional checks +% all 2,3,4 -> none 5,6 (pass) (because antecedent is not satisfied) +% all 1,2 -> one 7,8 (fail) +% all 5,6 -> all 9,10 (fail) +@ETB{c6, + AUTHOR = {Clive Constraint}, + TITLE = {Limits of Things}, + JOURNAL = {Some journal}, + YEAR = {2003}, + FIELD1 = {8}, + FIELD2 = {a}, + FIELD3 = {a}, + FIELD5 = {a}, + FIELD6 = {a}, + FIELD9 = {a} +} + +% Conditional checks +% one 2,3 -> none 4 (pass) +% one 5,6 -> none 7 (fail) +% one 2,3 -> all 8,9 (pass) +% one 10,11 -> one 5 (pass) +% Mandatory OR check - one of FIELDA or FIELDB must be present (fail) +@ETC{c7, + AUTHOR = {Clive Constraint}, + TITLE = {Limits of Things}, + JOURNAL = {Some journal}, + YEAR = {2003}, + FIELD2 = {a}, + FIELD3 = {a}, + FIELD5 = {a}, + FIELD7 = {a}, + FIELD8 = {a}, + FIELD9 = {a}, + FIELD11 = {a}, +} + +% Conditional checks +% none 2,3 -> none 4 (fail) +% none 7 -> none 5 (pass) as antecedent is false +% none 8,9 -> one 10,11 (fail) +% none 6 -> all 12,13 (fail) +% Mandatory OR check - one of FIELDA or FIELDB must be present +% (both are, testing different from XOR) (pass) +@ETD{c8, + AUTHOR = {Clive Constraint}, + TITLE = {Limits of Things}, + JOURNAL = {Some journal}, + YEAR = {2003}, + FIELD4 = {a}, + FIELD5 = {a}, + FIELD7 = {a}, + FIELD12 = {a}, + FIELDA = {a}, + FIELDB = {a}, +} + + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-dateformats.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-dateformats.bcf new file mode 100644 index 00000000000..17162f4ce49 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-dateformats.bcf @@ -0,0 +1,1414 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?> +<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?> +<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex"> + <!-- OPTIONS --> + <bcf:options component="biber" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>bblencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>bibencoding</bcf:key> + <bcf:value>utf8</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>debug</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>mincrossrefs</bcf:key> + <bcf:value>2</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortcase</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortupper</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="global"> + <bcf:option type="singlevalued"> + <bcf:key>alphaothers</bcf:key> + <bcf:value>\textbf{+}</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelalpha</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shortauthor</bcf:value> + <bcf:value order="2">author</bcf:value> + <bcf:value order="3">shorteditor</bcf:value> + <bcf:value order="4">editor</bcf:value> + <bcf:value order="5">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>labelyear</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="multivalued"> + <bcf:key>labelyearspec</bcf:key> + <bcf:value order="1">year</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxitems</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>maxnames</bcf:key> + <bcf:value>3</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minitems</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>minnames</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>singletitle</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortalphaothers</bcf:key> + <bcf:value>+</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>sortlos</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>terseinits</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>uniquename</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useauthor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>1</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useprefix</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>usetranslator</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <bcf:options component="biblatex" type="collection"> + <bcf:option type="multivalued"> + <bcf:key>labelnamespec</bcf:key> + <bcf:value order="1">shorteditor</bcf:value> + <bcf:value order="2">editor</bcf:value> + <bcf:value order="3">translator</bcf:value> + </bcf:option> + <bcf:option type="singlevalued"> + <bcf:key>useeditor</bcf:key> + <bcf:value>0</bcf:value> + </bcf:option> + </bcf:options> + <!-- CROSSREF --> + <bcf:inheritance> + <bcf:defaults inherit_all="true" override_target="false"> + </bcf:defaults> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="author" target="author"/> + <bcf:field source="author" target="bookauthor"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvbook" target="book"/> + <bcf:type_pair source="mvbook" target="inbook"/> + <bcf:type_pair source="mvbook" target="bookinbook"/> + <bcf:type_pair source="mvbook" target="suppbook"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvcollection" target="collection"/> + <bcf:type_pair source="mvcollection" target="incollection"/> + <bcf:type_pair source="mvcollection" target="suppcollection"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvproceedings" target="proceedings"/> + <bcf:type_pair source="mvproceedings" target="inproceedings"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="mvreference" target="reference"/> + <bcf:type_pair source="mvreference" target="inreference"/> + <bcf:field source="title" target="maintitle"/> + <bcf:field source="subtitle" target="mainsubtitle"/> + <bcf:field source="titleaddon" target="maintitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="book" target="inbook"/> + <bcf:type_pair source="book" target="bookinbook"/> + <bcf:type_pair source="book" target="suppbook"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="collection" target="incollection"/> + <bcf:type_pair source="collection" target="suppcollection"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="reference" target="inreference"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="proceedings" target="inproceedings"/> + <bcf:field source="title" target="booktitle"/> + <bcf:field source="subtitle" target="booksubtitle"/> + <bcf:field source="titleaddon" target="booktitleaddon"/> + </bcf:inherit> + <bcf:inherit> + <bcf:type_pair source="periodical" target="article"/> + <bcf:type_pair source="periodical" target="suppperiodical"/> + <bcf:field source="title" target="journaltitle"/> + <bcf:field source="subtitle" target="journalsubtitle"/> + </bcf:inherit> + </bcf:inheritance> + <!-- SORTING --> + <bcf:sorting> + <bcf:presort>mm</bcf:presort> + <bcf:sort order="1"> + <bcf:sortitem order="1">presort</bcf:sortitem> + </bcf:sort> + <bcf:sort order="2" final="1"> + <bcf:sortitem order="1">sortkey</bcf:sortitem> + </bcf:sort> + <bcf:sort order="3"> + <bcf:sortitem order="1">labelalpha</bcf:sortitem> + </bcf:sort> + <bcf:sort order="4"> + <bcf:sortitem order="1">sortname</bcf:sortitem> + <bcf:sortitem order="2">author</bcf:sortitem> + <bcf:sortitem order="3">editor</bcf:sortitem> + <bcf:sortitem order="4">translator</bcf:sortitem> + <bcf:sortitem order="5">sorttitle</bcf:sortitem> + <bcf:sortitem order="6">title</bcf:sortitem> + </bcf:sort> + <bcf:sort order="5" sort_direction="descending"> + <bcf:sortitem order="1">sortyear</bcf:sortitem> + <bcf:sortitem substring_side="right" substring_width="4" order="2">year</bcf:sortitem> + </bcf:sort> + <bcf:sort order="6"> + <bcf:sortitem order="1" pad_char="0">volume</bcf:sortitem> + <bcf:sortitem order="2">0000</bcf:sortitem> + </bcf:sort> + <bcf:sort order="7"> + <bcf:sortitem order="1">sorttitle</bcf:sortitem> + <bcf:sortitem order="2">title</bcf:sortitem> + </bcf:sort> + </bcf:sorting> + <bcf:structure> + <bcf:datetypes> + <bcf:datetype>date</bcf:datetype> + <bcf:datetype>origdate</bcf:datetype> + <bcf:datetype>eventdate</bcf:datetype> + <bcf:datetype>urldate</bcf:datetype> + </bcf:datetypes> + <bcf:entrytypes> + <bcf:entrytype>article</bcf:entrytype> + <bcf:entrytype>artwork</bcf:entrytype> + <bcf:entrytype>audio</bcf:entrytype> + <bcf:entrytype>bibnote</bcf:entrytype> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>commentary</bcf:entrytype> + <bcf:entrytype>customa</bcf:entrytype> + <bcf:entrytype>customb</bcf:entrytype> + <bcf:entrytype>customc</bcf:entrytype> + <bcf:entrytype>customd</bcf:entrytype> + <bcf:entrytype>custome</bcf:entrytype> + <bcf:entrytype>customf</bcf:entrytype> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:entrytype>image</bcf:entrytype> + <bcf:entrytype>jurisdiction</bcf:entrytype> + <bcf:entrytype>legal</bcf:entrytype> + <bcf:entrytype>legislation</bcf:entrytype> + <bcf:entrytype>letter</bcf:entrytype> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>movie</bcf:entrytype> + <bcf:entrytype>music</bcf:entrytype> + <bcf:entrytype>online</bcf:entrytype> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:entrytype>performance</bcf:entrytype> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>report</bcf:entrytype> + <bcf:entrytype>review</bcf:entrytype> + <bcf:entrytype>set</bcf:entrytype> + <bcf:entrytype>software</bcf:entrytype> + <bcf:entrytype>standard</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:entrytype>video</bcf:entrytype> + </bcf:entrytypes> + <bcf:fields> + <bcf:field fieldtype="field" datatype="literal">abstract</bcf:field> + <bcf:field fieldtype="field" datatype="literal">addendum</bcf:field> + <bcf:field fieldtype="list" datatype="name">afterword</bcf:field> + <bcf:field fieldtype="field" datatype="literal">annotation</bcf:field> + <bcf:field fieldtype="list" datatype="name">annotator</bcf:field> + <bcf:field fieldtype="list" datatype="name">author</bcf:field> + <bcf:field fieldtype="field" datatype="key">authortype</bcf:field> + <bcf:field fieldtype="list" datatype="name">bookauthor</bcf:field> + <bcf:field fieldtype="field" datatype="key">bookpagination</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booksubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">booktitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="literal">chapter</bcf:field> + <bcf:field fieldtype="list" datatype="name">commentator</bcf:field> + <bcf:field fieldtype="field" datatype="literal">crossref</bcf:field> + <bcf:field fieldtype="field" datatype="literal">day</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">doi</bcf:field> + <bcf:field fieldtype="field" datatype="literal">edition</bcf:field> + <bcf:field fieldtype="list" datatype="name">editor</bcf:field> + <bcf:field fieldtype="list" datatype="name">editora</bcf:field> + <bcf:field fieldtype="field" datatype="key">editoratype</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorb</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorbtype</bcf:field> + <bcf:field fieldtype="list" datatype="name">editorc</bcf:field> + <bcf:field fieldtype="field" datatype="key">editorctype</bcf:field> + <bcf:field fieldtype="field" datatype="key">editortype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eid</bcf:field> + <bcf:field fieldtype="field" datatype="literal">endday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">endmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">endyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">entryset</bcf:field> + <bcf:field fieldtype="field" datatype="literal">entrysubtype</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">eprint</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprintclass</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eprinttype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventendday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">eventendyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">eventyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">execute</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">file</bcf:field> + <bcf:field fieldtype="list" datatype="name">foreword</bcf:field> + <bcf:field fieldtype="field" datatype="literal">gender</bcf:field> + <bcf:field fieldtype="list" datatype="name">holder</bcf:field> + <bcf:field fieldtype="field" datatype="literal">howpublished</bcf:field> + <bcf:field fieldtype="field" datatype="literal">hyphenation</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indexsorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">indextitle</bcf:field> + <bcf:field fieldtype="list" datatype="literal">institution</bcf:field> + <bcf:field fieldtype="list" datatype="name">introduction</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isan</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isbn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">ismn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">isrn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issn</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issue</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuesubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">issuetitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">iswc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journalsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">journaltitle</bcf:field> + <bcf:field fieldtype="field" datatype="special">keywords</bcf:field> + <bcf:field fieldtype="field" datatype="literal">label</bcf:field> + <bcf:field fieldtype="list" datatype="key">language</bcf:field> + <bcf:field fieldtype="field" datatype="literal">library</bcf:field> + <bcf:field fieldtype="list" datatype="literal">lista</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listb</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listc</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listd</bcf:field> + <bcf:field fieldtype="list" datatype="literal">liste</bcf:field> + <bcf:field fieldtype="list" datatype="literal">listf</bcf:field> + <bcf:field fieldtype="list" datatype="literal">location</bcf:field> + <bcf:field fieldtype="field" datatype="literal">mainsubtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">maintitleaddon</bcf:field> + <bcf:field fieldtype="field" datatype="integer">month</bcf:field> + <bcf:field fieldtype="list" datatype="name">namea</bcf:field> + <bcf:field fieldtype="field" datatype="literal">nameaddon</bcf:field> + <bcf:field fieldtype="field" datatype="key">nameatype</bcf:field> + <bcf:field fieldtype="list" datatype="name">nameb</bcf:field> + <bcf:field fieldtype="field" datatype="key">namebtype</bcf:field> + <bcf:field fieldtype="list" datatype="name">namec</bcf:field> + <bcf:field fieldtype="field" datatype="key">namectype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">note</bcf:field> + <bcf:field fieldtype="field" datatype="literal">number</bcf:field> + <bcf:field fieldtype="field" datatype="special">options</bcf:field> + <bcf:field fieldtype="list" datatype="literal">organization</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origendday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">origendyear</bcf:field> + <bcf:field fieldtype="field" datatype="key">origlanguage</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origlocation</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origmonth</bcf:field> + <bcf:field fieldtype="list" datatype="literal">origpublisher</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">origyear</bcf:field> + <bcf:field fieldtype="field" datatype="range">pages</bcf:field> + <bcf:field fieldtype="field" datatype="literal">pagetotal</bcf:field> + <bcf:field fieldtype="field" datatype="key">pagination</bcf:field> + <bcf:field fieldtype="field" datatype="literal">part</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">presort</bcf:field> + <bcf:field fieldtype="list" datatype="literal">publisher</bcf:field> + <bcf:field fieldtype="field" datatype="key">pubstate</bcf:field> + <bcf:field fieldtype="field" datatype="literal">related</bcf:field> + <bcf:field fieldtype="field" datatype="literal">relatedtype</bcf:field> + <bcf:field fieldtype="field" datatype="literal">reprinttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">series</bcf:field> + <bcf:field fieldtype="list" datatype="name">shortauthor</bcf:field> + <bcf:field fieldtype="list" datatype="name">shorteditor</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorthand</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorthandintro</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shortjournal</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shortseries</bcf:field> + <bcf:field fieldtype="field" datatype="literal">shorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortkey</bcf:field> + <bcf:field fieldtype="list" datatype="name" skip_output="true">sortname</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sorttitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal" skip_output="true">sortyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">subtitle</bcf:field> + <bcf:field fieldtype="field" datatype="literal">title</bcf:field> + <bcf:field fieldtype="field" datatype="literal">titleaddon</bcf:field> + <bcf:field fieldtype="list" datatype="name">translator</bcf:field> + <bcf:field fieldtype="field" datatype="key">type</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">url</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usera</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userb</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userd</bcf:field> + <bcf:field fieldtype="field" datatype="literal">usere</bcf:field> + <bcf:field fieldtype="field" datatype="literal">userf</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlendday</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlendmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal" nullok="true">urlendyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlmonth</bcf:field> + <bcf:field fieldtype="field" datatype="literal">urlyear</bcf:field> + <bcf:field fieldtype="field" datatype="literal">venue</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verba</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbb</bcf:field> + <bcf:field fieldtype="field" datatype="verbatim">verbc</bcf:field> + <bcf:field fieldtype="field" datatype="literal">version</bcf:field> + <bcf:field fieldtype="field" datatype="literal">volume</bcf:field> + <bcf:field fieldtype="field" datatype="literal">volumes</bcf:field> + <bcf:field fieldtype="field" datatype="literal">xref</bcf:field> + <bcf:field fieldtype="field" datatype="literal">year</bcf:field> + </bcf:fields> + <bcf:entryfields> + <bcf:entrytype>ALL</bcf:entrytype> + <bcf:field>abstract</bcf:field> + <bcf:field>annotation</bcf:field> + <bcf:field>authortype</bcf:field> + <bcf:field>bookpagination</bcf:field> + <bcf:field>crossref</bcf:field> + <bcf:field>entryset</bcf:field> + <bcf:field>entrysubtype</bcf:field> + <bcf:field>execute</bcf:field> + <bcf:field>file</bcf:field> + <bcf:field>gender</bcf:field> + <bcf:field>hyphenation</bcf:field> + <bcf:field>indextitle</bcf:field> + <bcf:field>indexsorttitle</bcf:field> + <bcf:field>isan</bcf:field> + <bcf:field>ismn</bcf:field> + <bcf:field>iswc</bcf:field> + <bcf:field>keywords</bcf:field> + <bcf:field>label</bcf:field> + <bcf:field>library</bcf:field> + <bcf:field>lista</bcf:field> + <bcf:field>listb</bcf:field> + <bcf:field>listc</bcf:field> + <bcf:field>listd</bcf:field> + <bcf:field>liste</bcf:field> + <bcf:field>listf</bcf:field> + <bcf:field>nameaddon</bcf:field> + <bcf:field>options</bcf:field> + <bcf:field>origday</bcf:field> + <bcf:field>origendday</bcf:field> + <bcf:field>origendmonth</bcf:field> + <bcf:field>origendyear</bcf:field> + <bcf:field>origmonth</bcf:field> + <bcf:field>origyear</bcf:field> + <bcf:field>origlocation</bcf:field> + <bcf:field>origpublisher</bcf:field> + <bcf:field>origtitle</bcf:field> + <bcf:field>pagination</bcf:field> + <bcf:field>presort</bcf:field> + <bcf:field>related</bcf:field> + <bcf:field>relatedtype</bcf:field> + <bcf:field>reprinttitle</bcf:field> + <bcf:field>shortauthor</bcf:field> + <bcf:field>shorteditor</bcf:field> + <bcf:field>shorthand</bcf:field> + <bcf:field>shorthandintro</bcf:field> + <bcf:field>shortjournal</bcf:field> + <bcf:field>shortseries</bcf:field> + <bcf:field>shorttitle</bcf:field> + <bcf:field>sortkey</bcf:field> + <bcf:field>sortname</bcf:field> + <bcf:field>sorttitle</bcf:field> + <bcf:field>sortyear</bcf:field> + <bcf:field>usera</bcf:field> + <bcf:field>userb</bcf:field> + <bcf:field>userc</bcf:field> + <bcf:field>userd</bcf:field> + <bcf:field>usere</bcf:field> + <bcf:field>userf</bcf:field> + <bcf:field>verba</bcf:field> + <bcf:field>verbb</bcf:field> + <bcf:field>verbc</bcf:field> + <bcf:field>xref</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>set</bcf:entrytype> + <bcf:field>ALL</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>article</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eid</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>issn</bcf:field> + <bcf:field>issue</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>journalsubtitle</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + <bcf:field>volume</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>bibnote</bcf:entrytype> + <bcf:field>note</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>book</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>bookauthor</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>afterword</bcf:field> + <bcf:field>annotator</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>commentator</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>foreword</bcf:field> + <bcf:field>introduction</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>origlanguage</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>translator</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>edition</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>online</bcf:entrytype> + <bcf:field>title</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + <bcf:field>year</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>holder</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>editora</bcf:field> + <bcf:field>editorb</bcf:field> + <bcf:field>editorc</bcf:field> + <bcf:field>editoratype</bcf:field> + <bcf:field>editorbtype</bcf:field> + <bcf:field>editorctype</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>issn</bcf:field> + <bcf:field>issue</bcf:field> + <bcf:field>issuesubtitle</bcf:field> + <bcf:field>issuetitle</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>volume</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>booksubtitle</bcf:field> + <bcf:field>booktitleaddon</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>eventday</bcf:field> + <bcf:field>eventendday</bcf:field> + <bcf:field>eventendmonth</bcf:field> + <bcf:field>eventendyear</bcf:field> + <bcf:field>eventmonth</bcf:field> + <bcf:field>eventyear</bcf:field> + <bcf:field>eventtitle</bcf:field> + <bcf:field>isbn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>mainsubtitle</bcf:field> + <bcf:field>maintitle</bcf:field> + <bcf:field>maintitleaddon</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>organization</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>part</bcf:field> + <bcf:field>publisher</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>series</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>venue</bcf:field> + <bcf:field>volume</bcf:field> + <bcf:field>volumes</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>report</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>isrn</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>number</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + <bcf:field>version</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>chapter</bcf:field> + <bcf:field>doi</bcf:field> + <bcf:field>eprint</bcf:field> + <bcf:field>eprintclass</bcf:field> + <bcf:field>eprinttype</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pages</bcf:field> + <bcf:field>pagetotal</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + </bcf:entryfields> + <bcf:entryfields> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>day</bcf:field> + <bcf:field>endday</bcf:field> + <bcf:field>endmonth</bcf:field> + <bcf:field>endyear</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>year</bcf:field> + <bcf:field>addendum</bcf:field> + <bcf:field>howpublished</bcf:field> + <bcf:field>language</bcf:field> + <bcf:field>location</bcf:field> + <bcf:field>month</bcf:field> + <bcf:field>note</bcf:field> + <bcf:field>pubstate</bcf:field> + <bcf:field>subtitle</bcf:field> + <bcf:field>titleaddon</bcf:field> + <bcf:field>url</bcf:field> + <bcf:field>urlday</bcf:field> + <bcf:field>urlendday</bcf:field> + <bcf:field>urlendmonth</bcf:field> + <bcf:field>urlendyear</bcf:field> + <bcf:field>urlmonth</bcf:field> + <bcf:field>urlyear</bcf:field> + </bcf:entryfields> + <bcf:constraints> + <bcf:entrytype>article</bcf:entrytype> + <bcf:entrytype>book</bcf:entrytype> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:entrytype>online</bcf:entrytype> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:entrytype>suppperiodical</bcf:entrytype> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:entrytype>report</bcf:entrytype> + <bcf:entrytype>set</bcf:entrytype> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:fieldxor> + <bcf:field coerce="true">date</bcf:field> + <bcf:field>year</bcf:field> + </bcf:fieldxor> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>set</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>entryset</bcf:field> + <bcf:field>crossref</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>article</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>journaltitle</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>book</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>inbook</bcf:entrytype> + <bcf:entrytype>bookinbook</bcf:entrytype> + <bcf:entrytype>suppbook</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>booklet</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:fieldor> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + </bcf:fieldor> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>collection</bcf:entrytype> + <bcf:entrytype>reference</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>incollection</bcf:entrytype> + <bcf:entrytype>suppcollection</bcf:entrytype> + <bcf:entrytype>inreference</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>manual</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>misc</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>online</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>title</bcf:field> + <bcf:field>url</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>patent</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>number</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>periodical</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>proceedings</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>inproceedings</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>editor</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>booktitle</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>report</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>thesis</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + <bcf:field>type</bcf:field> + <bcf:field>institution</bcf:field> + </bcf:constraint> + </bcf:constraints> + <bcf:constraints> + <bcf:entrytype>unpublished</bcf:entrytype> + <bcf:constraint type="mandatory"> + <bcf:field>author</bcf:field> + <bcf:field>title</bcf:field> + </bcf:constraint> + </bcf:constraints> + </bcf:structure> + <!-- SECTION 0 --> + <bcf:bibdata section="0"> + <bcf:datasource type="file" datatype="bibtex">structure-dateformats.bib</bcf:datasource> + </bcf:bibdata> + <bcf:section number="0"> + <bcf:citekey>L1</bcf:citekey> + <bcf:citekey>L2</bcf:citekey> + <bcf:citekey>L3</bcf:citekey> + <bcf:citekey>L4</bcf:citekey> + <bcf:citekey>L5</bcf:citekey> + <bcf:citekey>L6</bcf:citekey> + <bcf:citekey>L7</bcf:citekey> + <bcf:citekey>L8</bcf:citekey> + <bcf:citekey>L9</bcf:citekey> + <bcf:citekey>L10</bcf:citekey> + <bcf:citekey>L11</bcf:citekey> + <bcf:citekey>L12</bcf:citekey> + <bcf:citekey>L13</bcf:citekey> + <bcf:citekey>L14</bcf:citekey> + <bcf:citekey>L15</bcf:citekey> + <bcf:citekey>L16</bcf:citekey> + <bcf:citekey>L17</bcf:citekey> + <bcf:sectionlist label="MAIN" type="entry"/> + <bcf:sectionlist label="SHORTHANDS" type="shorthand"> + <bcf:filter type="field">shorthand</bcf:filter> + </bcf:sectionlist> + </bcf:section> +</bcf:controlfile> diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-dateformats.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-dateformats.bib new file mode 100644 index 00000000000..9686cb338e3 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/structure-dateformats.bib @@ -0,0 +1,151 @@ +% WRONG - ORIGDATE is mistyped, URLDATE is just wrong +% YEAR is messy and should be done by DATE but isn't wrong as such +% MONTH is out of range +@ARTICLE{L1, + AUTHOR = {John Doe}, + JOURNALTITLE = {Journal}, + TITLE = {Title 1}, + YEAR = {1995--1996}, + MONTH = {14}, + ORIGDATE = {1985-1030}, + URLDATE = {1.5.1998}, +} + +% WRONG - missing dash between month and day +@BOOK{L2, + AUTHOR = {John Doe}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + ORIGDATE = {1995-1230}, + YEAR = {1991} +} + +% WRONG - completely wrong date range format +@BOOK{L3, + AUTHOR = {John Doe}, + TITLE = {Title 3}, + PUBLISHER = {Oxford}, + URL = {http://a/b/c}, + URLDATE = {1.5.1988}, + YEAR = {1854} +} + +% WRONG - 1 digit month +@BOOK{L4, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 1}, + PUBLISHER = {Oxford}, + DATE = {1995-1-04}, +} + +% WRONG - 1 digit day +@BOOK{L5, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + DATE = {1995-10-4}, +} + +% WRONG - month out of bounds +@BOOK{L6, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 1}, + PUBLISHER = {Oxford}, + DATE = {1996-13-03}, +} + +% WRONG - day out of bounds +@PROCEEDINGS{L7, + EDITOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + EVENTDATE = {1996-10-35}, + YEAR = {1934} +} + +% WRONG - MONTH not integer +@ARTICLE{L8, + AUTHOR = {Bill Shakespeare}, + JOURNALTITLE = {Journal}, + TITLE = {Works}, + YEAR = {1985a}, + MONTH = {january} +} + +% OK +@PROCEEDINGS{L9, + EDITOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + EVENTDATE = {1996-12-31}, + YEAR = {1234} +} + +% OK +@PROCEEDINGS{L10, + EDITOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + EVENTDATE = {1996-01-01}, + YEAR = {1239} +} + +% WRONG - DATE and YEAR specified +@BOOK{L11, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + DATE = {1996-01-01}, + YEAR = {1998}, +} + +% WRONG - DATE and MONTH specified +@ARTICLE{L12, + AUTHOR = {John Doe and Albert Abrahams}, + JOURNALTITLE = {Journal}, + TITLE = {Title 2}, + DATE = {1996-01-01}, + MONTH = {02}, +} + +% OK - open-ended date +@BOOK{L13, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + DATE = {1996-01-01/}, +} + +% OK - ENDYEAR same as YEAR, labelyear should only have YEAR +@BOOK{L14, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + DATE = {1996-12-10/1996-12-12}, +} + +% OK - labelyear should be undef, no DATE or YEAR +@BOOK{L15, + AUTHOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, +} + +% MISSING YEAR/DATE +@PROCEEDINGS{L16, + EDITOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + EVENTDATE = {1996-01-01}, +} + +% OK - YEAR same as ENDYEAR, labelyear should only have YEAR +@PROCEEDINGS{L17, + EDITOR = {John Doe and Albert Abrahams}, + TITLE = {Title 2}, + PUBLISHER = {Oxford}, + DATE = {1996-12-10/1996-12-12}, + ORIGDATE = {1998-12-10/1998-12-12}, + EVENTDATE = {1998-12-10/2004-12-12}, +} + diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/uniquename.bcf b/Master/texmf-dist/source/bibtex/biber/t/tdata/uniquename.bcf new file mode 100644 index 00000000000..11b619ee05f --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/uniquename.bcf @@ -0,0 +1,233 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<?oxygen RNGSchema="../../data/schemata/bcf.rnc" type="compact"?>
+<?xml-stylesheet type="text/xsl" href="../../data/bcf.xsl"?>
+<bcf:controlfile version="1.2" xmlns:bcf="https://sourceforge.net/projects/biblatex">
+ <!-- OPTIONS -->
+ <bcf:options component="biber" type="global">
+ <bcf:option type="singlevalued">
+ <bcf:key>bblencoding</bcf:key>
+ <bcf:value>utf8</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>bibencoding</bcf:key>
+ <bcf:value>utf8</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>debug</bcf:key>
+ <bcf:value>0</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>mincrossrefs</bcf:key>
+ <bcf:value>2</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>sortcase</bcf:key>
+ <bcf:value>0</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>sortupper</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ </bcf:options>
+ <bcf:options component="biblatex" type="global">
+ <bcf:option type="singlevalued">
+ <bcf:key>alphaothers</bcf:key>
+ <bcf:value>\textbf{+}</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>labelalpha</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ <bcf:option type="multivalued">
+ <bcf:key>labelnamespec</bcf:key>
+ <bcf:value order="1">shortauthor</bcf:value>
+ <bcf:value order="2">author</bcf:value>
+ <bcf:value order="3">shorteditor</bcf:value>
+ <bcf:value order="4">editor</bcf:value>
+ <bcf:value order="5">translator</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>labelyear</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ <bcf:option type="multivalued">
+ <bcf:key>labelyearspec</bcf:key>
+ <bcf:value order="1">year</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>maxitems</bcf:key>
+ <bcf:value>3</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>maxnames</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>minitems</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>minnames</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>singletitle</bcf:key>
+ <bcf:value>0</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>sortalphaothers</bcf:key>
+ <bcf:value>+</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>sortlos</bcf:key>
+ <bcf:value>0</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>terseinits</bcf:key>
+ <bcf:value>0</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>uniquename</bcf:key>
+ <bcf:value>2</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>useauthor</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>useeditor</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>useprefix</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ <bcf:option type="singlevalued">
+ <bcf:key>usetranslator</bcf:key>
+ <bcf:value>1</bcf:value>
+ </bcf:option>
+ </bcf:options>
+ <!-- CROSSREF -->
+ <bcf:inheritance>
+ <bcf:defaults inherit_all="true" override_target="false">
+ </bcf:defaults>
+ <bcf:inherit>
+ <bcf:type_pair source="mvbook" target="inbook"/>
+ <bcf:type_pair source="mvbook" target="bookinbook"/>
+ <bcf:type_pair source="mvbook" target="suppbook"/>
+ <bcf:type_pair source="book" target="inbook"/>
+ <bcf:type_pair source="book" target="bookinbook"/>
+ <bcf:type_pair source="book" target="suppbook"/>
+ <bcf:field source="author" target="author"/>
+ <bcf:field source="author" target="bookauthor"/>
+ </bcf:inherit>
+ <bcf:inherit>
+ <bcf:type_pair source="mvbook" target="book"/>
+ <bcf:type_pair source="mvbook" target="inbook"/>
+ <bcf:type_pair source="mvbook" target="bookinbook"/>
+ <bcf:type_pair source="mvbook" target="suppbook"/>
+ <bcf:field source="title" target="maintitle"/>
+ <bcf:field source="subtitle" target="mainsubtitle"/>
+ <bcf:field source="titleaddon" target="maintitleaddon"/>
+ </bcf:inherit>
+ <bcf:inherit>
+ <bcf:type_pair source="mvcollection" target="collection"/>
+ <bcf:type_pair source="mvcollection" target="incollection"/>
+ <bcf:type_pair source="mvcollection" target="suppcollection"/>
+ <bcf:field source="title" target="maintitle"/>
+ <bcf:field source="subtitle" target="mainsubtitle"/>
+ <bcf:field source="titleaddon" target="maintitleaddon"/>
+ </bcf:inherit>
+ <bcf:inherit>
+ <bcf:type_pair source="mvproceedings" target="proceedings"/>
+ <bcf:type_pair source="mvproceedings" target="inproceedings"/>
+ <bcf:field source="title" target="maintitle"/>
+ <bcf:field source="subtitle" target="mainsubtitle"/>
+ <bcf:field source="titleaddon" target="maintitleaddon"/>
+ </bcf:inherit>
+ <bcf:inherit>
+ <bcf:type_pair source="mvreference" target="reference"/>
+ <bcf:type_pair source="mvreference" target="inreference"/>
+ <bcf:field source="title" target="maintitle"/>
+ <bcf:field source="subtitle" target="mainsubtitle"/>
+ <bcf:field source="titleaddon" target="maintitleaddon"/>
+ </bcf:inherit>
+ <bcf:inherit>
+ <bcf:type_pair source="book" target="inbook"/>
+ <bcf:type_pair source="book" target="bookinbook"/>
+ <bcf:type_pair source="book" target="suppbook"/>
+ <bcf:field source="title" target="booktitle"/>
+ <bcf:field source="subtitle" target="booksubtitle"/>
+ <bcf:field source="titleaddon" target="booktitleaddon"/>
+ </bcf:inherit>
+ <bcf:inherit>
+ <bcf:type_pair source="collection" target="incollection"/>
+ <bcf:type_pair source="collection" target="suppcollection"/>
+ <bcf:field source="title" target="booktitle"/>
+ <bcf:field source="subtitle" target="booksubtitle"/>
+ <bcf:field source="titleaddon" target="booktitleaddon"/>
+ </bcf:inherit>
+ <bcf:inherit>
+ <bcf:type_pair source="reference" target="inreference"/>
+ <bcf:field source="title" target="booktitle"/>
+ <bcf:field source="subtitle" target="booksubtitle"/>
+ <bcf:field source="titleaddon" target="booktitleaddon"/>
+ </bcf:inherit>
+ <bcf:inherit>
+ <bcf:type_pair source="proceedings" target="inproceedings"/>
+ <bcf:field source="title" target="booktitle"/>
+ <bcf:field source="subtitle" target="booksubtitle"/>
+ <bcf:field source="titleaddon" target="booktitleaddon"/>
+ </bcf:inherit>
+ <bcf:inherit>
+ <bcf:type_pair source="periodical" target="article"/>
+ <bcf:type_pair source="periodical" target="suppperiodical"/>
+ <bcf:field source="title" target="journaltitle"/>
+ <bcf:field source="subtitle" target="journalsubtitle"/>
+ </bcf:inherit>
+ </bcf:inheritance>
+ <bcf:sorting>
+ <bcf:presort>mm</bcf:presort>
+ <bcf:sort order="1">
+ <bcf:sortitem order="1">presort</bcf:sortitem>
+ </bcf:sort>
+ <bcf:sort order="2" final="1">
+ <bcf:sortitem order="1">sortkey</bcf:sortitem>
+ </bcf:sort>
+ <bcf:sort order="3">
+ <bcf:sortitem order="1">sortname</bcf:sortitem>
+ <bcf:sortitem order="2">author</bcf:sortitem>
+ <bcf:sortitem order="3">editor</bcf:sortitem>
+ <bcf:sortitem order="4">translator</bcf:sortitem>
+ <bcf:sortitem order="5">sorttitle</bcf:sortitem>
+ <bcf:sortitem order="6">title</bcf:sortitem>
+ </bcf:sort>
+ <bcf:sort order="4">
+ <bcf:sortitem order="1">sorttitle</bcf:sortitem>
+ <bcf:sortitem order="2">title</bcf:sortitem>
+ </bcf:sort>
+ <bcf:sort order="5">
+ <bcf:sortitem order="1">sortyear</bcf:sortitem>
+ <bcf:sortitem order="2">year</bcf:sortitem>
+ </bcf:sort>
+ <bcf:sort order="6">
+ <bcf:sortitem order="1">volume</bcf:sortitem>
+ <bcf:sortitem order="2">0000</bcf:sortitem>
+ </bcf:sort>
+ </bcf:sorting>
+ <!-- SECTION 0 -->
+ <bcf:bibdata section="0">
+ <bcf:datasource type="file" datatype="bibtex">uniquename.bib</bcf:datasource>
+ </bcf:bibdata>
+ <bcf:section number="0">
+ <bcf:citekey>un1</bcf:citekey>
+ <bcf:citekey>un2</bcf:citekey>
+ <bcf:citekey>un3</bcf:citekey>
+ <bcf:citekey>un4</bcf:citekey>
+ <bcf:citekey>un5</bcf:citekey>
+ <bcf:sectionlist label="MAIN" type="entry"/>
+ <bcf:sectionlist label="SHORTHANDS" type="shorthand">
+ <bcf:filter type="field">shorthand</bcf:filter>
+ </bcf:sectionlist>
+ </bcf:section>
+</bcf:controlfile>
diff --git a/Master/texmf-dist/source/bibtex/biber/t/tdata/uniquename.bib b/Master/texmf-dist/source/bibtex/biber/t/tdata/uniquename.bib new file mode 100644 index 00000000000..469a2574126 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/t/tdata/uniquename.bib @@ -0,0 +1,60 @@ +@BOOK{un1, + AUTHOR = {John Doe}, + TITLE = {Unique 1}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1994}, +} + +@BOOK{un2, + AUTHOR = {Edward Doe}, + TITLE = {Unique 2}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1934}, +} + +@BOOK{un3, + AUTHOR = {Jane Doe}, + TITLE = {Unique 3}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1983}, +} + +@BOOK{un4, + AUTHOR = {John Doe and Mike Mills}, + TITLE = {Unique 4}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1921}, +} + +@BOOK{un5, + SHORTAUTHOR = {Chaps}, + AUTHOR = {John Doe and Mike Mills}, + TITLE = {Unique 5}, + PUBLISHER = {A press}, + LOCATION = {Cambridge}, + YEAR = {1921}, +} + +@BOOK{un6, + AUTHOR = {I. Light}, + TITLE = {Deflecting Immigration}, + SUBTITLE = {Networks, Markets, and regulation in Los Angeles}, + YEAR = {2006}, + LOCATION = {New York, NY}, + PUBLISHER = {Russell Sage Foundation}, + KEYWORDS = {noinclude} +} + +@BOOK{un7, + AUTHOR = {M. A. Light and I. H. Light}, + TITLE = {The Geographic Expansiion of Mexican Immigration in the United States and its Implications for Local Law Enforcement}, + YEAR = {2008}, + JOURNALTITLE = {Law Enforcement Executive Forum Journal}, + VOLUME = {8}, + PAGES = {73--82}, +} + diff --git a/Master/texmf-dist/source/bibtex/biber/visual.pl b/Master/texmf-dist/source/bibtex/biber/visual.pl new file mode 100644 index 00000000000..018bd070012 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/biber/visual.pl @@ -0,0 +1,12 @@ +# Module::Build "Build test" invokes this after all test scripts to provide some user +# feedback. See the manual for Module::Build. The name of this script is not arbitrary. +use Biber; + +BEGIN { + push @INC, 'blib/lib/'; +} + +my $v = $Biber::VERSION; +$v .= ' (beta)' if $Biber::BETA_VERSION; + +print "Finished testing biber $v using Perl $] at $^X\n"; diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 2162113dfe0..61d651ffd4b 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -1997,7 +1997,7 @@ for (@ARGV) { $package = pop (@x); my $COOKED_PKG = "$COOKED_TOP/$package"; # output directory - if ($package eq "biber") { + if ($package eq "biber") { # later anything with scripts $BUILDDEST = "$COOKED_PKG/Build/source"; $TOPDEST = "$COOKED_PKG/Master"; } else { @@ -4111,8 +4111,8 @@ sub POSTbiber { &SYSTEM ("mkdir -p $bindir"); &SYSTEM ("$CP $biber_binary $bindir/"); # - my $builddir = "$BUILDDEST/utils/biber/"; - &SYSTEM ("mkdir -p $builddir"); + my $builddir = "$BUILDDEST/utils/biber"; + &SYSTEM ("mkdir -p $builddir/"); &SYSTEM ("$MV $biber_binary $builddir/$biber_binary.$tl_platform"); } &xchdir (".."); diff --git a/Master/tlpkg/libexec/place b/Master/tlpkg/libexec/place index 89fd94e90cc..6da0194d942 100755 --- a/Master/tlpkg/libexec/place +++ b/Master/tlpkg/libexec/place @@ -33,43 +33,45 @@ print "place: chicken mode = $chicken\n"; die "usage: $0 PKGNAME\n" unless @ARGV == 1; $package = $ARGV[0]; -$newpackage = 0; +my $is_new_package = 0; %dirs = (); # dirs we make changes in $TMP = $ENV{"TMPDIR"} || "/tmp"; $tmpfile = "$TMP/$>.tlplace"; # use effective uid in temp file names -$cooked = getcwd(); # ctan2tl invokes us in the cooked dire --d "$cooked/$package" || die "$0: No such package in $cooked: $package\n"; +$cooked_top = getcwd (); # ctan2tl invokes us in the top-level cooked dir &xchdir ("$mydir/../.."); -$M = getcwd(); - -xchdir ("$cooked/$package"); -if (-d "texmf-dist") {$Root="texmf-dist"; } -elsif (-d "texmf-doc") {$Root="texmf-doc"; } -elsif (-d "texmf") {$Root="texmf"; } -else { die ("no top level texmf in " . `pwd`); } - -if ($Root eq 'texmf-doc') { - $Type = 'Documentation'; -} elsif ($Root eq 'texmf-dist') { - $Type = 'Package'; -} elsif ($Root eq 'texmf') { - # can't handle binary stuff yet, but can do some hyphenations. - $Type = 'TLCore'; -} else { - die "cannot handle Root=$Root"; +my $M = $DEST = getcwd (); # svn Master, ordinarily where we write +# +&xchdir (".."); + +# top-level. for historical reasons, is usually just relative to +# Master, e.g., has texmf-dist. But when a package has to write to both +# Master and Build (e.g., biber), it will have Master and Build subdirs. +my $TOP = getcwd (); + +&xchdir ("$cooked_top/$package"); +my $cooked_pkg = getcwd (); + +if (-d "Master") { # maybe have both Build and Master + &xchdir ("Master"); + $DEST = $TOP; } +my $cooked_master = getcwd (); + +if (-d "texmf-dist") { $Type = "Package"; } +elsif (-d "texmf") { $Type = "TLCore"; } +else { die "$cooked_master: no top level texmf or texmf-dist"; } -die "top-level README in $Root, that can't be right" if -e "$Root/README"; +die "top-level README in $Root, that can't be right" if <*/README>; # initialize TLPDB. my $tlpdb = new TeXLive::TLPDB ("root" => $M); -# create TLTREE from stuff in cooked/$pkg -my $tltree = TeXLive::TLTREE->new ("svnroot" => "$cooked/$package"); +# create TLTREE from stuff in cooked +my $tltree = TeXLive::TLTREE->new ("svnroot" => $cooked_master); $tltree->init_from_files; -# get package from TLPDB. +# get existing package from TLPDB. my %Old; my $tlpold = $tlpdb->get_package ($package); if (defined($tlpold)) { @@ -77,7 +79,7 @@ if (defined($tlpold)) { $Old{$_} = 1; } } else { - $newpackage = 1; + $is_new_package = 1; } # create new tlpsrc. @@ -86,14 +88,14 @@ my $tlpsrcfile = "$M/tlpkg/tlpsrc/$package.tlpsrc"; if (! -r $tlpsrcfile) { $tlpsrc->name($package); $tlpsrc->category($Type); - if (!$chicken) { + if (! $chicken) { local *TLPSRC; $TLPSRC = ">$tlpsrcfile"; open (TLPSRC) || die "open($TLPSRC) failed: $!"; # not needed, we only set name and category which are taken # be default from the file name, so do not create useless entries # but only empty files - # $tlpsrc->writeout(\*TLPSRC); + # $tlpsrc->writeout (\*TLPSRC); close TLPSRC; } } else { @@ -103,72 +105,24 @@ if (! -r $tlpsrcfile) { # make the new tlpobj. my $tlpnew = $tlpsrc->make_tlpobj($tltree, $M); + # show comparison of old and new. print "\n\f "; -&compare_disk_vs_tlpobj ("$cooked/$package", $tlpnew); - -if (!defined($tlpold)) { - print "place: $package not present in $M/$InfraLocation/$DatabaseName\n\n"; -} else { - print "new vs. present $package (present is indented)\n"; - my @oldfiles = keys %Old; - `rm -f $tmpfile.old`; - foreach (sort @oldfiles) { - `echo $_ >>$tmpfile.old`; - } - my @newfiles = $tlpnew->all_files; - `rm -f $tmpfile.new`; - foreach (sort @newfiles) { - `echo $_ >>$tmpfile.new`; - } - print `comm -3 $tmpfile.new $tmpfile.old`; - my @difffiles = `comm -12 $tmpfile.new $tmpfile.old`; - chomp (@difffiles); - my $sum = 0; - my $identical = 0; - # - my $diff_file = "$tmpfile.diff"; - unlink ($diff_file); - # - # The --text is because we want to see the real changes, always. - # The space-related options are because those changes aren't real. - # (The diff is only run if the files are different according to our - # own test, so it's ok if the options eliminate all the diffs; it'll - # still get reported as needing an update.) - # The -s reports identical files. - # - my $diff_cmd = "diff --text --strip-trailing-cr --ignore-all-space -U 0 -s"; - # - for my $f (@difffiles) { - my $master_file = "$M/$f"; - my $cooked_file = "$cooked/$package/$f"; - # diff has no options for handling Mac line endings, - # so use our own script for the initial comparison. - if (system ("cmp-textfiles '$master_file' '$cooked_file'") == 0) { - $identical++; - } else { - my @diff_out = `$diff_cmd $master_file $cooked_file | tee -a $diff_file`; - $sum += $#diff_out - 2; # zero-based, so first line doesn't count. - # subtract another two lines for the heading - # and at least one hunk marker. - } - } - my $nrcommfiles = @difffiles; - # - my $changed = $nrcommfiles - $identical; - print "$nrcommfiles common files, $changed changed, ~$sum lines different ($diff_file)\n\n\f\n"; - #`rm -f $tmpfile.*` -} +&compare_disk_vs_tlpobj ($cooked_master, $tlpnew); +&show_tlp_diffs ($tlpnew, %Old); -&xchdir ("$cooked/$package"); +my @new_build_files = &handle_build_files ($cooked_pkg, $DEST); +&xchdir ($cooked_pkg); print "place: checking for case-insensitive clashes\n"; -print `find . '(' -name .svn ')' -prune -o -print | sort | uniq -i -d`; +print `find . -prune -o -print | sort | uniq -i -d`; print "\n"; -find (\&files, "."); +# Figure out removals relative to old package. +&xchdir ($cooked_master); +find (\&files, "."); # sets %New (= all files under Master) foreach $file (sort keys %Old) { my $status = $New{$file} ? "retained" : "removed"; print "* $file\t[$status]\n"; @@ -177,7 +131,7 @@ foreach $file (sort keys %Old) { # probably did so by hand and didn't bother to update. next unless -e "$M/$file"; - # remove old files. + # remove no longer existing files. if (! $New{$file}) { &xsystem ("svn remove $M/$file"); } @@ -186,21 +140,25 @@ foreach $file (sort keys %Old) { $dirs{$dname}++; } -# copy files -my $job = "tar cf - . | (cd $M && tar xf - )"; -&xsystem ($job); + +# Copy files. +&xchdir ($cooked_pkg); +&xsystem ("tar cf - . | (cd $DEST && tar xf - )"); + +# Processed everything out of the tmp cooked dir now, mv it aside. +&xchdir ($cooked_top); +&xsystem ("mv $package $package.done"); # sort so dirs will be added before subdirs. +for my $build_file (sort @new_build_files) { # usually none + &add_file ($build_file); +} +# for my $file (sort keys %New) { - if (! $Old{$file}) { - &add_file ("$M/$file"); - } + &add_file ("$M/$file") if ! $Old{$file}; } -&xchdir ($cooked); -&xsystem ("mv $package $package.done"); - -if ($newpackage) { +if ($is_new_package) { &add_file ("$M/tlpkg/tlpsrc/$package.tlpsrc"); } @@ -236,51 +194,22 @@ exit (0); -sub dirs -{ - local @filenames; - if (-d) { - @filenames=&buildfilelist($File::Find::name); - if (!@filenames) { rmdir $File::Find::name;} - }} - -sub buildfilelist -{ - my($me) = @_; - my @files; - opendir(DIR,$me) || cleanup ("cannot open directory $me"); - @files =grep(!/^\.\.?/,readdir(DIR)); - closedir(DIR); - return @files; -} - - -sub files -{ - if (-f || -l) { # consider files or symlinks - $This = $File::Find::name; - $This =~ s/^\.\///; - $New{$This} = 1; - } -} - - # add a file to the repository. for svn, we also have to add the # containing dir, and the parent of that dir, if they are new. -# (Should really just traverse ) # -sub add_file -{ +sub add_file { my ($newfile) = @_; - - # when it's needed, (grand)parents must come first, else have svn "not - # working copy". +#warn "adding file $newfile"; + + # when it's needed, (grand*)parents must come first, else have svn + # "not working copy" error. my $newdir = $dir = dirname ($newfile); my $needed_dirs = ""; until (-d "$dir/.svn") { $needed_dirs = "$dir $needed_dirs"; # parents first $dirs{$dir}++; $dir = dirname ($dir); + die "no .svn dir found above $newdir? (in `pwd`)" if $dir eq "."; } &xsystem ("svn add -N $needed_dirs") if $needed_dirs; @@ -298,12 +227,12 @@ sub add_file $dirs{$newdir}++; } - + # compare against independent list of files in the new hierarchy, in # case some of them did not get matched by the patterns. -sub compare_disk_vs_tlpobj -{ +# +sub compare_disk_vs_tlpobj { my ($diskdir,$tlp) = @_; chomp (my @files_on_disk = `cd $diskdir && find \! -type d`); s,^\./,, foreach @files_on_disk; # remove leading ./ @@ -325,8 +254,109 @@ sub compare_disk_vs_tlpobj -sub xchdir -{ +# write summary of changes to stdout and full diffs to a temp file so +# humans can inspect if desired. +# +sub show_tlp_diffs { + my ($tlpnew, %Old) = @_; + if (!defined ($tlpold)) { + print "place: $package not present in $M/$InfraLocation/$DatabaseName\n\n"; + } else { + print "new vs. present $package (present is indented)\n"; + my @oldfiles = keys %Old; + unlink ("$tmpfile.old"); + foreach (sort @oldfiles) { + `echo $_ >>$tmpfile.old`; + } + my @newfiles = $tlpnew->all_files; + unlink ("$tmpfile.new"); + foreach (sort @newfiles) { + `echo $_ >>$tmpfile.new`; + } + print `comm -3 $tmpfile.new $tmpfile.old`; + my @difffiles = `comm -12 $tmpfile.new $tmpfile.old`; + chomp (@difffiles); + my $sum = 0; + my $identical = 0; + # + my $diff_file = "$tmpfile.diff"; + unlink ($diff_file); + # + # The --text is because we want to see the real changes, always. + # The space-related options are because those changes aren't real. + # (The diff is only run if the files are different according to our + # own test, so it's ok if the options eliminate all the diffs; it'll + # still get reported as needing an update.) + # The -s reports identical files. + # + my $diff_cmd ="diff --text --strip-trailing-cr --ignore-all-space -U 0 -s"; + # + for my $f (@difffiles) { + my $master_file = "$M/$f"; + my $cooked_file = "$cooked_master/$f"; + # diff has no options for handling Mac line endings, + # so use our own script for the initial comparison. + if (system ("cmp-textfiles '$master_file' '$cooked_file'") == 0) { + $identical++; + } else { + my $tee = "tee -a $diff_file"; + my @diff_out = `$diff_cmd $master_file $cooked_file | $tee`; + $sum += $#diff_out - 2; # zero-based, so first line doesn't count. + # subtract another two lines for the heading + # and at least one hunk marker. + } + } + my $nrcommfiles = @difffiles; + # + my $changed = $nrcommfiles - $identical; + print "$nrcommfiles common files, $changed changed, ~$sum lines different" + . " ($diff_file)\n\n\f\n"; + } +} + + + +# return list of new files under Build, if any. +# do nothing to try to remove files under Build, that doesn't make sense. +# +sub handle_build_files { + my ($cooked_pkg, $svn_dest) = @_; + my @ret = (); + + return unless -d "$cooked_pkg/Build"; + die "no Build subdir in $svn_dest?!" if ! -d "$svn_dest/Build"; + + # get list of files in cooked Build dir. + &xchdir ("$cooked_pkg"); + local %New; # dynamically hide global %New. + find (\&files, "Build"); + + # compare against the svn Build dir; we only want the new files. + for my $file (keys %New) { + my $dest_file = "$svn_dest/$file"; + my $status = -e $dest_file ? "existing" : "new"; + print "* $file\t[$status]\n"; + if ($status eq "new") { + push (@ret, $dest_file); + } + } + + return @ret; +} + + + +sub files { # subroutine for &find, updating %New. + if (-f || -l) { # consider files and symlinks + my $This = $File::Find::name; + $This =~ s,^\./,,; # omit leading ./ + $New{$This} = 1; + } +} + + + +sub xchdir { my ($dir) = @_; chomp (my $pwd = `pwd`); chdir ($dir) || die "chdir($dir) failed: $!\n(cwd=$pwd)"; @@ -334,8 +364,7 @@ sub xchdir } -sub xsystem -{ +sub xsystem { my ($cmd) = @_; print "place: SYSTEM $cmd\n"; diff --git a/Master/tlpkg/tlpsrc/biber.tlpsrc b/Master/tlpkg/tlpsrc/biber.tlpsrc new file mode 100644 index 00000000000..9c71f5ccf6b --- /dev/null +++ b/Master/tlpkg/tlpsrc/biber.tlpsrc @@ -0,0 +1 @@ +binpattern f bin/${ARCH}/biber diff --git a/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc index b7efb7190cd..bcce540abd0 100644 --- a/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc @@ -8,6 +8,7 @@ depend apacite depend apalike2 depend beebe depend bibarts +depend biber depend bibexport depend bibhtml depend biblatex |