使用书目 utf8 @string 输入键的方法

使用书目 utf8 @string 输入键的方法

关于如何@string在文件中允许 UTF-8 宏有什么建议吗mwe.bib?[第 537-539 行]

@string{          Uà   =   {Università} #.                           }
@string{        Uàdi   =   Uà#di                                     }
@string{      UàdSdi   =   Uà#degli# {Studi} #di                     }

@PhdThesis{mwe,
  author =   {Some Guy},
  title =    {On something},
  school =   Uàdi# {Padova},
  %school =      UàdSdi# {Bologna},
  year =     2010,
}

我有这样的设置:

\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}
\RequirePackage{newunicodechar}
\RequirePackage[backend=biber%
,bibencoding=utf8,texencoding=utf8,style=numeric-comp%
,sorting=none,sortcites=true,block=none,indexing=false%
,citereset=none,isbn=true,url=true,doi=true]{biblatex}%

并在以下位置使用它mwe.tex

\addglobalbib[datatype=bibtex,type=file]{mwe.bib}
\begin{document}
\cite{mwe}
\printbibliography
\end{document}

然后运行:

biber mwe

并得到:

WARN - BibTeX subsystem: /tmp/I5WGNx_9Fe/mwe.bib_16327.utf8, line 537, warning: overriding existing definition of macro "u"
ERROR - BibTeX subsystem: /tmp/I5WGNx_9Fe/mwe.bib_16327.utf8, line 538, syntax error: found "di", expected "="

答案1

您给出的 MWE 有几个错误,所以我尝试纠正它。正如 @egreg 在他的评论中提到的那样,不要在字符串名称中使用特殊字符。如果您di在字符串中使用类似的东西(请参阅您的 MWE),它将被解释为宏。因此,定义一个字符串di或仅使用它{...}来明确它应该作为普通文本插入。请参阅我的 MWE 中更改的字符串定义。

我不知道使用的语言,所以我只是猜测构建以下内容而不会出现错误或警告(如果您的文件存储为,则给出的mwe.bib警告被覆盖是正确的,可以忽略)编译:\jobname.bibmwe.bibtexmwe.tex

%http://tex.stackexchange.com/questions/74037/a-way-to-use-bibliography-utf8-string-entry-keys
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@string{          Ua = {Universit\`a } #.             }
@string{        Uadi = Ua#{ di }                      }
@string{      UadSdi = Ua#{ degli }# { Studi } #{ di }}

@PhdThesis{mwe,
  author = {Some Guy},
  title  = {On something},
  school = Uadi# {Padova},
  year   = 2010,
}
@PhdThesis{mwe1,
  author = {Some Guy},
  title  = {On something},
  school = UadSdi# {Bologna},
  year   = 2010,
}
\end{filecontents*}

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\usepackage[%
  backend=biber
 ,bibencoding=utf8
 ,texencoding=utf8
 ,style=numeric-comp
 ,sorting=none
 ,sortcites=true
 ,block=none
 ,indexing=false
 ,citereset=none
 ,isbn=true
 ,url=true
 ,doi=true
]{biblatex}%

\addglobalbib[%
   datatype=bibtex
  ,type=file
  ,backend=biber
]{\jobname.bib}
\begin{document}
\cite{mwe} \cite{mwe1}
\printbibliography
\end{document} 

如果我误解了您,请随意更改我给出的 MWE。

相关内容