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

英文名字以van开头,文末参考文献将 #162

Open earthmoon opened 1 year ago

earthmoon commented 1 year ago

您好,

现在有一篇文献:

@article{vandis2025,
    title = {TITLE},
    shorttitle = {{{ChatGPT}}},
    author = {family=Dis, given=Zg Y. T., prefix=van, useprefix=true },
    date = {2025},
    journaltitle = {titleofjournal},
    volume = {6214},
    number = {79247},
    pages = {2224--2262},
    issn = {00228-02836, 14276-46827},
    doi = {10.10238/d41586-023-200288-7},
    langid = {english},
}

这篇文献在文中正确,因van不大写。但是有几个问题:

  1. 在文中以v进行排序,一般van不参与排序;
  2. 在文末参考文献中,v被大写,应当保持小写;
  3. 在文末参考文献中,以v进行排序,实际应该以Dis还是以Zg Y. T进行排序?我也不确定,但应该在这两者之中。

谢谢!

hushidong commented 1 year ago

这个按默认处理吧,因为没有标准说明应该如何处理。如果需要额外的处理,可以单独调整。

earthmoon commented 1 year ago

这个按默认处理吧,因为没有标准说明应该如何处理。如果需要额外的处理,可以单独调整。

但是还是有个问题:这个文献在文末以Dis排序,这是对的。但是在文末,V被大写,an又没有大写。就有点突兀: image

hushidong commented 1 year ago

这个可以修改。

\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont%
  \gbcaselocalset%
  \ifuseprefix%
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifdefvoid{#3}{}{%
       \ifcapital%
         {\mkbibnameprefix{\MakeUppercase{#3}}\isdot}%
         {\mkbibnameprefix{#3}\isdot}%
       \ifprefchar{}{\bibnamedelimc}}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifboolexpe{%
       test {\ifdefvoid{#2}}
       and
       test {\ifdefvoid{#3}}}
       {}{\revsdnamepunct}%
     \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}%
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
}
hushidong commented 1 year ago

或者:不使用前缀,使用选项 useprefix=false

earthmoon commented 1 year ago

seprefix=false

谢谢!

earthmoon commented 1 year ago

这个可以修改。

\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont%
  \gbcaselocalset%
  \ifuseprefix%
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifdefvoid{#3}{}{%
       \ifcapital%
         {\mkbibnameprefix{\MakeUppercase{#3}}\isdot}%
         {\mkbibnameprefix{#3}\isdot}%
       \ifprefchar{}{\bibnamedelimc}}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifboolexpe{%
       test {\ifdefvoid{#2}}
       and
       test {\ifdefvoid{#3}}}
       {}{\revsdnamepunct}%
     \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}%
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
}

我搞错了,截图是以E开头排序的,让van都小写最好。

hushidong commented 1 year ago
\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont%
  \gbcaselocalset%
  \ifuseprefix%
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifdefvoid{#3}{}{%
       \ifcapital%
         {\mkbibnameprefix{\MakeLowercase{#3}}\isdot}%
         {\mkbibnameprefix{#3}\isdot}%
       \ifprefchar{}{\bibnamedelimc}}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifboolexpe{%
       test {\ifdefvoid{#2}}
       and
       test {\ifdefvoid{#3}}}
       {}{\revsdnamepunct}%
     \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}%
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
}
earthmoon commented 1 year ago
\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont%
  \gbcaselocalset%
  \ifuseprefix%
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifdefvoid{#3}{}{%
       \ifcapital%
         {\mkbibnameprefix{\MakeLowercase{#3}}\isdot}%
         {\mkbibnameprefix{#3}\isdot}%
       \ifprefchar{}{\bibnamedelimc}}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifboolexpe{%
       test {\ifdefvoid{#2}}
       and
       test {\ifdefvoid{#3}}}
       {}{\revsdnamepunct}%
     \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}%
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
}

牛,搞定!

earthmoon commented 1 year ago

您好。我又发现一个问题:

  1. 使用修改后的Pinyin.pmvan被小写了还是参与了排序。大部分的期刊不使用前缀进行排序
    
    \documentclass{article}
    \usepackage{ctex}

\begin{filecontents}[force]{\jobname.bib} @article{mikkonen2018, title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil}, author = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.}, date = {2018-11-01}, journaltitle = {Chemosphere}, volume = {210}, pages = {193--203}, issn = {0045-6535}, doi = {10.1016/j.chemosphere.2018.06.138}, } @article{first, title = {The firstl}, author = { Go}, date = {6}, journaltitle = {5}, volume = {4}, pages = {3}, issn = {2}, doi = {1}, } @article{second, title = {The firstl}, author = { Rr}, date = {6}, journaltitle = {5}, volume = {4}, pages = {3}, issn = {2}, doi = {1}, } \end{filecontents}

\usepackage[style=gb7714-2015ay]{biblatex} %,defernumbers=true \addbibresource{\jobname}

\begin{document} \newbibmacro{name:gbuppercase}[4]{\bibauthorfont% \gbcaselocalset% \ifuseprefix% {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% \ifdefvoid{#3}{}{% \ifcapital% {\mkbibnameprefix{\MakeLowercase{#3}}\isdot}% {\mkbibnameprefix{#3}\isdot}% \ifprefchar{}{\bibnamedelimc}}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 {\usebibmacro{name:delim}{#1}% \usebibmacro{name:hook}{#1}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifboolexpe{% test {\ifdefvoid{#2}} and test {\ifdefvoid{#3}}} {}{\revsdnamepunct}% \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 } text\nocite{}

\printbibliography

\end{document}

输出:
![image](https://github.com/hushidong/biblatex-gb7714-2015/assets/45897471/039e49c7-10c6-40d8-b9fc-9372bfd70de7)

2. 如果使用`key`域进行排序,则未必可以正确使用`family name`进行排序,比如:

\documentclass{article} \usepackage{ctex}

\begin{filecontents}[force]{\jobname.bib} @article{mikkonen2018, title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil}, author = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.}, date = {2018-11-01}, journaltitle = {Chemosphere}, volume = {210}, pages = {193--203}, issn = {0045-6535}, doi = {10.1016/j.chemosphere.2018.06.138},
key = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.}, } @article{first, title = {The firstl}, author = { Go}, date = {6}, journaltitle = {5}, volume = {4}, pages = {3}, issn = {2}, doi = {1}, key = {Go}, } @article{second, title = {The firstl}, author = { Rr}, date = {6}, journaltitle = {5}, volume = {4}, pages = {3}, issn = {2}, doi = {1}, key = {Rr}, } \end{filecontents}

\usepackage[style=gb7714-2015ay]{biblatex} %,defernumbers=true \addbibresource{\jobname}

\begin{document} \newbibmacro{name:gbuppercase}[4]{\bibauthorfont% \gbcaselocalset% \ifuseprefix% {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% \ifdefvoid{#3}{}{% \ifcapital% {\mkbibnameprefix{\MakeLowercase{#3}}\isdot}% {\mkbibnameprefix{#3}\isdot}% \ifprefchar{}{\bibnamedelimc}}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号 {\usebibmacro{name:delim}{#1}% \usebibmacro{name:hook}{#1}% \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot% \ifboolexpe{% test {\ifdefvoid{#2}} and test {\ifdefvoid{#3}}} {}{\revsdnamepunct}% \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号 } text\nocite{}

\printbibliography

\end{document}


输出:
![image](https://github.com/hushidong/biblatex-gb7714-2015/assets/45897471/6b0dd756-061f-4c87-aaf1-0818f117420a)

可以将前缀统一小写,并以Family name进行排序?
earthmoon commented 1 year ago

好像电脑重启一次,Pinyin.pm就会被替换一次。所以修改Pinyin.pm这一策略是不是可行度不太高?

hushidong commented 1 year ago

你设为只读,不会每次都替换的,那biber不是慢死了,本来就慢,还老是要解资源。

可能是biber更新等导致的。更新后,第一次运行是会更换路径的。所以要重新拷过去。

hushidong commented 1 year ago
  1. 你前面的第一个问题,只要使用useprefix=true,那就会参与排序,所以这是biblatex默认的,不知道这是不是英文的习惯。

  2. 第二个问题是,你把key改一下就好了。这种单独的个别文献出问题,你手动修改就好了。

earthmoon commented 1 year ago

那biber不是慢死了,本来就慢,还老是要解资源。

可能是biber更新等导致的。更新后,第一次运行是会更换路径的。所以要重新拷过去。

你好,可以帮忙把Pinyin.pm中的改为chang2吗?因为有部分文献和长江出版社有关。谢谢。

earthmoon commented 1 year ago
  1. 你前面的第一个问题,只要使用useprefix=true,那就会参与排序,所以这是biblatex默认的,不知道这是不是英文的习惯。
  2. 第二个问题是,你把key改一下就好了。这种单独的个别文献出问题,你手动修改就好了。

如果使用useprefix=falsevan de会消失。而且使用useprefix=true,使用key域进行排序,既没有按照前缀排序,也没有按照Family Name进行排序,就很奇怪。这应该是一个反常的情况吧。

hushidong commented 1 year ago

Pinyin-modified-zhai-chang.zip

hushidong commented 1 year ago

key = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},

你看看这个key,第一个字符是空格,加下来是f,怎么能正常排呢?仔细点。

earthmoon commented 1 year ago

Pinyin-modified-zhai-chang.zip

谢谢!

earthmoon commented 1 year ago

key = { family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},

你看看这个key,第一个字符是空格,加下来是f,怎么能正常排呢?仔细点。

谢谢!我对这些空格没有准确的理解。很多时候我觉得空格毫无影响,有些时候可能造成很大的影响。我其实不知道怎么辨别什么时候空格会产生很大的影响,因为我看The TeX book一书中,空格和回车符在大部分时候时是一样的,而回车符常出现在bib文件中。我并没有观察到这里有一个空格,不过若我观察到,我也意识不到这会产生问题。不过,在删除这个空格后,情况仍旧是一样的,貌似以de进行排序了。

\documentclass{article}
\usepackage{ctex}

\begin{filecontents}[force]{\jobname.bib}
@article{mikkonen2018,
    title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil},
    author = {family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
    date = {2018-11-01},
    journaltitle = {Chemosphere},
    volume = {210},
    pages = {193--203},
    issn = {0045-6535},
    doi = {10.1016/j.chemosphere.2018.06.138},  
    key = {family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
    }
@article{first,
    title = {The firstl},
    author = { Go},
    date = {6},
    journaltitle = {5},
    volume = {4},
    pages = {3},
    issn = {2},
    doi = {1},
    key = {Go},
    }
@article{second,
    title = {The firstl},
    author = { Rr},
    date = {6},
    journaltitle = {5},
    volume = {4},
    pages = {3},
    issn = {2},
    doi = {1},
    key = {Rr},
    }
\end{filecontents}

\usepackage[style=gb7714-2015ay]{biblatex} %,defernumbers=true
\addbibresource{\jobname}

\begin{document}
\newbibmacro*{name:gbuppercase}[4]{\bibauthorfont%
  \gbcaselocalset%
  \ifuseprefix%
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifdefvoid{#3}{}{%
       \ifcapital%
         {\mkbibnameprefix{\MakeLowercase{#3}}\isdot}%
         {\mkbibnameprefix{#3}\isdot}%
       \ifprefchar{}{\bibnamedelimc}}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%后缀前加逗号
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \ifdefvoid{#2}{\mkbibnamefamily{\MakeCapital{#1}}}{\mkbibnamefamily{\MakeUppercase{#1}}}\isdot%
     \ifboolexpe{%
       test {\ifdefvoid{#2}}
       and
       test {\ifdefvoid{#3}}}
       {}{\revsdnamepunct}%
     \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{\MakeUppercase{#2}}\isdot}%\MakeCapital
     \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}%
     \ifdefvoid{#4}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}%%后缀前加逗号
}
text\nocite{*}

\printbibliography

\end{document} 

输出结果为: image

也许我哪里又操作错了。

hushidong commented 1 year ago

排序总得要一样的东西再排吧,你看上面的三个key的内容是一个东西不?

key的生成工具是次要的,关键是内容,你想怎么排内容就要怎么写,但总需要是一类东西噻,你即便填个1,2,3数字,也比不同类的东西在那乱排好噻

改成下面这样不就好了么?

@article{mikkonen2018,
    title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil},
    author = {family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
    date = {2018-11-01},
    journaltitle = {Chemosphere},
    volume = {210},
    pages = {193--203},
    issn = {0045-6535},
    doi = {10.1016/j.chemosphere.2018.06.138},  
    key = {Graaff},
    }
@article{first,
    title = {The firstl},
    author = { Go},
    date = {6},
    journaltitle = {5},
    volume = {4},
    pages = {3},
    issn = {2},
    doi = {1},
    key = {Go},
    }
@article{second,
    title = {The firstl},
    author = { Rr},
    date = {6},
    journaltitle = {5},
    volume = {4},
    pages = {3},
    issn = {2},
    doi = {1},
    key = {Rr},
    }
earthmoon commented 1 year ago

排序总得要一样的东西再排吧,你看上面的三个key的内容是一个东西不?

key的生成工具是次要的,关键是内容,你想怎么排内容就要怎么写,但总需要是一类东西噻,你即便填个1,2,3数字,也比不同类的东西在那乱排好噻

改成下面这样不就好了么?

@article{mikkonen2018,
  title = {Geochemical Indices and Regression Tree Models for Estimation of Ambient Background Concentrations of Copper, Chromium, Nickel and Zinc in Soil},
  author = {family=Graaff, given=Robert, prefix=van de, useprefix=true and Clarke, Bradley O. and Dasika, Raghava and Wallis, Christian J. and Reichman, Suzie M.},
  date = {2018-11-01},
  journaltitle = {Chemosphere},
  volume = {210},
  pages = {193--203},
  issn = {0045-6535},
  doi = {10.1016/j.chemosphere.2018.06.138},  
  key = {Graaff},
  }
@article{first,
  title = {The firstl},
  author = { Go},
  date = {6},
  journaltitle = {5},
  volume = {4},
  pages = {3},
  issn = {2},
  doi = {1},
  key = {Go},
  }
@article{second,
  title = {The firstl},
  author = { Rr},
  date = {6},
  journaltitle = {5},
  volume = {4},
  pages = {3},
  issn = {2},
  doi = {1},
  key = {Rr},
  }

谢谢您!明白了,就是key域不能像author域一样接受参数。