After evaluating existing BibTex libraries for C# .NET, I decided to make my own. The most promising one (https://github.com/MaikelH/BibtexLibrary) proved to be incredibly show and buggy, once I tried to load a large BibTex file, exported from Mendeley Desktop. Therefore, I made imbSCI.BibTex from scratch, expanding functionality beyond what was provided by other open source projects.
GitHub:
https://github.com/gorangrubic/imbSCI.Standard/tree/master/imbSCI.BibTex
NuGet:
https://www.nuget.org/packages/imbSCI.BibTex/0.9.5
imbSCI.BibTex is a comprehensive BibTex format API, allowing you to:
- Load, combine, modify and save BibTex citation definitions
- Access BibTex entries via value pair dictionaries (auto-discovery of entry fields) or via strong typed class
- Extend basic BibTexEntryModel class to gain support less popular and/or special application BibTex tags
- Generate Excel spreadsheet and CSV data table export, with data from BibTex file(s)
- High-level, single-call citation report generation, using one or all BibTex files from a directory
- Encoding of LaTeXLaTeX (/ˈlɑːtɛx/ LAH-tekh, обично се изговара као /ˈlɑːtɛk/ LAH-tek или /ˈleɪtɛk/ LAY-tek,[1] стилизован као {\displaystyle \mathrm {L\!\!^{{}_{\scriptstyle A}}\!\!\!\!\!\;\;T\!_{\displaystyle E}\!X} }, и скраћено Лампорт Текс) је описни језик и систем за припрему докумената.[2] Разликује се од типичних процесора за обраду текста као што су Microsoft Word, LibreOffice и Apple Pages у ком писац користи обичан текст за разлику од форматираног текста, ослањајући се на означавање... symbols to UTF-8 equivalents, and vice versa
- Fast parsing, using multi-threading and compiled Regex queries
- Generation of BibTex format output
One of example methods:
using imbSCI.Core.extensions.text; using imbSCI.Core.style.preset; using imbSCI.Data.enums.fields; using imbSCI.DataComplex.data; using imbSCI.DataComplex.extensions.data.formats; using imbSCI.DataComplex.tables; public class BibTexExamples : TestMicroEnvironmentBase public void Example3_LoadAndExportToExcel_ShortWay() { // Example 3: Short way - using imbSCI find file String path = folderResources.findFile("S0306457309000259.bib", SearchOption.AllDirectories); // High-level method, creates extended version of Excel file, with additional spreadsheet for Legend and other meta information var reportDataTable = BibTexTools.ExportToExcel(path, notation, log); // Now, let's load all *.bib files System.Collections.Generic.List<string> paths = folderResources.findFiles("*.bib", SearchOption.AllDirectories); // Exports all *.bib files System.Collections.Generic.List<DataTableForStatistics> exports = BibTexTools.ExportToExcel(paths, notation, log, null, folderResults); // Printing filename and destination path, to a ILogBuilder log builder foreach (var export in exports) { log.log(export.TableName + " exported to: " + export.lastFilePath); } } }