ezbib 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
ezbib-1.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Pranav Ravichandran
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
ezbib-1.0.0/PKG-INFO ADDED
@@ -0,0 +1,488 @@
1
+ Metadata-Version: 2.4
2
+ Name: ezbib
3
+ Version: 1.0.0
4
+ Summary: Universal, zero-dependency CLI tool to convert ORCID identifiers and DOIs into clean BibTeX, Markdown, or Plain Text citations.
5
+ Author: Pranav Ravichandran
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/prnvrvs/ezbib
8
+ Project-URL: Repository, https://github.com/prnvrvs/ezbib.git
9
+ Project-URL: Issues, https://github.com/prnvrvs/ezbib/issues
10
+ Keywords: ezbib,orcid,bibtex,doi,bibliography,academic,publications,crossref,latex,citations
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.7
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Topic :: Scientific/Engineering
26
+ Classifier: Topic :: Text Processing :: Markup :: LaTeX
27
+ Requires-Python: >=3.7
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Dynamic: license-file
31
+
32
+ <div align="center">
33
+
34
+ # πŸ“š ezbib
35
+
36
+ **Universal, zero-dependency CLI tool and Python library to convert ORCID profiles and DOIs into clean BibTeX, Markdown, and formatted academic citations.**
37
+
38
+ [![PyPI Version](https://img.shields.io/pypi/v/ezbib.svg?color=blue)](https://pypi.org/project/ezbib/)
39
+ [![Python Version](https://img.shields.io/badge/Python-3.7%2B-3776AB.svg?style=flat&logo=python&logoColor=white)](https://www.python.org/)
40
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
41
+ [![Dependencies](https://img.shields.io/badge/Dependencies-Zero%20(Standard%20Library)-success.svg)](https://docs.python.org/3/library/)
42
+ [![Package Format](https://img.shields.io/badge/Architecture-Single--File%20%2B%20Package-orange.svg)](pyproject.toml)
43
+ [![Platform](https://img.shields.io/badge/Platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey.svg)]()
44
+
45
+ [Quick Start](#-quick-start) β€’ [Why ezbib?](#-why-ezbib) β€’ [Features](#-key-features) β€’ [Installation](#-installation) β€’ [Usage Recipes](#-usage-recipes) β€’ [Citation Styles](#-citation-styles) β€’ [Python API](#-python-api) β€’ [BibLaTeX](#-grant-reporting--biblatex-integration) β€’ [FAQ](#-frequently-asked-questions)
46
+
47
+ ---
48
+
49
+ </div>
50
+
51
+ ## ⚑ Quick Start
52
+
53
+ ```bash
54
+ # 1. Fetch an entire ORCID profile as clean BibTeX
55
+ ezbib 0000-0002-1825-0097 -o publications.bib
56
+
57
+ # 2. Filter publications from 2021 onwards
58
+ ezbib 0000-0002-1825-0097 -y 2021 -o recent_papers.bib
59
+
60
+ # 3. Resolve a DOI directly into BibTeX
61
+ ezbib 10.1016/j.actamat.2025.121319
62
+
63
+ # 4. Generate formatted text citations (Nature, IEEE, APA, ACS, etc.)
64
+ ezbib 0000-0002-1825-0097 -f text --style nature
65
+
66
+ # 5. Export a clickable Markdown publication list for your CV or website
67
+ ezbib 0000-0002-1825-0097 -f markdown -o cv_publications.md
68
+
69
+ # 6. Read DOIs from a pipe or standard input
70
+ cat dois.txt | ezbib - -o references.bib
71
+ ```
72
+
73
+ > **Note:** `ezbib`, `orcid2bib`, and `orcid2bibtex` commands are all supported and can be used interchangeably!
74
+
75
+ ---
76
+
77
+ ## πŸ’‘ Why `ezbib`?
78
+
79
+ Raw bibliographic metadata from academic APIs is frequently inconsistent, filled with XML fragments, cluttered with unreviewed preprints, and cumbersome to organize. `ezbib` was built specifically for researchers, lab managers, and scientific developers who need clean, publication-ready records without installing heavy dependencies.
80
+
81
+ | Feature | Raw API / Basic Tools | **`ezbib`** |
82
+ | :--- | :---: | :---: |
83
+ | **Preprint Deduplication** | ❌ Duplicate entries for arXiv & Journal | βœ… **Intelligent fuzzy deduplication** |
84
+ | **LaTeX MathML Cleaning** | ❌ Raw `<mml:math>` breaks LaTeX compiler | βœ… **Auto-converts MathML to `$\alpha$`, `$\Sigma$`, etc.** |
85
+ | **Output Formats** | ❌ `.bib` only | βœ… **BibTeX, Interactive Markdown, and CSL Plain Text** |
86
+ | **Citation Styles** | ❌ Fixed format | βœ… **8+ Academic Styles (Nature, IEEE, APA, ACS, etc.)** |
87
+ | **Grant Reporting** | ❌ Manual categorization | βœ… **Auto-tags `quality_assured` for DFG, EU, & NSF** |
88
+ | **Dependencies** | Requires third-party HTTP & parsing packages | βœ… **Zero external dependencies** (Standard Library only) |
89
+ | **CLI & Piping** | ❌ Manual file input only | βœ… **Direct DOIs, multi-DOIs, and stdin pipes (`-`)** |
90
+
91
+ ---
92
+
93
+ ## πŸ—οΈ Architecture & Pipeline
94
+
95
+ ```mermaid
96
+ flowchart LR
97
+ subgraph Inputs
98
+ A[ORCID iD / URL]
99
+ B[DOI / DOI URL / List]
100
+ C[Standard Input / Pipe]
101
+ end
102
+
103
+ subgraph Core Engine
104
+ D[ORCID v3.0 REST API]
105
+ E[Crossref CSL Negotiation]
106
+ F[LaTeX / MathML Sanitizer]
107
+ G[Preprint Deduplicator]
108
+ end
109
+
110
+ subgraph Output Formats
111
+ H[Clean BibLaTeX\n+ Grant Tags]
112
+ I[Interactive Markdown\nfor CVs / Sites]
113
+ J[Formatted Text\nNature, IEEE, APA, ACS]
114
+ end
115
+
116
+ A --> D
117
+ B --> E
118
+ C --> B
119
+ D --> F
120
+ E --> F
121
+ F --> G
122
+ G --> H
123
+ G --> I
124
+ G --> J
125
+ ```
126
+
127
+ ---
128
+
129
+ ## ✨ Key Features
130
+
131
+ - πŸ“¦ **Zero External Dependencies** β€” Built 100% on the Python Standard Library (`urllib`, `json`, `re`, `html`, `argparse`). No third-party packages required.
132
+ - ⚑ **First-Class Executable & Package** β€” Install via `pip install ezbib`, run directly as a standalone executable script (`./orcid2bib.py`), or execute via `python3 -m orcid2bib`.
133
+ - πŸ”„ **Smart Input Detection** β€” Seamlessly parses bare ORCID iDs (`0000-0002-1825-0097`), full ORCID URLs (`https://orcid.org/...`), single/multiple DOIs (`10.1016/...`), and piped standard input (`-`).
134
+ - 🧹 **LaTeX & MathML Sanitization** β€” Cleans XML entities and converts complex MathML tags into standard LaTeX math (e.g. `<mml:math><mml:mi>Ξ±</mml:mi></mml:math>` $\rightarrow$ `$\alpha$`, `$\Sigma$`).
135
+ - 🧠 **Intelligent Preprint Deduplication** β€” Identifies and suppresses preprint versions (arXiv, bioRxiv, ChemRxiv, Research Square) when peer-reviewed journal versions exist in the profile.
136
+ - 🏷️ **Grant-Ready BibLaTeX Categorization** β€” Injects `keywords = {quality_assured}` or `keywords = {other}` to instantly generate split CV/grant bibliographies (e.g., for DFG, EU Horizon Europe, and NSF).
137
+ - 🎨 **8+ Academic Citation Styles** β€” Outputs styled bibliographies in APA 7th, Nature, IEEE, ACS, Elsevier, Chicago, Harvard, and Springer formats.
138
+ - πŸ“€ **Multiple Export Formats** β€” Produces structured `.bib`, clickable `.md` lists with DOI links, or styled plain text.
139
+
140
+ ---
141
+
142
+ ## πŸš€ Installation
143
+
144
+ ### Option 1: Install with `pip` / `pipx` (Recommended)
145
+
146
+ ```bash
147
+ # Install from PyPI
148
+ pip install ezbib
149
+
150
+ # Or install in an isolated environment with pipx
151
+ pipx install ezbib
152
+ ```
153
+
154
+ Or install the latest development version directly from GitHub:
155
+
156
+ ```bash
157
+ pip install git+https://github.com/prnvrvs/ezbib.git
158
+ ```
159
+
160
+ ### Option 2: Clone and Install Locally
161
+
162
+ ```bash
163
+ git clone https://github.com/prnvrvs/ezbib.git
164
+ cd ezbib
165
+ pip install .
166
+ ```
167
+
168
+ For editable development mode:
169
+ ```bash
170
+ pip install -e .
171
+ ```
172
+
173
+ ### Option 3: Standalone Single-File Script (Zero Installation)
174
+
175
+ Because `ezbib` is self-contained with no external dependencies, you can download `orcid2bib.py` directly and execute it anywhere:
176
+
177
+ ```bash
178
+ # Download single script
179
+ curl -O https://raw.githubusercontent.com/prnvrvs/ezbib/main/orcid2bib.py
180
+ chmod +x orcid2bib.py
181
+
182
+ # Run directly:
183
+ ./orcid2bib.py 0000-0002-1825-0097
184
+ ```
185
+
186
+ ### Option 4: Run as a Python Module
187
+
188
+ ```bash
189
+ python3 -m orcid2bib 0000-0002-1825-0097
190
+ ```
191
+
192
+ ---
193
+
194
+ ## πŸ“– Usage Recipes
195
+
196
+ ### 1. πŸ†” ORCID Profile Lookup
197
+
198
+ Fetch all publications for an ORCID profile and output clean BibTeX:
199
+
200
+ ```bash
201
+ # Print to terminal
202
+ ezbib 0000-0002-1825-0097
203
+
204
+ # Save to a .bib file
205
+ ezbib 0000-0002-1825-0097 -o my_publications.bib
206
+
207
+ # Full ORCID URL is also accepted
208
+ ezbib https://orcid.org/0000-0002-1825-0097 -o my_publications.bib
209
+ ```
210
+
211
+ ---
212
+
213
+ ### 2. πŸ“… Year Filtering
214
+
215
+ Filter works to match grant reporting periods, tenure reviews, or recent activity:
216
+
217
+ ```bash
218
+ # Publications from 2021 to present
219
+ ezbib 0000-0002-1825-0097 -y 2021 -o recent.bib
220
+
221
+ # Publications within a specific year window (2020-2024)
222
+ ezbib 0000-0002-1825-0097 --min-year 2020 --max-year 2024 -o phd_papers.bib
223
+ ```
224
+
225
+ ---
226
+
227
+ ### 3. πŸ”Ž Direct DOI Resolution
228
+
229
+ Retrieve clean BibTeX for one or more DOIs:
230
+
231
+ ```bash
232
+ # Single DOI
233
+ ezbib 10.1016/j.actamat.2025.121319
234
+
235
+ # Full DOI URL
236
+ ezbib https://doi.org/10.1016/j.actamat.2025.121319
237
+
238
+ # Multiple comma-separated DOIs
239
+ ezbib -d 10.1016/j.actamat.2025.121319,10.1016/j.ijhydene.2025.02.435 -o papers.bib
240
+ ```
241
+
242
+ ---
243
+
244
+ ### 4. 🚰 Standard Input & Shell Pipelines
245
+
246
+ Pipe DOIs or ORCID iDs from other command-line tools:
247
+
248
+ ```bash
249
+ # Pipe a single DOI
250
+ echo "10.1016/j.actamat.2025.121319" | ezbib -
251
+
252
+ # Batch process a text file of DOIs (one per line)
253
+ cat doi_list.txt | ezbib - -o bibliography.bib
254
+ ```
255
+
256
+ ---
257
+
258
+ ### 5. πŸ“ Markdown Export (For CVs & Academic Websites)
259
+
260
+ Generate a numbered Markdown publication list with clickable DOI hyperlinks:
261
+
262
+ ```bash
263
+ ezbib 0000-0002-1825-0097 -y 2021 -f markdown -o cv_publications.md
264
+ ```
265
+
266
+ **Example Markdown Output:**
267
+ ```markdown
268
+ # Publications from ORCID 0000-0002-1825-0097
269
+
270
+ 1. **Hydrogen embrittlement mechanisms in high-strength alloys** (2025) β€” *Acta Materialia* ([DOI: 10.1016/j.actamat.2025.121319](https://doi.org/10.1016/j.actamat.2025.121319))
271
+ 2. **Phase transformation dynamics under extreme strain** (2024) β€” *Nature Materials* ([DOI: 10.1038/s41563-024-00000-x](https://doi.org/10.1038/s41563-024-00000-x))
272
+ ```
273
+
274
+ ---
275
+
276
+ ### 6. πŸ“„ Styled Plain Text Bibliographies
277
+
278
+ Generate pre-formatted citations in your desired journal format:
279
+
280
+ ```bash
281
+ # Default APA 7th style
282
+ ezbib 10.1016/j.actamat.2025.121319 -f text
283
+
284
+ # Nature style
285
+ ezbib 10.1016/j.actamat.2025.121319 -f text --style nature
286
+
287
+ # IEEE style
288
+ ezbib 10.1016/j.actamat.2025.121319 -f text --style ieee
289
+
290
+ # ACS style
291
+ ezbib 10.1016/j.actamat.2025.121319 -f text --style acs
292
+ ```
293
+
294
+ ---
295
+
296
+ ### 7. πŸ”„ Controlling Preprint Deduplication
297
+
298
+ By default, `ezbib` suppresses preprints (e.g. arXiv, bioRxiv) if a corresponding journal article exists in the profile. To keep all raw entries without deduplication:
299
+
300
+ ```bash
301
+ ezbib 0000-0002-1825-0097 --no-dedup -o all_raw_records.bib
302
+ ```
303
+
304
+ ---
305
+
306
+ ### 8. πŸ‘₯ Batch Processing for Research Teams
307
+
308
+ Fetch publications for an entire lab or research group using a simple Bash script:
309
+
310
+ ```bash
311
+ #!/usr/bin/env bash
312
+
313
+ declare -A LAB_MEMBERS=(
314
+ ["Prof_Smith"]="0000-0002-1825-0097"
315
+ ["Dr_Johnson"]="0000-0001-5109-3700"
316
+ ["Dr_Lee"]="0000-0003-1234-5678"
317
+ )
318
+
319
+ for NAME in "${!LAB_MEMBERS[@]}"; do
320
+ ORCID="${LAB_MEMBERS[$NAME]}"
321
+ echo "[*] Fetching publications for $NAME ($ORCID)..."
322
+ ezbib "$ORCID" -y 2021 -o "${NAME}_publications.bib"
323
+ done
324
+ ```
325
+
326
+ ---
327
+
328
+ ## 🎨 Citation Styles
329
+
330
+ | Style | Flag | Example Output |
331
+ | :--- | :--- | :--- |
332
+ | **APA 7th** *(default)* | `-s apa` | Smith, J., & Doe, J. (2024). Machine learning models... *Journal of Materials Science*, 59, 12048. |
333
+ | **Nature** | `-s nature` | 1. Smith, J. & Doe, J. Machine learning models... *Journal of Materials Science* **59**, 12048 (2024). |
334
+ | **IEEE** | `-s ieee` | [1] J. Smith and J. Doe, β€œMachine learning models...,” *Journal of Materials Science*, vol. 59, 2024. |
335
+ | **Elsevier** | `-s elsevier` | [1] J. Smith, J. Doe, Machine learning models..., *Journal of Materials Science* 59 (2024) 12048. |
336
+ | **ACS** | `-s acs` | (1) Smith, J.; Doe, J. Machine Learning Models... *Journal of Materials Science* **2024**, *59*, 12048. |
337
+ | **Chicago** | `-s chicago` | Smith, Jane, and John Doe. 2024. β€œMachine Learning Models...” *Journal of Materials Science* 59. |
338
+ | **Harvard** | `-s harvard` | Smith, J., Doe, J., 2024. Machine learning models... *Journal of Materials Science* 59, 12048. |
339
+ | **Springer** | `-s springer` | Smith J, Doe J (2024) Machine learning models... *Journal of Materials Science* 59:12048. |
340
+ | **MLA** | `-s mla` | Smith, Jane, and John Doe. "Machine Learning Models..." *Journal of Materials Science*, vol. 59, 2024. |
341
+
342
+ ---
343
+
344
+ ## 🧭 CLI Command-Line Reference
345
+
346
+ ```text
347
+ usage: ezbib [-h] [-d DOI] [-y YEAR] [--max-year YEAR] [-o FILE]
348
+ [-f {bibtex,markdown,text,apa}] [-s STYLE] [--no-dedup] [-v]
349
+ [target]
350
+ ```
351
+
352
+ | Argument / Flag | Short | Type | Default | Description |
353
+ | :--- | :---: | :---: | :---: | :--- |
354
+ | `target` | β€” | `str` | `None` | Positional target: ORCID iD, DOI, full URL, or `-` for stdin |
355
+ | `--doi` | `-d` | `str` | `None` | Explicit DOI or comma-separated list of DOIs |
356
+ | `--min-year` | `-y` | `int` | `None` | Include publications published in or after this year |
357
+ | `--max-year` | β€” | `int` | `None` | Include publications published up to this year |
358
+ | `--output` | `-o` | `str` | `stdout` | Write output to a specified file |
359
+ | `--format` | `-f` | `choice` | `bibtex` | Output format: `bibtex`, `markdown`, `text`, `apa` |
360
+ | `--style` | `-s` | `str` | `apa` | Citation style for `text` format (e.g. `nature`, `ieee`, `acs`) |
361
+ | `--no-dedup` | β€” | `flag` | `False` | Disable smart preprint deduplication |
362
+ | `--version` | `-v` | `flag` | β€” | Show program version and exit |
363
+ | `--help` | `-h` | `flag` | β€” | Show help message and usage examples |
364
+
365
+ ---
366
+
367
+ ## 🐍 Python API
368
+
369
+ `ezbib` can also be imported and used programmatically in any Python 3.7+ application:
370
+
371
+ ```python
372
+ import orcid2bib as ezbib
373
+
374
+ # 1. Query an ORCID profile
375
+ works = ezbib.fetch_orcid(
376
+ "0000-0002-1825-0097",
377
+ min_year=2021,
378
+ dedup=True
379
+ )
380
+
381
+ for work in works:
382
+ print(f"[{work['year']}] {work['title']} (DOI: {work['doi']})")
383
+
384
+ # 2. Convert DOI to clean, formatted BibTeX
385
+ bibtex_entry = ezbib.doi_to_bibtex(
386
+ "10.1016/j.actamat.2025.121319",
387
+ extra_keywords="quality_assured"
388
+ )
389
+ print(bibtex_entry)
390
+
391
+ # 3. Format DOI citation into a specific journal style
392
+ nature_citation = ezbib.doi_to_text(
393
+ "10.1016/j.actamat.2025.121319",
394
+ style="nature"
395
+ )
396
+ print(nature_citation)
397
+ ```
398
+
399
+ ---
400
+
401
+ ## πŸ“‘ Grant Reporting & BibLaTeX Integration
402
+
403
+ `ezbib` automatically categorizes works by injecting `keywords = {quality_assured}` for peer-reviewed journal articles and `keywords = {other}` for preprints, conference proceedings, or unreviewed outputs.
404
+
405
+ This makes generating split academic CVs (such as for **DFG**, **EU Horizon Europe**, or **NSF** proposals) straightforward in LaTeX:
406
+
407
+ ```latex
408
+ \documentclass[11pt,a4paper]{article}
409
+
410
+ \usepackage[utf8]{inputenc}
411
+ \usepackage[T1]{fontenc}
412
+ \usepackage{mathptmx}
413
+ \usepackage[margin=2.2cm]{geometry}
414
+
415
+ \usepackage[
416
+ backend=biber,
417
+ style=numeric,
418
+ sorting=ydnt,
419
+ maxbibnames=99,
420
+ defernumbers=true
421
+ ]{biblatex}
422
+
423
+ \addbibresource{publications.bib}
424
+
425
+ \begin{document}
426
+
427
+ \section*{Principal Investigator β€” List of Publications}
428
+ \nocite{*}
429
+
430
+ \subsection*{Category A: Peer-Reviewed & Quality-Assured Journal Publications}
431
+ \printbibliography[
432
+ keyword=quality_assured,
433
+ heading=none,
434
+ resetnumbers=true
435
+ ]
436
+
437
+ \subsection*{Category B: Preprints, Conference Proceedings & Other Works}
438
+ \printbibliography[
439
+ keyword=other,
440
+ heading=none,
441
+ resetnumbers=true
442
+ ]
443
+
444
+ \end{document}
445
+ ```
446
+
447
+ **To compile:**
448
+ ```bash
449
+ pdflatex publication_list.tex
450
+ biber publication_list
451
+ pdflatex publication_list.tex
452
+ ```
453
+
454
+ ---
455
+
456
+ ## ❓ Frequently Asked Questions
457
+
458
+ <details>
459
+ <summary><b>Does ezbib require an ORCID API key or account?</b></summary>
460
+ <br>
461
+ No. Public ORCID profiles are queried directly through the public ORCID REST API v3.0, and DOI metadata is resolved via Crossref content negotiation without requiring an API key.
462
+ </details>
463
+
464
+ <details>
465
+ <summary><b>What happens if an ORCID publication has no DOI?</b></summary>
466
+ <br>
467
+ If a work in the ORCID record does not have an attached DOI, <code>ezbib</code> outputs a clear commented placeholder in the BibTeX file:
468
+ <pre><code>% Work without DOI: Title of Publication (Year)</code></pre>
469
+ This ensures no entries are silently dropped while keeping your <code>.bib</code> file syntactically valid.
470
+ </details>
471
+
472
+ <details>
473
+ <summary><b>How does preprint deduplication work?</b></summary>
474
+ <br>
475
+ Preprints (identified by journal titles containing <code>arxiv</code>, <code>biorxiv</code>, <code>chemrxiv</code>, <code>research square</code> or type <code>PREPRINT</code>) are fuzzy-matched against peer-reviewed articles in the same ORCID profile. If a published journal version exists, the preprint is automatically suppressed unless <code>--no-dedup</code> is specified.
476
+ </details>
477
+
478
+ <details>
479
+ <summary><b>Can I format citations in styles not listed above?</b></summary>
480
+ <br>
481
+ Yes. Any valid CSL (Citation Style Language) style identifier supported by the Crossref citation service can be passed directly to <code>--style</code> (e.g. <code>--style cell</code>, <code>--style pnas</code>).
482
+ </details>
483
+
484
+ ---
485
+
486
+ ## πŸ“„ License
487
+
488
+ This project is licensed under the [MIT License](LICENSE) β€” feel free to use it in academic, open-source, and commercial projects.