diff --git a/CHANGELOG.md b/CHANGELOG.md index 93982c0..76e0f82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ `Inara` uses [SemVer][] (semantic versioning). +## UNRELEASED + +- Support for annotating author roles with the Contribution Role Taxonomy (CRediT) (https://github.com/openjournals/inara/pull/87) + ## Inara v1.1.3 Released 2024-10-24. diff --git a/data/defaults/pdf.yaml b/data/defaults/pdf.yaml index 01b2096..0f4f6b9 100644 --- a/data/defaults/pdf.yaml +++ b/data/defaults/pdf.yaml @@ -11,6 +11,8 @@ filters: path: self-citation.lua - type: lua path: fix-bibentry-spacing.lua + - type: lua + path: prepare-credit.lua variables: # styling options colorlinks: true diff --git a/data/defaults/preprint.yaml b/data/defaults/preprint.yaml index be33e27..10465f4 100644 --- a/data/defaults/preprint.yaml +++ b/data/defaults/preprint.yaml @@ -1,6 +1,9 @@ to: latex output-file: paper.preprint.tex template: preprint.latex +filters: + - type: lua + path: prepare-credit.lua variables: # styling options colorlinks: true diff --git a/data/defaults/tex.yaml b/data/defaults/tex.yaml index ec1b242..5b1ef3d 100644 --- a/data/defaults/tex.yaml +++ b/data/defaults/tex.yaml @@ -11,6 +11,8 @@ filters: path: self-citation.lua - type: lua path: fix-bibentry-spacing.lua + - type: lua + path: prepare-credit.lua variables: # styling options colorlinks: true diff --git a/data/filters/prepare-credit.lua b/data/filters/prepare-credit.lua new file mode 100644 index 0000000..98c8f5b --- /dev/null +++ b/data/filters/prepare-credit.lua @@ -0,0 +1,218 @@ +-- Checks if any contributor information is available + +local roles = { + ["conceptualization"] = { + name = "Conceptualization", + id = "8b73531f-db56-4914-9502-4cc4d4d8ed73", + uri = "https://credit.niso.org/contributor-roles/conceptualization/" + }, + ["data-curation"] = { + name = "Data curation", + id = "f93e0f44-f2a4-4ea1-824a-4e0853b05c9d", + uri = "https://credit.niso.org/contributor-roles/data-curation/" + }, + ["formal-analysis"] = { + name = "Formal analysis", + id = "95394cbd-4dc8-4735-b589-7e5f9e622b3f", + uri = "https://credit.niso.org/contributor-roles/formal-analysis/" + }, + ["funding-acquisition"] = { + name = "Funding acquisition", + id = "34ff6d68-132f-4438-a1f4-fba61ccf364a", + uri = "https://credit.niso.org/contributor-roles/funding-acquisition/" + }, + ["investigation"] = { + name = "Investigation", + id = "2451924d-425e-4778-9f4c-36c848ca70c2", + uri = "https://credit.niso.org/contributor-roles/investigation/" + }, + ["methodology"] = { + name = "Methodology", + id = "f21e2be9-4e38-4ab7-8691-d6f72d5d5843", + uri = "https://credit.niso.org/contributor-roles/methodology/" + }, + ["project-administration"] = { + name = "Project administration", + id = "a693fe76-ea33-49ad-9dcc-5e4f3ac5f938", + uri = "https://credit.niso.org/contributor-roles/project-administration/" + }, + ["resources"] = { + name = "Resources", + id = "ebd781f0-bf79-492c-ac21-b31b9c3c990c", + uri = "https://credit.niso.org/contributor-roles/resources/" + }, + ["software"] = { + name = "Software", + id = "f89c5233-01b0-4778-93e9-cc7d107aa2c8", + uri = "https://credit.niso.org/contributor-roles/software/" + }, + ["supervision"] = { + name = "Supervision", + id = "0c8ca7d4-06ad-4527-9cea-a8801fcb8746", + uri = "https://credit.niso.org/contributor-roles/supervision/" + }, + ["validation"] = { + name = "Validation", + id = "4b1bf348-faf2-4fc4-bd66-4cd3a84b9d44", + uri = "https://credit.niso.org/contributor-roles/validation/" + }, + ["visualization"] = { + name = "Visualization", + id = "76b9d56a-e430-4e0a-84c9-59c11be343ae", + uri = "https://credit.niso.org/contributor-roles/visualization/" + }, + ["writing-original-draft"] = { + name = "Writing – original draft", + id = "43ebbd94-98b4-42f1-866b-c930cef228ca", + uri = "https://credit.niso.org/contributor-roles/writing-original-draft/" + }, + ["writing-review-editing"] = { + name = "Writing – review & editing", + id = "d3aead86-f2a2-47f7-bb99-79de6421164d", + uri = "https://credit.niso.org/contributor-roles/writing-review-editing/" + } +} + +degrees = pandoc.List { + "Lead", + "Supporting", + "Equal" +} + +function invalidRole(str) + return roles[str] == nil +end + +function invalidDegree(str) + return not degrees:includes(str) +end + +function join_with_commas_and(list) + local len = #list + if len == 0 then + return "" + elseif len == 1 then + return list[1] + elseif len == 2 then + return list[1] .. " and " .. list[2] + else + local result = table.concat(list, ", ", 1, len - 1) + return result .. ", and " .. list[len] + end +end + +function capitalize_first_letter(str) + return str:sub(1, 1):upper() .. str:sub(2) +end + +function clean_role_dict(d) + if d.type then + return d + else + return { ["type"] = pandoc.utils.stringify(d) } + end +end + +local function prepare_credit (meta) + meta.hasRoles = false + for _, author in ipairs(meta.authors or {}) do + if author.roles then + roleList = {} + for _, roleDict in ipairs(author.roles) do + roleDict = clean_role_dict(roleDict) + role = pandoc.utils.stringify(roleDict.type) + if invalidRole(role) then + print("invalid role for author " .. author.name .. ": " .. role) + elseif roleDict.degree then + degree = capitalize_first_letter(pandoc.utils.stringify(roleDict.degree)) + if invalidDegree(degree) then + print("invalid degree for author " .. author.name .. ": " .. degree) + -- even though the degree is invalid, add the role anyway + table.insert(roleList, roles[role].name) + else + table.insert(roleList, roles[role].name .. " (" .. degree .. ")") + end + else + table.insert(roleList, roles[role].name) + end + end + if #roleList > 0 then + meta.hasRoles = true + author.rolesString = join_with_commas_and(roleList) + end + end + end + return meta +end + +function Meta (meta) + local ok, result = pcall(prepare_credit, meta) + if ok then + return result + end +end + +function assertEqual(expected, actual) + assert(expected == actual, "got \"" .. actual .. "\", expected \"" .. expected .. "\"") +end + +function tests() + assert("" == join_with_commas_and({ })) + assert("foo" == join_with_commas_and({ "foo" })) + assert("foo and bar" == join_with_commas_and({ "foo", "bar" })) + assert("foo, bar, and baz" == join_with_commas_and({ "foo", "bar", "baz" })) + + local m1 = { + ["authors"] = { + { + ["name"] = "Author 1", + ["roles"] = { + "methodology" + } + }, + { + ["name"] = "Author 2", + ['roles'] = { + { ["type"] = "methodology" } + } + }, + { + ["name"] = "Author 3", + ['roles'] = { + { ["type"] = "methodology" }, + { ["type"] = "data-curation" }, + { ["type"] = "conceptualization" }, + } + }, + { + ["name"] = "Author 4", + ['roles'] = { + { ["type"] = "methodology", ["degree"] = "lead" }, + { ["type"] = "data-curation", ["degree"] = "supporting" }, + { ["type"] = "conceptualization" }, + } + }, + } + } + local m1t = prepare_credit(m1) + assert(m1t.hasRoles, "hasRoles should be set to true") + assertEqual("Methodology", m1t['authors'][1].rolesString) + assertEqual("Methodology", m1t['authors'][2].rolesString) + assertEqual("Methodology, Data curation, and Conceptualization", m1t['authors'][3].rolesString) + assertEqual("Methodology (Lead), Data curation (Supporting), and Conceptualization", m1t['authors'][4].rolesString) + + local m2 = { + ["authors"] = { + { + ["name"] = "Author 1" + }, + { + ["name"] = "Author 2" + } + } + } + local m2t = prepare_credit(m2) + assert(not m2t.hasRoles, "hasRoles should be set to false") +end + +tests() diff --git a/data/templates/default.latex b/data/templates/default.latex index d078560..f94513d 100644 --- a/data/templates/default.latex +++ b/data/templates/default.latex @@ -554,6 +554,17 @@ $if(lof)$ $endif$ $body$ +$if(hasRoles)$ +\section{Author Contributions}\label{author-contributions} +\begin{enumerate} +$for(authors)$ +$if(it.rolesString)$ +\item $it.name$ - $it.rolesString$ +$endif$ +$endfor$ +\end{enumerate} +$endif$ + $if(natbib)$ $if(bibliography)$ $if(biblio-title)$ diff --git a/data/templates/preprint.latex b/data/templates/preprint.latex index 51b85a6..f2d4dea 100644 --- a/data/templates/preprint.latex +++ b/data/templates/preprint.latex @@ -435,6 +435,17 @@ $if(has-frontmatter)$ $endif$ $body$ +$if(hasRoles)$ +\section{Author Contributions}\label{author-contributions} +\begin{enumerate} +$for(authors)$ +$if(it.rolesString)$ +\item $it.name$ - $it.rolesString$ +$endif$ +$endfor$ +\end{enumerate} +$endif$ + $if(has-frontmatter)$ \backmatter $endif$ diff --git a/example/paper.md b/example/paper.md index 9c2e3fc..672be95 100644 --- a/example/paper.md +++ b/example/paper.md @@ -7,14 +7,27 @@ authors: affiliation: "1, 2, 4" orcid: 0000-0002-9455-0796 corresponding: true + roles: + - type: software + degree: equal + - 'methodology' - name: Juanjo Bazán orcid: 0000-0001-7699-3983 affiliation: [1] equal-contrib: true + roles: + - type: software + degree: equal - name: Arfon M. Smith orcid: 0000-0002-3957-2474 affiliation: [1, 3] equal-contrib: true + roles: + - type: software + degree: equal + - type: supervision + degree: lead + affiliations: - index: 1 name: Open Journals @@ -365,6 +378,72 @@ authors: +## Contributor Roles + +The [Contribution Role Taxonomy (CRediT)](https://credit.niso.org/contributor-roles) defines +fourteen standard roles of authors. Each author can be annotated with one or more contribution +roles. + +1. [conceptualization](https://credit.niso.org/contributor-roles/conceptualization) +2. [data-curation](https://credit.niso.org/contributor-roles/data-curation) +3. [formal-analysis](https://credit.niso.org/contributor-roles/formal-analysis) +4. [funding-acquisition](https://credit.niso.org/contributor-roles/funding-acquisition) +5. [investigation](https://credit.niso.org/contributor-roles/investigation) +6. [methodology](https://credit.niso.org/contributor-roles/methodology) +7. [project-administration](https://credit.niso.org/contributor-roles/project-administration) +8. [resources](https://credit.niso.org/contributor-roles/resources) +9. [software](https://credit.niso.org/contributor-roles/software) +10. [supervision](https://credit.niso.org/contributor-roles/supervision) +11. [validation](https://credit.niso.org/contributor-roles/validation) +12. [visualization](https://credit.niso.org/contributor-roles/visualization) +13. [writing-original-draft](https://credit.niso.org/contributor-roles/writing-original-draft) +14. [writing-review-editing](https://credit.niso.org/contributor-roles/writing-review-editing) + +JATS also specifies three degrees which can be used to quantify the impact of a contribution: + +1. `Lead` +2. `Supporting` +3. `Equal` - for use if multiple equivalent leads + +Together, these can be used to identify which authors materially contributed to the paper, +such as through `formal-analysis` or `data-curation` and which authors contributed immaterially, +such as through `supervision`. It also allows for saying if multiple people made the same +kind of contribution, who took the lead. + +```yaml +authors: + - name: John Doe + affiliation: [ 1 ] + roles: + - type: 'formal-analysis' + degree: 'lead' + + - name: John Boss + affiliation: [ 1 ] + roles: + - type: 'funding-acquisition' + degree: 'lead' + - type: 'supervision' + degree: 'lead' +``` + +Roles are optional, and within roles, degrees are optional. It's possible to shorthand +roles by using strings directly: + +```yaml +authors: + - name: John Doe + affiliation: [ 1 ] + roles: + - 'formal-analysis' + + - name: John Boss + affiliation: [ 1 ] + roles: + - 'funding-acquisition' + - 'supervision' +``` + ## Affiliations Each affiliation requires an `index` and `name`. diff --git a/test/expected-draft/paper.jats/paper.jats b/test/expected-draft/paper.jats/paper.jats index 6d114ce..06a4c8c 100644 --- a/test/expected-draft/paper.jats/paper.jats +++ b/test/expected-draft/paper.jats/paper.jats @@ -520,6 +520,106 @@ Software should use an OSI-approved license.

+ + Contributor Roles +

The + Contribution + Role Taxonomy (CRediT) defines fourteen standard roles of + authors. Each author can be annotated with one or more contribution + roles.

+ + +

conceptualization

+
+ +

data-curation

+
+ +

formal-analysis

+
+ +

funding-acquisition

+
+ +

investigation

+
+ +

methodology

+
+ +

project-administration

+
+ +

resources

+
+ +

software

+
+ +

supervision

+
+ +

validation

+
+ +

visualization

+
+ +

writing-original-draft

+
+ +

writing-review-editing

+
+
+

JATS also specifies three degrees which can be used to quantify + the impact of a contribution:

+ + +

Lead

+
+ +

Supporting

+
+ +

Equal - for use if multiple equivalent + leads

+
+
+

Together, these can be used to identify which authors materially + contributed to the paper, such as through + formal-analysis or + data-curation and which authors contributed + immaterially, such as through supervision. It + also allows for saying if multiple people made the same kind of + contribution, who took the lead.

+ authors: + - name: John Doe + affiliation: [ 1 ] + roles: + - type: 'formal-analysis' + degree: 'lead' + + - name: John Boss + affiliation: [ 1 ] + roles: + - type: 'funding-acquisition' + degree: 'lead' + - type: 'supervision' + degree: 'lead' +

Roles are optional, and within roles, degrees are optional. It’s + possible to shorthand roles by using strings directly:

+ authors: + - name: John Doe + affiliation: [ 1 ] + roles: + - 'formal-analysis' + + - name: John Boss + affiliation: [ 1 ] + roles: + - 'funding-acquisition' + - 'supervision' +
Affiliations

Each affiliation requires an index and diff --git a/test/expected-draft/paper.preprint.tex b/test/expected-draft/paper.preprint.tex index f1d25d1..4b3dea1 100644 --- a/test/expected-draft/paper.preprint.tex +++ b/test/expected-draft/paper.preprint.tex @@ -786,4 +786,11 @@ \section{Behind the scenes}\label{behind-the-scenes}} \end{CSLReferences} +\section{Author Contributions}\label{author-contributions} +\begin{enumerate} +\item Albert Krewinkel - Software (Equal) and Methodology +\item Juanjo Bazán - Software (Equal) +\item Arfon M. Smith - Software (Equal) and Supervision (Lead) +\end{enumerate} + \end{document} diff --git a/test/expected-draft/paper.tex b/test/expected-draft/paper.tex index ec3a05d..18a69ef 100644 --- a/test/expected-draft/paper.tex +++ b/test/expected-draft/paper.tex @@ -845,6 +845,103 @@ \subsubsection{Example}\label{example} \end{Highlighting} \end{Shaded} +\subsection{Contributor Roles}\label{contributor-roles} + +The \href{https://credit.niso.org/contributor-roles}{Contribution Role +Taxonomy (CRediT)} defines fourteen standard roles of authors. Each +author can be annotated with one or more contribution roles. + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + \href{https://credit.niso.org/contributor-roles/conceptualization}{conceptualization} +\item + \href{https://credit.niso.org/contributor-roles/data-curation}{data-curation} +\item + \href{https://credit.niso.org/contributor-roles/formal-analysis}{formal-analysis} +\item + \href{https://credit.niso.org/contributor-roles/funding-acquisition}{funding-acquisition} +\item + \href{https://credit.niso.org/contributor-roles/investigation}{investigation} +\item + \href{https://credit.niso.org/contributor-roles/methodology}{methodology} +\item + \href{https://credit.niso.org/contributor-roles/project-administration}{project-administration} +\item + \href{https://credit.niso.org/contributor-roles/resources}{resources} +\item + \href{https://credit.niso.org/contributor-roles/software}{software} +\item + \href{https://credit.niso.org/contributor-roles/supervision}{supervision} +\item + \href{https://credit.niso.org/contributor-roles/validation}{validation} +\item + \href{https://credit.niso.org/contributor-roles/visualization}{visualization} +\item + \href{https://credit.niso.org/contributor-roles/writing-original-draft}{writing-original-draft} +\item + \href{https://credit.niso.org/contributor-roles/writing-review-editing}{writing-review-editing} +\end{enumerate} + +JATS also specifies three degrees which can be used to quantify the +impact of a contribution: + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + \texttt{Lead} +\item + \texttt{Supporting} +\item + \texttt{Equal} - for use if multiple equivalent leads +\end{enumerate} + +Together, these can be used to identify which authors materially +contributed to the paper, such as through \texttt{formal-analysis} or +\texttt{data-curation} and which authors contributed immaterially, such +as through \texttt{supervision}. It also allows for saying if multiple +people made the same kind of contribution, who took the lead. + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{authors}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{name}\KeywordTok{:}\AttributeTok{ John Doe} +\AttributeTok{ }\FunctionTok{affiliation}\KeywordTok{:}\AttributeTok{ }\KeywordTok{[}\AttributeTok{ }\DecValTok{1}\AttributeTok{ }\KeywordTok{]} +\AttributeTok{ }\FunctionTok{roles}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{type}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}formal{-}analysis\textquotesingle{}} +\AttributeTok{ }\FunctionTok{degree}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}lead\textquotesingle{}} + +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{name}\KeywordTok{:}\AttributeTok{ John Boss} +\AttributeTok{ }\FunctionTok{affiliation}\KeywordTok{:}\AttributeTok{ }\KeywordTok{[}\AttributeTok{ }\DecValTok{1}\AttributeTok{ }\KeywordTok{]} +\AttributeTok{ }\FunctionTok{roles}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{type}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}funding{-}acquisition\textquotesingle{}} +\AttributeTok{ }\FunctionTok{degree}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}lead\textquotesingle{}} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{type}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}supervision\textquotesingle{}} +\AttributeTok{ }\FunctionTok{degree}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}lead\textquotesingle{}} +\end{Highlighting} +\end{Shaded} + +Roles are optional, and within roles, degrees are optional. It's +possible to shorthand roles by using strings directly: + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{authors}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{name}\KeywordTok{:}\AttributeTok{ John Doe} +\AttributeTok{ }\FunctionTok{affiliation}\KeywordTok{:}\AttributeTok{ }\KeywordTok{[}\AttributeTok{ }\DecValTok{1}\AttributeTok{ }\KeywordTok{]} +\AttributeTok{ }\FunctionTok{roles}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\StringTok{\textquotesingle{}formal{-}analysis\textquotesingle{}} + +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{name}\KeywordTok{:}\AttributeTok{ John Boss} +\AttributeTok{ }\FunctionTok{affiliation}\KeywordTok{:}\AttributeTok{ }\KeywordTok{[}\AttributeTok{ }\DecValTok{1}\AttributeTok{ }\KeywordTok{]} +\AttributeTok{ }\FunctionTok{roles}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\StringTok{\textquotesingle{}funding{-}acquisition\textquotesingle{}} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\StringTok{\textquotesingle{}supervision\textquotesingle{}} +\end{Highlighting} +\end{Shaded} + \subsection{Affiliations}\label{affiliations} Each affiliation requires an \texttt{index} and \texttt{name}. @@ -1026,4 +1123,11 @@ \section{Behind the scenes}\label{behind-the-scenes} \end{CSLReferences} +\section{Author Contributions}\label{author-contributions} +\begin{enumerate} +\item Albert Krewinkel - Software (Equal) and Methodology +\item Juanjo Bazán - Software (Equal) +\item Arfon M. Smith - Software (Equal) and Supervision (Lead) +\end{enumerate} + \end{document} diff --git a/test/expected-pub/paper.jats/paper.jats b/test/expected-pub/paper.jats/paper.jats index bf895b1..e2abebd 100644 --- a/test/expected-pub/paper.jats/paper.jats +++ b/test/expected-pub/paper.jats/paper.jats @@ -520,6 +520,106 @@ Software should use an OSI-approved license.

+ + Contributor Roles +

The + Contribution + Role Taxonomy (CRediT) defines fourteen standard roles of + authors. Each author can be annotated with one or more contribution + roles.

+ + +

conceptualization

+
+ +

data-curation

+
+ +

formal-analysis

+
+ +

funding-acquisition

+
+ +

investigation

+
+ +

methodology

+
+ +

project-administration

+
+ +

resources

+
+ +

software

+
+ +

supervision

+
+ +

validation

+
+ +

visualization

+
+ +

writing-original-draft

+
+ +

writing-review-editing

+
+
+

JATS also specifies three degrees which can be used to quantify + the impact of a contribution:

+ + +

Lead

+
+ +

Supporting

+
+ +

Equal - for use if multiple equivalent + leads

+
+
+

Together, these can be used to identify which authors materially + contributed to the paper, such as through + formal-analysis or + data-curation and which authors contributed + immaterially, such as through supervision. It + also allows for saying if multiple people made the same kind of + contribution, who took the lead.

+ authors: + - name: John Doe + affiliation: [ 1 ] + roles: + - type: 'formal-analysis' + degree: 'lead' + + - name: John Boss + affiliation: [ 1 ] + roles: + - type: 'funding-acquisition' + degree: 'lead' + - type: 'supervision' + degree: 'lead' +

Roles are optional, and within roles, degrees are optional. It’s + possible to shorthand roles by using strings directly:

+ authors: + - name: John Doe + affiliation: [ 1 ] + roles: + - 'formal-analysis' + + - name: John Boss + affiliation: [ 1 ] + roles: + - 'funding-acquisition' + - 'supervision' +
Affiliations

Each affiliation requires an index and diff --git a/test/expected-pub/paper.preprint.tex b/test/expected-pub/paper.preprint.tex index f1d25d1..4b3dea1 100644 --- a/test/expected-pub/paper.preprint.tex +++ b/test/expected-pub/paper.preprint.tex @@ -786,4 +786,11 @@ \section{Behind the scenes}\label{behind-the-scenes}} \end{CSLReferences} +\section{Author Contributions}\label{author-contributions} +\begin{enumerate} +\item Albert Krewinkel - Software (Equal) and Methodology +\item Juanjo Bazán - Software (Equal) +\item Arfon M. Smith - Software (Equal) and Supervision (Lead) +\end{enumerate} + \end{document} diff --git a/test/expected-pub/paper.tex b/test/expected-pub/paper.tex index d1f7d9d..26d2998 100644 --- a/test/expected-pub/paper.tex +++ b/test/expected-pub/paper.tex @@ -843,6 +843,103 @@ \subsubsection{Example}\label{example} \end{Highlighting} \end{Shaded} +\subsection{Contributor Roles}\label{contributor-roles} + +The \href{https://credit.niso.org/contributor-roles}{Contribution Role +Taxonomy (CRediT)} defines fourteen standard roles of authors. Each +author can be annotated with one or more contribution roles. + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + \href{https://credit.niso.org/contributor-roles/conceptualization}{conceptualization} +\item + \href{https://credit.niso.org/contributor-roles/data-curation}{data-curation} +\item + \href{https://credit.niso.org/contributor-roles/formal-analysis}{formal-analysis} +\item + \href{https://credit.niso.org/contributor-roles/funding-acquisition}{funding-acquisition} +\item + \href{https://credit.niso.org/contributor-roles/investigation}{investigation} +\item + \href{https://credit.niso.org/contributor-roles/methodology}{methodology} +\item + \href{https://credit.niso.org/contributor-roles/project-administration}{project-administration} +\item + \href{https://credit.niso.org/contributor-roles/resources}{resources} +\item + \href{https://credit.niso.org/contributor-roles/software}{software} +\item + \href{https://credit.niso.org/contributor-roles/supervision}{supervision} +\item + \href{https://credit.niso.org/contributor-roles/validation}{validation} +\item + \href{https://credit.niso.org/contributor-roles/visualization}{visualization} +\item + \href{https://credit.niso.org/contributor-roles/writing-original-draft}{writing-original-draft} +\item + \href{https://credit.niso.org/contributor-roles/writing-review-editing}{writing-review-editing} +\end{enumerate} + +JATS also specifies three degrees which can be used to quantify the +impact of a contribution: + +\begin{enumerate} +\def\labelenumi{\arabic{enumi}.} +\tightlist +\item + \texttt{Lead} +\item + \texttt{Supporting} +\item + \texttt{Equal} - for use if multiple equivalent leads +\end{enumerate} + +Together, these can be used to identify which authors materially +contributed to the paper, such as through \texttt{formal-analysis} or +\texttt{data-curation} and which authors contributed immaterially, such +as through \texttt{supervision}. It also allows for saying if multiple +people made the same kind of contribution, who took the lead. + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{authors}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{name}\KeywordTok{:}\AttributeTok{ John Doe} +\AttributeTok{ }\FunctionTok{affiliation}\KeywordTok{:}\AttributeTok{ }\KeywordTok{[}\AttributeTok{ }\DecValTok{1}\AttributeTok{ }\KeywordTok{]} +\AttributeTok{ }\FunctionTok{roles}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{type}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}formal{-}analysis\textquotesingle{}} +\AttributeTok{ }\FunctionTok{degree}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}lead\textquotesingle{}} + +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{name}\KeywordTok{:}\AttributeTok{ John Boss} +\AttributeTok{ }\FunctionTok{affiliation}\KeywordTok{:}\AttributeTok{ }\KeywordTok{[}\AttributeTok{ }\DecValTok{1}\AttributeTok{ }\KeywordTok{]} +\AttributeTok{ }\FunctionTok{roles}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{type}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}funding{-}acquisition\textquotesingle{}} +\AttributeTok{ }\FunctionTok{degree}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}lead\textquotesingle{}} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{type}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}supervision\textquotesingle{}} +\AttributeTok{ }\FunctionTok{degree}\KeywordTok{:}\AttributeTok{ }\StringTok{\textquotesingle{}lead\textquotesingle{}} +\end{Highlighting} +\end{Shaded} + +Roles are optional, and within roles, degrees are optional. It's +possible to shorthand roles by using strings directly: + +\begin{Shaded} +\begin{Highlighting}[] +\FunctionTok{authors}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{name}\KeywordTok{:}\AttributeTok{ John Doe} +\AttributeTok{ }\FunctionTok{affiliation}\KeywordTok{:}\AttributeTok{ }\KeywordTok{[}\AttributeTok{ }\DecValTok{1}\AttributeTok{ }\KeywordTok{]} +\AttributeTok{ }\FunctionTok{roles}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\StringTok{\textquotesingle{}formal{-}analysis\textquotesingle{}} + +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\FunctionTok{name}\KeywordTok{:}\AttributeTok{ John Boss} +\AttributeTok{ }\FunctionTok{affiliation}\KeywordTok{:}\AttributeTok{ }\KeywordTok{[}\AttributeTok{ }\DecValTok{1}\AttributeTok{ }\KeywordTok{]} +\AttributeTok{ }\FunctionTok{roles}\KeywordTok{:} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\StringTok{\textquotesingle{}funding{-}acquisition\textquotesingle{}} +\AttributeTok{ }\KeywordTok{{-}}\AttributeTok{ }\StringTok{\textquotesingle{}supervision\textquotesingle{}} +\end{Highlighting} +\end{Shaded} + \subsection{Affiliations}\label{affiliations} Each affiliation requires an \texttt{index} and \texttt{name}. @@ -1024,4 +1121,11 @@ \section{Behind the scenes}\label{behind-the-scenes} \end{CSLReferences} +\section{Author Contributions}\label{author-contributions} +\begin{enumerate} +\item Albert Krewinkel - Software (Equal) and Methodology +\item Juanjo Bazán - Software (Equal) +\item Arfon M. Smith - Software (Equal) and Supervision (Lead) +\end{enumerate} + \end{document}