根据语言特点从文本和参考书目中删除变音符号

根据语言特点从文本和参考书目中删除变音符号

我正在使用 XeLaTeX 和 BibLateX 撰写人文学科的论文。我经常使用中文(拼音)、韩语(McCune-Reischauer)、日语(Hepburn)、满语(Norman)等的转录。此外,偶尔也会引用和引用使用变音符号的欧洲语言,例如法语。

到目前为止,我所有的中文音标都是用带音调符号的拼音书写的(´ 重音符号和 ` 重音符号、ˇ háček 和 ¯ 长音符)。然而,许多期刊不鼓励在音标中使用音调符号。因此,我正在寻找一种方法来去除文本中的中文变音符号。在我看来,我面临两个问题:

  1. 我想删除参考书目的拼音变音符号,而不必再次在 .bib 文件中重新输入它们,并且

  2. 我只想删除中文转录中的变音符号,而不是日语中的长音符号(例如Tōkyō)或法语中印刷相同的重音符号(例如problème)。

有没有办法做到这一点?

更新:

这是我使用 PLK 提供的代码进行的尝试。不幸的是,它对我来说不起作用:

\documentclass[utf8,12pt,letterpaper]{article}
\usepackage{setspace}
\usepackage[fallback]{xeCJK}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Linux Libertine O}
\newcommand{\mainfontCJK}[0]{HanaMinA}
\setCJKmainfont[Scale=0.9]{\mainfontCJK}
\setCJKfallbackfamilyfont{\CJKrmdefault}[Scale=0.9]{NanumMyeongjo}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt
\usepackage[notes,strict,isbn=false,backend=biber,bibencoding=utf8,hyperref=true]{biblatex-chicago}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=author, match=\regexp{[\x{300}\x{301}\x{304}\x{30c}]}, replace={}]
    }
  }
}
\DeclareNosort{
  \nosort{type_names}{\regexp{[\x{300}\x{301}\x{304}\x{30c}]}}
}
\DeclareNoinit{
  \noinit{\regexp{[\x{300}\x{301}\x{304}\x{30c}]}}
}

\addbibresource{MY BIBLIOGRAPHY HERE}


\begin{document}

\cite{WeiYuan18422004ShengwuJi}

\printbibliography

\end{document}

引用像往常一样出现,带有变音符号(请忽略名称的奇怪格式,我通常使用其他东西来修复它,但我没有在这个最小的例子中包含它):

在此处输入图片描述

更新

上面示例中使用的参考书目条目:

@book{WeiYuan18422004ShengwuJi,
    author = {Wèi, 魏源, Yuán},
    title = {Shèngwǔjì},
    titleaddon = {圣武记},
    usere = {Record of the sacred wars},
    publisher = {Yuèlù shūshè},
    date = {2004},
    origdate = {1842},
    address = {Chángshā},
    edition = {\autocap{c}ritical edition},
    maintitle = {Wèi Yuán quánjí},
    volume = {3}
}

答案1

如果您将 biber 与 biblatex 结合使用(如果您需要像这样的 UTF-8 支持,那么您可能应该这样做),那么使用 biber 映射功能可以实现这一点。例如,要从作者中删除尖音符、格雷夫斯、马克龙和哈切克,请在您的序言中输入以下内容:

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=author, match=\regexp{[\x{300}\x{301}\x{304}\x{30c}]}, replace={}]
    }
  }
}

请注意,这会在读取 .bib 时动态剥离它们,因此您的 bib 不会被修改。

此外,您可能希望删除这些内容以进行排序和/或生成首字母,在这种情况下您还可以将其添加到序言中:

\DeclareNosort{
  \nosort{type_names}{\regexp{[\x{300}\x{301}\x{304}\x{30c}]}}
}
\DeclareNoinit{
  \noinit{\regexp{[\x{300}\x{301}\x{304}\x{30c}]}}
}

仅删除中文的问题应该由 .bib 处理,它应该有某种方式将中文条目与其他条目区分开来 - 也许是HYPHENATIONLANGUAGE字段。然后上面的第一个代码片段变成了这样:

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=language, match=chinese, final]
      \step[fieldsource=author, match=\regexp{[\x{300}\x{301}\x{304}\x{30c}]}, replace={}]
    }
  }
}

当然,这一切都假设您使用 UTF-8 编码 .bib(您可以使用 biber 来实现)。如果您使用 TeX 宏,那么正则表达式会更复杂一些...

另一种方法是使用 Unicode 类来删除所有 Unicode MARK 字素而不是单个字素:

\step[fieldsource=author, match=\regexp{\p{Mark}}, replace={}]

相关内容