hushidong / biblatex-gb7714-2015

A biblatex implementation of the GB/T7714-2015 bibliography style || GB/T 7714-2015 参考文献著录和标注的biblatex样式包
742 stars 83 forks source link

会议论文集格式 #181

Open Stitchiey opened 6 months ago

Stitchiey commented 6 months ago

我校要求的会议论文集格式为 [序号] 作者1, 作者2, 作者3. 论文题目(首字母大写,其它字母小写)[C]. 会议名称(首字母大写 虚词小写), 会议年份: 开始页-结束页. 例: [4] Dong C, Loy C, He K, et al. Learning a deep convolutional network for image super-resolution[C]. European Conference on Computer Vision, 2014: 184-199. 即,不论是中文还是英文文献,在会议名称前都没有“in: ”或者“见”;并且论文题目仅首字母大写(专有名词除外)。我已在CTAN查阅biblatex-gb7714-2015的相关文档,未找到相应的控制符。请问欲实现此要求,应当如何撰写?

sikouhjw commented 6 months ago
  1. 不要开重复 issue
  2. 即,不论是中文还是英文文献,在会议名称前都没有“in: ”或者“见”;

    你需要 gbpunctin = false

  3. 并且论文题目仅首字母大写(专有名词除外)

    现有格式就是如此,请证明你的输出不符合你的期望

Stitchiey commented 6 months ago
  1. 不要开重复 issue
  2. 即,不论是中文还是英文文献,在会议名称前都没有“in: ”或者“见”;

    你需要 gbpunctin = false

  3. 并且论文题目仅首字母大写(专有名词除外)

    现有格式就是如此,请证明你的输出不符合你的期望

  1. 因为网络原因不慎重复开issue,抱歉
  2. 我已经使用了gbpunctin = false,输出仍然包含“in:”
  3. 现编译结果如图 image 我使用的TeXLive版本为2023,编译器为XeLaTeX
Stitchiey commented 6 months ago

第二个问题可以通过在导言区添加

\DefineBibliographyStrings{english}{in={}}
\DefineBibliographyStrings{english}{incn={}}

来解决,但现在仍然不明白第三个问题发生的原因

sikouhjw commented 6 months ago
1. 我搜索过之前的issue,没有找到相关题目

指 #180 已经开了,不需要再开 #181

2. 我已经使用了`gbpunctin = false`,输出仍然包含“in:”

看错了问题,但手册中 gbpunctin 选项部分已经给出了你想要的答案:

若要完全去掉该符号则可以在导言区增加命令 \DefineBibliographyStrings{english}{in={}}, \DefineBibliographyStrings{english}{incn={}}

3. 现编译结果如图

需要使用 texdoc biblatex p. 265 提供的 \MakeSentenceCase 命令,在导言区添加

\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}
Stitchiey commented 6 months ago

需要使用 texdoc biblatex p. 265 提供的 \MakeSentenceCase 命令,在导言区添加

\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}

在导言区添加该指令会使得包括booktitlejournal在内的title都变为句首字母大写,详见如图。我查阅了texdoc biblatex和https://github.com/hushidong/biblatex-gb7714-2015/blob/15db5aaf6834b2359c605227726c67d1350bc660/biblatex-gb7714-2015.pdf,目前并没有找到解决方法。 image

sikouhjw commented 6 months ago

在导言区添加该指令会使得包括booktitlejournal在内的title都变为句首字母大写

这是由于 biblatex 对样式精细度控制不足导致的^1,解决方案为^2

\documentclass{article}
\usepackage[backend=biber,style=gb7714-2015]{biblatex}
\addbibresource[location=local]{gdutthesis-template.bib}
\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}

\DeclareFieldFormat{titlecase:journaltitle}{#1}
\renewbibmacro*{booktitle}{%ref gb7714-2015.bbx
  \ifboolexpr{
    test {\iffieldundef{booktitle}}
    and
    test {\iffieldundef{booksubtitle}}
  }
    {}
    {\printtext[booktitle]{\bibtitlefont%
       \printfield[titlecase:journaltitle]{booktitle}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase:journaltitle]{booksubtitle}}%
     \newunit%标点换成下一句
     \setunit{\subtitlepunct}}%
  \printfield{booktitleaddon}}

\renewbibmacro*{journal}{%ref biblatex.def
  \ifboolexpr{
    test {\iffieldundef{journaltitle}}
    and
    test {\iffieldundef{journalsubtitle}}
  }
    {}
    {\printtext[journaltitle]{%
       \printfield[titlecase:journaltitle]{journaltitle}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase:journaltitle]{journalsubtitle}}%
     \newunit}%
  \iffieldundef{journaltitleaddon}
    {}
    {\printfield{journaltitleaddon}}}

\begin{document}
\cite{5595728,8739605}
\printbibliography[heading=bibliography]
\end{document}

图片