[Tex/LaTex] Biblatex Style or Package for Council of Science Editors Citation Format

biblatex

I have seen that in between texlive 2011 and 2012, there were a lot of new styles developed. But I still have to see a style intended for the Council of Science Editors Citation Style. I'm definitely useless with hardcore tex codes but I definitely tried to read and understand the biblatex manual and the source files for the biblatex style files but I could not start to comprehend where to start so I would be very thankful if someone out there tries to develop a CSE style, specifically the Name-Year Citation Sequence?

Also, does someone out there have an easy work-around without having to develop a CSE style?

Update: December 24, 2012

What I am trying to achieve can be seen in the following external sites:

Best Answer

There is NO CSE Name-Year biblatex style package yet. But I am trying to work on it. Pardon me for the ugly code. If you have some suggestions, please tell me so that I can learn from you, or better yet, improve the code yourself.

I have several hesitations in answering this question since it happens to be too broad. Perhaps that is partly because this being my first question, I did not know how to ask. I have borrowed answers from several posts, notably:

And here is the biblatex.cfg file.

\ProvidesFile{biblatex.cfg}

\DefineBibliographyStrings{english}{%
references = {Cited References}, % Use "Cited References" as bibliography heading
january = {Jan}, % Change how the names of months appear
february = {Feb},
march = {Mar},
april = {Apr},
may = {May},
june = {Jun},
july = {Jul},
august = {Aug},
september = {Sep},
october = {Oct},
november = {Nov},
december = {Dec}
}

\ExecuteBibliographyOptions{
firstinits=true,
isbn=true,
dashed=false,
eprint=true,
maxbibnames=99,
alldates=long,
doi=true,
uniquename=init
}

% ... and remove italization of titles
\renewcommand{\bibinitperiod}{}
\renewcommand{\bibinitdelim}{}
\renewcommand{\finalnamedelim}{, }
\renewcommand*{\revsdnamepunct}{}

% Remove quotation marks around journal titles etc.
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{#1\isdot}

% Print last name first before first name

\DeclareNameAlias{sortname}{last-first}
\DeclareNameAlias{default}{last-first} % changes that of the editor and others
%\DeclareNameAlias{editorname}{last-first}
\DeclareNameAlias{editora}{editor}
\DeclareNameAlias{editorb}{editor}
\DeclareNameAlias{editorc}{editor}

% ... and remove italization of titles

\DeclareFieldFormat{journaltitle}{#1}
\DeclareFieldFormat{maintitle}{#1}
\DeclareFieldFormat{sorttitle}{#1}
\DeclareFieldFormat{title}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{issuetitle}{#1}
\DeclareFieldFormat{pages}{#1}% no prefix for the pages field in the bibliography

% Make all titles except for journal title and journalsubtitle Sentence case

\DeclareFieldFormat{titlecase}{\MakeTitleCase{#1}}

\newrobustcmd{\MakeTitleCase}[1]{%
\ifthenelse{%
\ifcurrentfield{booktitle}\OR\ifcurrentfield{booksubtitle}%
\OR\ifcurrentfield{maintitle}\OR\ifcurrentfield{mainsubtitle}%
\OR\ifcurrentfield{journaltitle}\OR\ifcurrentfield{journalsubtitle}%
%\OR\ifcurrentfield{issuetitle}\OR\ifcurrentfield{issuesubtitle}%
%\OR\ifentrytype{book}\OR\ifentrytype{mvbook}\OR\ifentrytype{bookinbook}%
%\OR\ifentrytype{booklet}\OR\ifentrytype{suppbook}%
%\OR\ifentrytype{collection}\OR\ifentrytype{mvcollection}%
%\OR\ifentrytype{suppcollection}\OR\ifentrytype{manual}%
%\OR\ifentrytype{periodical}\OR\ifentrytype{suppperiodical}%
%\OR\ifentrytype{proceedings}\OR\ifentrytype{mvproceedings}%
%\OR\ifentrytype{reference}\OR\ifentrytype{mvreference}%
%\OR\ifentrytype{report}\OR\ifentrytype{thesis}
}
{#1}
{\MakeSentenceCase{#1}
}}

% Remove parentheses around dates

\renewbibmacro*{date+extrayear}{%
\iffieldundef{year}
{}
{\printtext{%
\addperiod\space\printfield{labelyear}%
\printfield{extrayear}}}}

\NewBibliographyString{available}
\NewBibliographyString{cited}

\DefineBibliographyStrings{english}{%
available = {Available from},
}

% Redefined url+urldate macro
\DeclareFieldFormat{url}{\bibstring{available}\addcolon\space\url{#1}}
\DeclareFieldFormat{urldate}{#1}
\DeclareFieldFormat{urlday}{#1}

\renewbibmacro*{url+urldate}{%
\iffieldundef{urlyear}
{}
%    {\setunit*{\addspace}%
%     }
{\printtext{[}%
\iffieldundef{urlupyear}
{}
{\printtext{updated}\space\printfield{urlupyear}
\mkbibmonth{\thefield{urlupmonth}}
\stripzeros{\thefield{urlupday}}\addsemicolon\space
}%
\printtext{cited}\space%
\printfield{urlyear}
\mkbibmonth{\thefield{urlmonth}}
\stripzeros{\thefield{urlday}}%
\printtext{].}\space%
\printfield{url}%
}
}

% Add another bibtex entry for medium designator in online titles
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=medium, fieldtarget=usera]
\step[fieldsource=urlupdate, fieldtarget=extradate]
}
}
}

% This is a problematic part
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printtext[title]{%
\printfield[sentencecase]{title}%
\setunit{\subtitlepunct}%
\printfield[sentencecase]{subtitle}
\setunit{}%
\iffieldundef{usera}
{}
{\printtext{[}\printfield{usera}\printtext{]}}}%
\newunit}%
\printfield{titleaddon}}

\DeclareBibliographyDriver{online}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{bytranslator+others}%
\newunit\newblock
\printfield{version}%
\newunit\newblock
\usebibmacro{publisher+location+date}
\addsemicolon
\newunit\newblock
\usebibmacro{url+urldate}
\usebibmacro{finentry}}

% Driver for article
% Order of fields for article

\DeclareBibliographyDriver{article}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{bytranslator+others}%
\newunit\newblock
\printfield{version}%
\newunit\newblock
\usebibmacro{journal+issuetitle}%
\newunit
\usebibmacro{byeditor+others}%
\newunit
\usebibmacro{note+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{issn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\usebibmacro{related}%
\usebibmacro{finentry}}

% cbx part
\renewcommand*{\nameyeardelim}{\addspace}

\endinput


There is also a biblatex-dm.cfg file:

\DeclareDatamodelFields[type=field, datatype=date, skipout]{urlupdate}
\DeclareDatamodelFields[type=field, datatype=integer]{
urlupday,
urlupendday,
urlupendmonth,
urlupendyear,
urlupmonth,
urlupyear}

\DeclareDatamodelEntryfields{
urlupdate,
urlupday,
urlupendday,
urlupendmonth,
urlupendyear,
urlupmonth,
urlupyear}

\endinput


Now, I know that this answer complicates things since this question requires that the answer duplicates other answers in the site. However, I believe that prospective users of this style can benefit directly by copying the above codes and modifying at their will. And so I am also making this answer CW.

I have discussed this answer with Joseph Wright at chat some time ago and I am currently working to make this into a biblatex style package.