Manual Reference Source

app/modules/utils/bibtex.js

const from_bibtex = {
    '\\url': '',
    '\\href': '',
    '{\\textexclamdown}': '\u00A1',
    '{\\textcent}': '\u00A2',
    '{\\textsterling}': '\u00A3',
    '{\\textyen}': '\u00A5',
    '{\\textbrokenbar}': '\u00A6',
    '{\\textsection}': '\u00A7',
    '{\\textasciidieresis}': '\u00A8',
    '{\\textcopyright}': '\u00A9',
    '{\\textordfeminine}': '\u00AA',
    '{\\guillemotleft}': '\u00AB',
    '{\\textlnot}': '\u00AC',
    '{\\textregistered}': '\u00AE',
    '{\\textasciimacron}': '\u00AF',
    '{\\textdegree}': '\u00B0',
    '{\\textpm}': '\u00B1',
    '{\\texttwosuperior}': '\u00B2',
    '{\\textthreesuperior}': '\u00B3',
    '{\\textasciiacute}': '\u00B4',
    '{\\textmu}': '\u00B5',
    '{\\textparagraph}': '\u00B6',
    '{\\textperiodcentered}': '\u00B7',
    '{\\c\\ }': '\u00B8',
    '{\\textonesuperior}': '\u00B9',
    '{\\textordmasculine}': '\u00BA',
    '{\\guillemotright}': '\u00BB',
    '{\\textonequarter}': '\u00BC',
    '{\\textonehalf}': '\u00BD',
    '{\\textthreequarters}': '\u00BE',
    '{\\textquestiondown}': '\u00BF',
    '{\\AE}': '\u00C6',
    '{\\DH}': '\u00D0',
    '{\\texttimes}': '\u00D7',
    '{\\O}': '\u00D8',
    '{\\TH}': '\u00DE',
    '{\\ss}': '\u00DF',
    '{\\ae}': '\u00E6',
    '{\\dh}': '\u00F0',
    '{\\textdiv}': '\u00F7',
    '{\\o}': '\u00F8',
    '{\\th}': '\u00FE',
    '{\\i}': '\u0131',
    '{\\NG}': '\u014A',
    '{\\ng}': '\u014B',
    '{\\OE}': '\u0152',
    '{\\oe}': '\u0153',
    '{\\textasciicircum}': '\u02C6',
    '{\\textacutedbl}': '\u02DD',
    '$\\Gamma$': '\u0393',
    '$\\Delta$': '\u0394',
    '$\\Theta$': '\u0398',
    '$\\Lambda$': '\u039B',
    '$\\Xi$': '\u039E',
    '$\\Pi$': '\u03A0',
    '$\\Sigma$': '\u03A3',
    '$\\Phi$': '\u03A6',
    '$\\Psi$': '\u03A8',
    '$\\Omega$': '\u03A9',
    '$\\alpha$': '\u03B1',
    '$\\beta$': '\u03B2',
    '$\\gamma$': '\u03B3',
    '$\\delta$': '\u03B4',
    '$\\varepsilon$': '\u03B5',
    '$\\zeta$': '\u03B6',
    '$\\eta$': '\u03B7',
    '$\\theta$': '\u03B8',
    '$\\iota$': '\u03B9',
    '$\\kappa$': '\u03BA',
    '$\\lambda$': '\u03BB',
    '$\\mu$': '\u03BC',
    '$\\nu$': '\u03BD',
    '$\\xi$': '\u03BE',
    '$\\pi$': '\u03C0',
    '$\\rho$': '\u03C1',
    '$\\varsigma$': '\u03C2',
    '$\\sigma$': '\u03C3',
    '$\\tau$': '\u03C4',
    '$\\upsilon$': '\u03C5',
    '$\\varphi$': '\u03C6',
    '$\\chi$': '\u03C7',
    '$\\psi$': '\u03C8',
    '$\\omega$': '\u03C9',
    '$\\vartheta$': '\u03D1',
    '$\\Upsilon$': '\u03D2',
    '$\\phi$': '\u03D5',
    '$\\varpi$': '\u03D6',
    '$\\varrho$': '\u03F1',
    '$\\epsilon$': '\u03F5',
    '{\\textendash}': '\u2013',
    '{\\textemdash}': '\u2014',
    '---': '\u2014',
    '--': '\u2013',
    '{\\textbardbl}': '\u2016',
    '{\\textunderscore}': '\u2017',
    '{\\textquoteleft}': '\u2018',
    '{\\textquoteright}': '\u2019',
    '{\\quotesinglbase}': '\u201A',
    '{\\textquotedblleft}': '\u201C',
    '{\\textquotedblright}': '\u201D',
    '{\\quotedblbase}': '\u201E',
    '{\\textdagger}': '\u2020',
    '{\\textdaggerdbl}': '\u2021',
    '{\\textbullet}': '\u2022',
    '{\\textellipsis}': '\u2026',
    '{\\textperthousand}': '\u2030',
    "'''": '\u2034',
    "''": '\u201D',
    '``': '\u201C',
    '```': '\u2037',
    '{\\guilsinglleft}': '\u2039',
    '{\\guilsinglright}': '\u203A',
    '!!': '\u203C',
    '{\\textfractionsolidus}': '\u2044',
    '?!': '\u2048',
    '!?': '\u2049',
    '$^{0}$': '\u2070',
    '$^{4}$': '\u2074',
    '$^{5}$': '\u2075',
    '$^{6}$': '\u2076',
    '$^{7}$': '\u2077',
    '$^{8}$': '\u2078',
    '$^{9}$': '\u2079',
    '$^{+}$': '\u207A',
    '$^{-}$': '\u207B',
    '$^{=}$': '\u207C',
    '$^{(}$': '\u207D',
    '$^{)}$': '\u207E',
    '$^{n}$': '\u207F',
    '$_{0}$': '\u2080',
    '$_{1}$': '\u2081',
    '$_{2}$': '\u2082',
    '$_{3}$': '\u2083',
    '$_{4}$': '\u2084',
    '$_{5}$': '\u2085',
    '$_{6}$': '\u2086',
    '$_{7}$': '\u2087',
    '$_{8}$': '\u2088',
    '$_{9}$': '\u2089',
    '$_{+}$': '\u208A',
    '$_{-}$': '\u208B',
    '$_{=}$': '\u208C',
    '$_{(}$': '\u208D',
    '$_{)}$': '\u208E',
    '{\\texteuro}': '\u20AC',
    '{\\textcelsius}': '\u2103',
    '{\\textnumero}': '\u2116',
    '{\\textcircledP}': '\u2117',
    '{\\textservicemark}': '\u2120',
    '{TEL}': '\u2121',
    '{\\texttrademark}': '\u2122',
    '{\\textohm}': '\u2126',
    '{\\textestimated}': '\u212E',
    '{\\`A}': '\u00C0',
    "{\\'A}": '\u00C1',
    '{\\^A}': '\u00C2',
    '{\\~A}': '\u00C3',
    '{\\"A}': '\u00C4',
    '{\\r A}': '\u00C5',
    '{\\c C}': '\u00C7',
    '{\\`E}': '\u00C8',
    "{\\'E}": '\u00C9',
    '{\\^E}': '\u00CA',
    '{\\"E}': '\u00CB',
    '{\\`I}': '\u00CC',
    "{\\'I}": '\u00CD',
    '{\\^I}': '\u00CE',
    '{\\"I}': '\u00CF',
    '{\\~N}': '\u00D1',
    '{\\`O}': '\u00D2',
    "{\\'O}": '\u00D3',
    '{\\^O}': '\u00D4',
    '{\\~O}': '\u00D5',
    '{\\"O}': '\u00D6',
    '{\\`U}': '\u00D9',
    "{\\'U}": '\u00DA',
    '{\\^U}': '\u00DB',
    '{\\"U}': '\u00DC',
    "{\\'Y}": '\u00DD',
    '{\\`a}': '\u00E0',
    "{\\'a}": '\u00E1',
    '{\\^a}': '\u00E2',
    '{\\~a}': '\u00E3',
    '{\\"a}': '\u00E4',
    '{\\r a}': '\u00E5',
    '{\\c c}': '\u00E7',
    '{\\`e}': '\u00E8',
    "{\\'e}": '\u00E9',
    '{\\^e}': '\u00EA',
    '{\\"e}': '\u00EB',
    '{\\`i}': '\u00EC',
    "{\\'i}": '\u00ED',
    '{\\^i}': '\u00EE',
    '{\\"i}': '\u00EF',
    '{\\~n}': '\u00F1',
    '{\\`o}': '\u00F2',
    "{\\'o}": '\u00F3',
    '{\\^o}': '\u00F4',
    '{\\~o}': '\u00F5',
    '{\\"o}': '\u00F6',
    '{\\`u}': '\u00F9',
    "{\\'u}": '\u00FA',
    '{\\^u}': '\u00FB',
    '{\\"u}': '\u00FC',
    "{\\'y}": '\u00FD',
    '{\\"y}': '\u00FF',
    '{\\=A}': '\u0100',
    '{\\=a}': '\u0101',
    '{\\u A}': '\u0102',
    '{\\u a}': '\u0103',
    '{\\k A}': '\u0104',
    '{\\k a}': '\u0105',
    "{\\'C}": '\u0106',
    "{\\'c}": '\u0107',
    '{\\^C}': '\u0108',
    '{\\^c}': '\u0109',
    '{\\.C}': '\u010A',
    '{\\.c}': '\u010B',
    '{\\v C}': '\u010C',
    '{\\v c}': '\u010D',
    '{\\v D}': '\u010E',
    '{\\v d}': '\u010F',
    '{\\=E}': '\u0112',
    '{\\=e}': '\u0113',
    '{\\u E}': '\u0114',
    '{\\u e}': '\u0115',
    '{\\.E}': '\u0116',
    '{\\.e}': '\u0117',
    '{\\k E}': '\u0118',
    '{\\k e}': '\u0119',
    '{\\v E}': '\u011A',
    '{\\v e}': '\u011B',
    '{\\^G}': '\u011C',
    '{\\^g}': '\u011D',
    '{\\u G}': '\u011E',
    '{\\u g}': '\u011F',
    '{\\.G}': '\u0120',
    '{\\.g}': '\u0121',
    '{\\c G}': '\u0122',
    '{\\c g}': '\u0123',
    '{\\^H}': '\u0124',
    '{\\^h}': '\u0125',
    '{\\~I}': '\u0128',
    '{\\~i}': '\u0129',
    '{\\=I}': '\u012A',
    '{\\=i}': '\u012B',
    '{\\=\\i}': '\u012B',
    '{\\u I}': '\u012C',
    '{\\u i}': '\u012D',
    '{\\k I}': '\u012E',
    '{\\k i}': '\u012F',
    '{\\.I}': '\u0130',
    '{\\^J}': '\u0134',
    '{\\^j}': '\u0135',
    '{\\c K}': '\u0136',
    '{\\c k}': '\u0137',
    "{\\'L}": '\u0139',
    "{\\'l}": '\u013A',
    '{\\c L}': '\u013B',
    '{\\c l}': '\u013C',
    '{\\v L}': '\u013D',
    '{\\v l}': '\u013E',
    '{\\L }': '\u0141',
    '{\\l }': '\u0142',
    "{\\'N}": '\u0143',
    "{\\'n}": '\u0144',
    '{\\c N}': '\u0145',
    '{\\c n}': '\u0146',
    '{\\v N}': '\u0147',
    '{\\v n}': '\u0148',
    '{\\=O}': '\u014C',
    '{\\=o}': '\u014D',
    '{\\u O}': '\u014E',
    '{\\u o}': '\u014F',
    '{\\H O}': '\u0150',
    '{\\H o}': '\u0151',
    "{\\'R}": '\u0154',
    "{\\'r}": '\u0155',
    '{\\c R}': '\u0156',
    '{\\c r}': '\u0157',
    '{\\v R}': '\u0158',
    '{\\v r}': '\u0159',
    "{\\'S}": '\u015A',
    "{\\'s}": '\u015B',
    '{\\^S}': '\u015C',
    '{\\^s}': '\u015D',
    '{\\c S}': '\u015E',
    '{\\c s}': '\u015F',
    '{\\v S}': '\u0160',
    '{\\v s}': '\u0161',
    '{\\c T}': '\u0162',
    '{\\c t}': '\u0163',
    '{\\v T}': '\u0164',
    '{\\v t}': '\u0165',
    '{\\~U}': '\u0168',
    '{\\~u}': '\u0169',
    '{\\=U}': '\u016A',
    '{\\=u}': '\u016B',
    '{\\u U}': '\u016C',
    '{\\u u}': '\u016D',
    '{\\r U}': '\u016E',
    '{\\r u}': '\u016F',
    '{\\H U}': '\u0170',
    '{\\H u}': '\u0171',
    '{\\k U}': '\u0172',
    '{\\k u}': '\u0173',
    '{\\^W}': '\u0174',
    '{\\^w}': '\u0175',
    '{\\^Y}': '\u0176',
    '{\\^y}': '\u0177',
    '{\\"Y}': '\u0178',
    "{\\'Z}": '\u0179',
    "{\\'z}": '\u017A',
    '{\\.Z}': '\u017B',
    '{\\.z}': '\u017C',
    '{\\v Z}': '\u017D',
    '{\\v z}': '\u017E',
    '{\\v A}': '\u01CD',
    '{\\v a}': '\u01CE',
    '{\\v I}': '\u01CF',
    '{\\v i}': '\u01D0',
    '{\\v O}': '\u01D1',
    '{\\v o}': '\u01D2',
    '{\\v U}': '\u01D3',
    '{\\v u}': '\u01D4',
    '{\\v G}': '\u01E6',
    '{\\v g}': '\u01E7',
    '{\\v K}': '\u01E8',
    '{\\v k}': '\u01E9',
    '{\\k O}': '\u01EA',
    '{\\k o}': '\u01EB',
    '{\\v j}': '\u01F0',
    "{\\'G}": '\u01F4',
    "{\\'g}": '\u01F5',
    '{\\.B}': '\u1E02',
    '{\\.b}': '\u1E03',
    '{\\d B}': '\u1E04',
    '{\\d b}': '\u1E05',
    '{\\b B}': '\u1E06',
    '{\\b b}': '\u1E07',
    '{\\.D}': '\u1E0A',
    '{\\.d}': '\u1E0B',
    '{\\d D}': '\u1E0C',
    '{\\d d}': '\u1E0D',
    '{\\b D}': '\u1E0E',
    '{\\b d}': '\u1E0F',
    '{\\c D}': '\u1E10',
    '{\\c d}': '\u1E11',
    '{\\.F}': '\u1E1E',
    '{\\.f}': '\u1E1F',
    '{\\=G}': '\u1E20',
    '{\\=g}': '\u1E21',
    '{\\.H}': '\u1E22',
    '{\\.h}': '\u1E23',
    '{\\d H}': '\u1E24',
    '{\\d h}': '\u1E25',
    '{\\"H}': '\u1E26',
    '{\\"h}': '\u1E27',
    '{\\c H}': '\u1E28',
    '{\\c h}': '\u1E29',
    "{\\'K}": '\u1E30',
    "{\\'k}": '\u1E31',
    '{\\d K}': '\u1E32',
    '{\\d k}': '\u1E33',
    '{\\b K}': '\u1E34',
    '{\\b k}': '\u1E35',
    '{\\d L}': '\u1E36',
    '{\\d l}': '\u1E37',
    '{\\b L}': '\u1E3A',
    '{\\b l}': '\u1E3B',
    "{\\'M}": '\u1E3E',
    "{\\'m}": '\u1E3F',
    '{\\.M}': '\u1E40',
    '{\\.m}': '\u1E41',
    '{\\d M}': '\u1E42',
    '{\\d m}': '\u1E43',
    '{\\.N}': '\u1E44',
    '{\\.n}': '\u1E45',
    '{\\d N}': '\u1E46',
    '{\\d n}': '\u1E47',
    '{\\b N}': '\u1E48',
    '{\\b n}': '\u1E49',
    "{\\'P}": '\u1E54',
    "{\\'p}": '\u1E55',
    '{\\.P}': '\u1E56',
    '{\\.p}': '\u1E57',
    '{\\.R}': '\u1E58',
    '{\\.r}': '\u1E59',
    '{\\d R}': '\u1E5A',
    '{\\d r}': '\u1E5B',
    '{\\b R}': '\u1E5E',
    '{\\b r}': '\u1E5F',
    '{\\.S}': '\u1E60',
    '{\\.s}': '\u1E61',
    '{\\d S}': '\u1E62',
    '{\\d s}': '\u1E63',
    '{\\.T}': '\u1E6A',
    '{\\.t}': '\u1E6B',
    '{\\d T}': '\u1E6C',
    '{\\d t}': '\u1E6D',
    '{\\b T}': '\u1E6E',
    '{\\b t}': '\u1E6F',
    '{\\~V}': '\u1E7C',
    '{\\~v}': '\u1E7D',
    '{\\d V}': '\u1E7E',
    '{\\d v}': '\u1E7F',
    '{\\`W}': '\u1E80',
    '{\\`w}': '\u1E81',
    "{\\'W}": '\u1E82',
    "{\\'w}": '\u1E83',
    '{\\"W}': '\u1E84',
    '{\\"w}': '\u1E85',
    '{\\.W}': '\u1E86',
    '{\\.w}': '\u1E87',
    '{\\d W}': '\u1E88',
    '{\\d w}': '\u1E89',
    '{\\.X}': '\u1E8A',
    '{\\.x}': '\u1E8B',
    '{\\"X}': '\u1E8C',
    '{\\"x}': '\u1E8D',
    '{\\.Y}': '\u1E8E',
    '{\\.y}': '\u1E8F',
    '{\\^Z}': '\u1E90',
    '{\\^z}': '\u1E91',
    '{\\d Z}': '\u1E92',
    '{\\d z}': '\u1E93',
    '{\\b Z}': '\u1E94',
    '{\\b z}': '\u1E95',
    '{\\b h}': '\u1E96',
    '{\\"t}': '\u1E97',
    '{\\r w}': '\u1E98',
    '{\\r y}': '\u1e99',
    '{\\d A}': '\u1EA0',
    '{\\d a}': '\u1EA1',
    '{\\d E}': '\u1EB8',
    '{\\d e}': '\u1EB9',
    '{\\~E}': '\u1EBC',
    '{\\~e}': '\u1EBD',
    '{\\d I}': '\u1ECA',
    '{\\d i}': '\u1ECB',
    '{\\d O}': '\u1ECC',
    '{\\d o}': '\u1ECD',
    '{\\d U}': '\u1EE4',
    '{\\d u}': '\u1EE5',
    '{\\`Y}': '\u1EF2',
    '{\\`y}': '\u1EF3',
    '{\\d Y}': '\u1EF4',
    '{\\d y}': '\u1EF5',
    '{\\~Y}': '\u1EF8',
    '{\\~y}': '\u1EF9',
    '{\\~}': '\u223C',
    '~': '\u00A0',
};

const to_bibtex = {
    '\u00A1': '{\\textexclamdown}',
    '\u00A2': '{\\textcent}',
    '\u00A3': '{\\textsterling}',
    '\u00A5': '{\\textyen}',
    '\u00A6': '{\\textbrokenbar}',
    '\u00A7': '{\\textsection}',
    '\u00A8': '{\\textasciidieresis}',
    '\u00A9': '{\\textcopyright}',
    ª: '{\\textordfeminine}',
    '\u00AB': '{\\guillemotleft}',
    '\u00AC': '{\\textlnot}',
    '\u00AE': '{\\textregistered}',
    '\u00AF': '{\\textasciimacron}',
    '\u00B0': '{\\textdegree}',
    '\u00B1': '{\\textpm}',
    '\u00B2': '{\\texttwosuperior}',
    '\u00B3': '{\\textthreesuperior}',
    '\u00B4': '{\\textasciiacute}',
    µ: '{\\textmu}',
    '\u00B6': '{\\textparagraph}',
    '\u00B7': '{\\textperiodcentered}',
    '\u00B8': '{\\c\\ }',
    '\u00B9': '{\\textonesuperior}',
    º: '{\\textordmasculine}',
    '\u00BB': '{\\guillemotright}',
    '\u00BC': '{\\textonequarter}',
    '\u00BD': '{\\textonehalf}',
    '\u00BE': '{\\textthreequarters}',
    '\u00BF': '{\\textquestiondown}',
    Æ: '{\\AE}',
    Ð: '{\\DH}',
    '\u00D7': '{\\texttimes}',
    Ø: '{\\O}',
    Þ: '{\\TH}',
    ß: '{\\ss}',
    æ: '{\\ae}',
    ð: '{\\dh}',
    '\u00F7': '{\\textdiv}',
    ø: '{\\o}',
    þ: '{\\th}',
    ı: '{\\i}',
    Ŋ: '{\\NG}',
    ŋ: '{\\ng}',
    Œ: '{\\OE}',
    œ: '{\\oe}',
    ˆ: '{\\textasciicircum}',
    '\u02DD': '{\\textacutedbl}',
    Γ: '$\\Gamma$',
    Δ: '$\\Delta$',
    Θ: '$\\Theta$',
    Λ: '$\\Lambda$',
    Ξ: '$\\Xi$',
    Π: '$\\Pi$',
    Σ: '$\\Sigma$',
    Φ: '$\\Phi$',
    Ψ: '$\\Psi$',
    Ω: '$\\Omega$',
    α: '$\\alpha$',
    β: '$\\beta$',
    γ: '$\\gamma$',
    δ: '$\\delta$',
    ε: '$\\varepsilon$',
    ζ: '$\\zeta$',
    η: '$\\eta$',
    θ: '$\\theta$',
    ι: '$\\iota$',
    κ: '$\\kappa$',
    λ: '$\\lambda$',
    μ: '$\\mu$',
    ν: '$\\nu$',
    ξ: '$\\xi$',
    π: '$\\pi$',
    ρ: '$\\rho$',
    ς: '$\\varsigma$',
    σ: '$\\sigma$',
    τ: '$\\tau$',
    υ: '$\\upsilon$',
    φ: '$\\varphi$',
    χ: '$\\chi$',
    ψ: '$\\psi$',
    ω: '$\\omega$',
    ϑ: '$\\vartheta$',
    ϒ: '$\\Upsilon$',
    ϕ: '$\\phi$',
    ϖ: '$\\varpi$',
    ϱ: '$\\varrho$',
    ϵ: '$\\epsilon$',
    '\u2013': '{\\textendash}',
    '\u2014': '{\\textemdash}',
    '\u2014': '---',
    '\u2013': '--',
    '\u2016': '{\\textbardbl}',
    '\u2017': '{\\textunderscore}',
    '\u2018': '{\\textquoteleft}',
    '\u2019': '{\\textquoteright}',
    '\u201A': '{\\quotesinglbase}',
    '\u201C': '{\\textquotedblleft}',
    '\u201D': '{\\textquotedblright}',
    '\u201E': '{\\quotedblbase}',
    '\u2020': '{\\textdagger}',
    '\u2021': '{\\textdaggerdbl}',
    '\u2022': '{\\textbullet}',
    '\u2026': '{\\textellipsis}',
    '\u2030': '{\\textperthousand}',
    '\u2034': "'''",
    '\u201D': "''",
    '\u201C': '``',
    '\u2037': '```',
    '\u2039': '{\\guilsinglleft}',
    '\u203A': '{\\guilsinglright}',
    '\u203C': '!!',
    '\u2044': '{\\textfractionsolidus}',
    '\u2048': '?!',
    '\u2049': '!?',
    '\u2070': '$^{0}$',
    '\u2074': '$^{4}$',
    '\u2075': '$^{5}$',
    '\u2076': '$^{6}$',
    '\u2077': '$^{7}$',
    '\u2078': '$^{8}$',
    '\u2079': '$^{9}$',
    '\u207A': '$^{+}$',
    '\u207B': '$^{-}$',
    '\u207C': '$^{=}$',
    '\u207D': '$^{(}$',
    '\u207E': '$^{)}$',
    ⁿ: '$^{n}$',
    '\u2080': '$_{0}$',
    '\u2081': '$_{1}$',
    '\u2082': '$_{2}$',
    '\u2083': '$_{3}$',
    '\u2084': '$_{4}$',
    '\u2085': '$_{5}$',
    '\u2086': '$_{6}$',
    '\u2087': '$_{7}$',
    '\u2088': '$_{8}$',
    '\u2089': '$_{9}$',
    '\u208A': '$_{+}$',
    '\u208B': '$_{-}$',
    '\u208C': '$_{=}$',
    '\u208D': '$_{(}$',
    '\u208E': '$_{)}$',
    '\u20AC': '{\\texteuro}',
    '\u2103': '{\\textcelsius}',
    '\u2116': '{\\textnumero}',
    '\u2117': '{\\textcircledP}',
    '\u2120': '{\\textservicemark}',
    '\u2121': '{TEL}',
    '\u2122': '{\\texttrademark}',
    Ω: '{\\textohm}',
    ℮: '{\\textestimated}',
    À: '{\\`A}',
    Á: "{\\'A}",
    Â: '{\\^A}',
    Ã: '{\\~A}',
    Ä: '{\\"A}',
    Å: '{\\r A}',
    Ç: '{\\c C}',
    È: '{\\`E}',
    É: "{\\'E}",
    Ê: '{\\^E}',
    Ë: '{\\"E}',
    Ì: '{\\`I}',
    Í: "{\\'I}",
    Î: '{\\^I}',
    Ï: '{\\"I}',
    Ñ: '{\\~N}',
    Ò: '{\\`O}',
    Ó: "{\\'O}",
    Ô: '{\\^O}',
    Õ: '{\\~O}',
    Ö: '{\\"O}',
    Ù: '{\\`U}',
    Ú: "{\\'U}",
    Û: '{\\^U}',
    Ü: '{\\"U}',
    Ý: "{\\'Y}",
    à: '{\\`a}',
    á: "{\\'a}",
    â: '{\\^a}',
    ã: '{\\~a}',
    ä: '{\\"a}',
    å: '{\\r a}',
    ç: '{\\c c}',
    è: '{\\`e}',
    é: "{\\'e}",
    ê: '{\\^e}',
    ë: '{\\"e}',
    ì: '{\\`i}',
    í: "{\\'i}",
    î: '{\\^i}',
    ï: '{\\"i}',
    ñ: '{\\~n}',
    ò: '{\\`o}',
    ó: "{\\'o}",
    ô: '{\\^o}',
    õ: '{\\~o}',
    ö: '{\\"o}',
    ù: '{\\`u}',
    ú: "{\\'u}",
    û: '{\\^u}',
    ü: '{\\"u}',
    ý: "{\\'y}",
    ÿ: '{\\"y}',
    Ā: '{\\=A}',
    ā: '{\\=a}',
    Ă: '{\\u A}',
    ă: '{\\u a}',
    Ą: '{\\k A}',
    ą: '{\\k a}',
    Ć: "{\\'C}",
    ć: "{\\'c}",
    Ĉ: '{\\^C}',
    ĉ: '{\\^c}',
    Ċ: '{\\.C}',
    ċ: '{\\.c}',
    Č: '{\\v C}',
    č: '{\\v c}',
    Ď: '{\\v D}',
    ď: '{\\v d}',
    Ē: '{\\=E}',
    ē: '{\\=e}',
    Ĕ: '{\\u E}',
    ĕ: '{\\u e}',
    Ė: '{\\.E}',
    ė: '{\\.e}',
    Ę: '{\\k E}',
    ę: '{\\k e}',
    Ě: '{\\v E}',
    ě: '{\\v e}',
    Ĝ: '{\\^G}',
    ĝ: '{\\^g}',
    Ğ: '{\\u G}',
    ğ: '{\\u g}',
    Ġ: '{\\.G}',
    ġ: '{\\.g}',
    Ģ: '{\\c G}',
    ģ: '{\\c g}',
    Ĥ: '{\\^H}',
    ĥ: '{\\^h}',
    Ĩ: '{\\~I}',
    ĩ: '{\\~i}',
    Ī: '{\\=I}',
    ī: '{\\=i}',
    ī: '{\\=\\i}',
    Ĭ: '{\\u I}',
    ĭ: '{\\u i}',
    Į: '{\\k I}',
    į: '{\\k i}',
    İ: '{\\.I}',
    Ĵ: '{\\^J}',
    ĵ: '{\\^j}',
    Ķ: '{\\c K}',
    ķ: '{\\c k}',
    Ĺ: "{\\'L}",
    ĺ: "{\\'l}",
    Ļ: '{\\c L}',
    ļ: '{\\c l}',
    Ľ: '{\\v L}',
    ľ: '{\\v l}',
    Ł: '{\\L }',
    ł: '{\\l }',
    Ń: "{\\'N}",
    ń: "{\\'n}",
    Ņ: '{\\c N}',
    ņ: '{\\c n}',
    Ň: '{\\v N}',
    ň: '{\\v n}',
    Ō: '{\\=O}',
    ō: '{\\=o}',
    Ŏ: '{\\u O}',
    ŏ: '{\\u o}',
    Ő: '{\\H O}',
    ő: '{\\H o}',
    Ŕ: "{\\'R}",
    ŕ: "{\\'r}",
    Ŗ: '{\\c R}',
    ŗ: '{\\c r}',
    Ř: '{\\v R}',
    ř: '{\\v r}',
    Ś: "{\\'S}",
    ś: "{\\'s}",
    Ŝ: '{\\^S}',
    ŝ: '{\\^s}',
    Ş: '{\\c S}',
    ş: '{\\c s}',
    Š: '{\\v S}',
    š: '{\\v s}',
    Ţ: '{\\c T}',
    ţ: '{\\c t}',
    Ť: '{\\v T}',
    ť: '{\\v t}',
    Ũ: '{\\~U}',
    ũ: '{\\~u}',
    Ū: '{\\=U}',
    ū: '{\\=u}',
    Ŭ: '{\\u U}',
    ŭ: '{\\u u}',
    Ů: '{\\r U}',
    ů: '{\\r u}',
    Ű: '{\\H U}',
    ű: '{\\H u}',
    Ų: '{\\k U}',
    ų: '{\\k u}',
    Ŵ: '{\\^W}',
    ŵ: '{\\^w}',
    Ŷ: '{\\^Y}',
    ŷ: '{\\^y}',
    Ÿ: '{\\"Y}',
    Ź: "{\\'Z}",
    ź: "{\\'z}",
    Ż: '{\\.Z}',
    ż: '{\\.z}',
    Ž: '{\\v Z}',
    ž: '{\\v z}',
    Ǎ: '{\\v A}',
    ǎ: '{\\v a}',
    Ǐ: '{\\v I}',
    ǐ: '{\\v i}',
    Ǒ: '{\\v O}',
    ǒ: '{\\v o}',
    Ǔ: '{\\v U}',
    ǔ: '{\\v u}',
    Ǧ: '{\\v G}',
    ǧ: '{\\v g}',
    Ǩ: '{\\v K}',
    ǩ: '{\\v k}',
    Ǫ: '{\\k O}',
    ǫ: '{\\k o}',
    ǰ: '{\\v j}',
    Ǵ: "{\\'G}",
    ǵ: "{\\'g}",
    Ḃ: '{\\.B}',
    ḃ: '{\\.b}',
    Ḅ: '{\\d B}',
    ḅ: '{\\d b}',
    Ḇ: '{\\b B}',
    ḇ: '{\\b b}',
    Ḋ: '{\\.D}',
    ḋ: '{\\.d}',
    Ḍ: '{\\d D}',
    ḍ: '{\\d d}',
    Ḏ: '{\\b D}',
    ḏ: '{\\b d}',
    Ḑ: '{\\c D}',
    ḑ: '{\\c d}',
    Ḟ: '{\\.F}',
    ḟ: '{\\.f}',
    Ḡ: '{\\=G}',
    ḡ: '{\\=g}',
    Ḣ: '{\\.H}',
    ḣ: '{\\.h}',
    Ḥ: '{\\d H}',
    ḥ: '{\\d h}',
    Ḧ: '{\\"H}',
    ḧ: '{\\"h}',
    Ḩ: '{\\c H}',
    ḩ: '{\\c h}',
    Ḱ: "{\\'K}",
    ḱ: "{\\'k}",
    Ḳ: '{\\d K}',
    ḳ: '{\\d k}',
    Ḵ: '{\\b K}',
    ḵ: '{\\b k}',
    Ḷ: '{\\d L}',
    ḷ: '{\\d l}',
    Ḻ: '{\\b L}',
    ḻ: '{\\b l}',
    Ḿ: "{\\'M}",
    ḿ: "{\\'m}",
    Ṁ: '{\\.M}',
    ṁ: '{\\.m}',
    Ṃ: '{\\d M}',
    ṃ: '{\\d m}',
    Ṅ: '{\\.N}',
    ṅ: '{\\.n}',
    Ṇ: '{\\d N}',
    ṇ: '{\\d n}',
    Ṉ: '{\\b N}',
    ṉ: '{\\b n}',
    Ṕ: "{\\'P}",
    ṕ: "{\\'p}",
    Ṗ: '{\\.P}',
    ṗ: '{\\.p}',
    Ṙ: '{\\.R}',
    ṙ: '{\\.r}',
    Ṛ: '{\\d R}',
    ṛ: '{\\d r}',
    Ṟ: '{\\b R}',
    ṟ: '{\\b r}',
    Ṡ: '{\\.S}',
    ṡ: '{\\.s}',
    Ṣ: '{\\d S}',
    ṣ: '{\\d s}',
    Ṫ: '{\\.T}',
    ṫ: '{\\.t}',
    Ṭ: '{\\d T}',
    ṭ: '{\\d t}',
    Ṯ: '{\\b T}',
    ṯ: '{\\b t}',
    Ṽ: '{\\~V}',
    ṽ: '{\\~v}',
    Ṿ: '{\\d V}',
    ṿ: '{\\d v}',
    Ẁ: '{\\`W}',
    ẁ: '{\\`w}',
    Ẃ: "{\\'W}",
    ẃ: "{\\'w}",
    Ẅ: '{\\"W}',
    ẅ: '{\\"w}',
    Ẇ: '{\\.W}',
    ẇ: '{\\.w}',
    Ẉ: '{\\d W}',
    ẉ: '{\\d w}',
    Ẋ: '{\\.X}',
    ẋ: '{\\.x}',
    Ẍ: '{\\"X}',
    ẍ: '{\\"x}',
    Ẏ: '{\\.Y}',
    ẏ: '{\\.y}',
    Ẑ: '{\\^Z}',
    ẑ: '{\\^z}',
    Ẓ: '{\\d Z}',
    ẓ: '{\\d z}',
    Ẕ: '{\\b Z}',
    ẕ: '{\\b z}',
    ẖ: '{\\b h}',
    ẗ: '{\\"t}',
    ẘ: '{\\r w}',
    ẙ: '{\\r y}',
    Ạ: '{\\d A}',
    ạ: '{\\d a}',
    Ẹ: '{\\d E}',
    ẹ: '{\\d e}',
    Ẽ: '{\\~E}',
    ẽ: '{\\~e}',
    Ị: '{\\d I}',
    ị: '{\\d i}',
    Ọ: '{\\d O}',
    ọ: '{\\d o}',
    Ụ: '{\\d U}',
    ụ: '{\\d u}',
    Ỳ: '{\\`Y}',
    ỳ: '{\\`y}',
    Ỵ: '{\\d Y}',
    ỵ: '{\\d y}',
    Ỹ: '{\\~Y}',
    ỹ: '{\\~y}',
    '\u223C': '{\\~}',
    '\u00A0': '~',
};

function escape_to_bibtex(str) {
    str = str.replace(new RegExp('\\{', 'g'), '\\{');
    str = str.replace(new RegExp('\\}', 'g'), '\\}');
    str = str.replace(new RegExp('\\$', 'g'), '\\$');
    str = str.replace(new RegExp('"', 'g'), '{"}');

    return Object.keys(to_bibtex).reduce((s, k) => {
        s = s.replace(new RegExp(k, 'g'), to_bibtex[k]);
        return s;
    }, str);
}

function escape_from_bibtex(str) {
    str = Object.keys(from_bibtex).reduce((s, k) => {
        s = s.replace(k, from_bibtex[k]);
        return s;
    }, str);

    str = str.replace(new RegExp('\\\\{', 'g'), '{');
    str = str.replace(new RegExp('\\\\}', 'g'), '}');
    str = str.replace(new RegExp('\\\\$', 'g'), '$');
    str = str.replace(new RegExp('\\{"\\}', 'g'), '"');
    return str;
}

module.exports = {
    from_bibtex,
    to_bibtex,
    escape_to_bibtex,
    escape_from_bibtex,
};