Biblatex 文件无法正确显示变音符号

Biblatex 文件无法正确显示变音符号

我正在尝试打印参考书目中的文件路径。它应该是可读的,而不是可点击的。因此,它不必在 URL 规则方面正确,例如无空格等。但是它不能正确显示变音符号,如 ä。

我的 MWE 看起来像这样:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\usepackage{hyperref}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
 @misc{mean_well_rcp-1600_2018,
    langid     = {english},
    title      = {RCP-1600 ä},
    file        = {C:/Test ha Földer/file},
    shorttitle = {RCP-1600},
    date       = {2018-01-15},
    author     = {MEAN\textasciitilde{}WELL}
}
\end{filecontents}
\addbibresource{\jobname.bib}


\DeclareFieldFormat{file}{\mkbibacro{file:}\addcolon\space#1}
\renewbibmacro{finentry}{%
 \finentry\addspace
 \printfield{file}%
 }
\begin{document}
 \cite{mean_well_rcp-1600_2018}
 \printbibliography
\end{document}

日志文件:测试日志

答案1

urldoi和 等字段field是逐字字段。逐字字段可以包含特殊字符,如$%#而不会扰乱 LaTeX。字段的内容\detokenize在打印前会经过净化 (d),因此特殊字符会按其本身打印,而不会具有其通常的特殊含义。

对于inputenc非 ASCII 字符,如öä、 ...,它们被视为活动字符。但是当它们被\detokenized 时,它们会失去活动状态并再次变为纯 UTF-8 字符。然后 LaTeX 无法按预期处理这些字符。您可以使用以下代码验证

\detokenize{ö$}

在您的文档中,它显示为

Ãű$

而不是ö关于缺失的错误$

有一些解决方法,但并不特别令人满意

  1. 使用 Unicode 引擎,例如 LuaLaTeX 或 XeLaTeX。Unicode 引擎将非 ASCII 字符视为单个普通字符,而不是宏(活动字符),因此这些字符在通过逐字字段时不会被破坏。
  2. 使用非逐字字段(或将类型field从逐字更改为文字),这样将允许非 ASCII 字符(如、äöß工作,但您不能再使用特殊字符(如$、、、\#&否则 LaTeX 会抱怨。
  3. 使用旧编码,例如latin1。这些旧编码本身仅支持 256 个字符,但支持的非 ASCII 字符将被视为其自身,而不是活动字符(latin1/ISO 8859-1 支持äöüßé)。与 LuaLaTeX 和 XeLaTeX 一样,它们在去标记化后仍能继续存在。

答案2

申请\scantokens

\begin{filecontents}{\jobname.bib}
 @misc{mean_well_rcp-1600_2018,
    langid     = {english},
    title      = {RCP-1600 ä},
    file        = {C:/Test ha Földer/file},
    shorttitle = {RCP-1600},
    date       = {2018-01-15},
    author     = {MEAN\textasciitilde{}WELL}
}
\end{filecontents}

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\usepackage{hyperref}

\addbibresource{\jobname.bib}


\DeclareFieldFormat{file}{\mkbibacro{file:}\addcolon\space\scantokens{#1\relax}}
\renewbibmacro{finentry}{%
 \finentry\addspace
 \printfield{file}%
 }
\begin{document}
 \cite{mean_well_rcp-1600_2018}
 \printbibliography
\end{document}

enter image description here

相关内容