Open leeyupeng119 opened 1 year ago
不好意思,这几天比较忙,才看到问题,明天有空看一下。
简单点可以采用下面的方式来处理:
\documentclass{article}
\usepackage{ctex}
\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}
\DeclareDelimFormat[cite,parencite,pagescite]{nameyeardelim}{
\iffieldequalstr{userf}{chinese}{\unspace,}{\addcomma\addspace}%
}
\DeclareDelimFormat[textcite]{nameyeardelim}{
\iffieldequalstr{userf}{chinese}{\unspace,}{\addcomma\addspace}%
}
\DefineBibliographyStrings{english}{
andothersincitecn={\unspace 等},%将标注中的分开,便于与文献表中的区分
}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Inproceedings{Firoozbakhsh2003-473-477,
Title = {Analysis of IEEE 802.11a interference on UWB systems},
Address = {Oulu, Finland},
Author = {Firoozbakhsh, B. and Pratt,T. G. and Jayant,N.},
Booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)},
Pages = {473-477},
Year = {2003}
}
@Book{郭文彬2006--,
Title = {通信原理--基于Matlab的计算机仿真},
Address = {北京},
Author = {郭文彬 and 桑林},
Publisher = {北京邮电大学出版社},
Year = {2006}
}
@Manual{吴凌云2007--,
Title = {CTEX FAQ},
Author = {吴凌云},
Version = {version 0.4},
Month = {1},
Subtitle = {常见问题集},
Year = {2007}
}
@Book{蔡敏2006--,
Title = {UML基础和Rose建模教程},
Address = {北京},
Author = {蔡敏 and 徐慧慧 and 黄柄强},
Publisher = {人民邮电出版社},
Year = {2006},
Month = {1}
}
\end{filecontents}
\addbibresource[location=local]{\jobname.bib}
\begin{document}
内容\cite{Firoozbakhsh2003-473-477}
内容\cite{蔡敏2006--}
内容\cite{郭文彬2006--}
内容\cite{吴凌云2007--}
\textcite{Firoozbakhsh2003-473-477}
\textcite{蔡敏2006--}
\printbibliography
\end{document}
结果为:
非常感谢您的回复,感觉主体功能已经完成了。只有一个小问题:就是当采用author (year)引用的时候,作者里的et al. (或等)后一般是不加逗号的,怎样进一步修改能把这个逗号去除?多谢了。
注销点这一段即可: 比如:
%\DeclareDelimFormat[textcite]{nameyeardelim}{
%\iffieldequalstr{userf}{chinese}{\unspace,}{\addcomma\addspace}%
%}
结果为:
可以了,非常感谢。祝元旦快乐!
楼主您好。我使用的是武汉大学的latex模板。我想实现以下功能
虽然你的问题和回复有答案,但是我看不懂,我更不知道该怎么在武汉大学的模板中修改。您可以指导我下吗?
谢谢!
见最新的文档
见最新的文档
可以说下页码吗?谢谢。
见最新的文档中,标注标签局部调整一节。
标注标签
里面说了可以改括号,但是似乎没有说改中文、英文括号之类的。
我看到你最新的宏包在文字和标识符之间有个空格,感觉舒服一些。比如 期刊名 [J]
,但是为什么我更新了全部宏包,重新生成参考文献,却没有这个空格呢?
标注标签
里面说了可以改括号,但是似乎没有说改中文、英文括号之类的。
我看到你最新的宏包在文字和标识符之间有个空格,感觉舒服一些。比如
期刊名 [J]
,但是为什么我更新了全部宏包,重新生成参考文献,却没有这个空格呢?
你有新问题可以新开讨论或者issue.
默认是没有空格的。
标注标签
里面说了可以改括号,但是似乎没有说改中文、英文括号之类的。 我看到你最新的宏包在文字和标识符之间有个空格,感觉舒服一些。比如
期刊名 [J]
,但是为什么我更新了全部宏包,重新生成参考文献,却没有这个空格呢?你有新问题可以新开讨论或者issue.
默认是没有空格的。
您好。比如在武汉大学的模板中,怎么改呢?好像没有设置参数的地方。我见过一种方案,不过不是LaTeX中看到的:文内引用,英文文献以英文括号、英文逗号;中文文献以中文括号、中文逗号;英文文献的英文括号前面应该有一个空格,目前武大的模板没有这个空格。文末参考文献,中文文献使用中文符号,英文文献使用英文符号。我个人感觉这一方案最为理想。
您好。比如在武汉大学的模板中,怎么改呢?好像没有设置参数的地方。
只要是加了 biblatex-gb7714-2015
的,都是一样的改法
您好。比如在武汉大学的模板中,怎么改呢?好像没有设置参数的地方。
只要是加了
biblatex-gb7714-2015
的,都是一样的改法
比如在主.tex
中,涉及biblatex
的为bib-backend = biblatex,
,在cls文件中,更复杂。
您好。比如在武汉大学的模板中,怎么改呢?好像没有设置参数的地方。
只要是加了
biblatex-gb7714-2015
的,都是一样的改法比如在主
.tex
中,涉及biblatex
的为bib-backend = biblatex,
,在cls文件中,更复杂。
你问一下模板的维护者,如果要修改biblatex的设置或宏,怎么传进去?
至于英文的用英文括号和标点,中文的中文括号和标点,可以加上如下代码:
\renewrobustcmd{\mkbibleftborder}
{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{(}{(}%
\or (\or (\fi}%
\renewrobustcmd{\mkbibrightborder}
{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{)}{)}%
\or )\or )\fi}%
\renewcommand*{\multicitedelim}
{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{;}{\addsemicolon\addspace}%
\or ;\or\addsemicolon\addspace\fi}%;
\renewcommand*{\compcitedelim}
{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}%
\or ,\or\addcomma\space\fi}
\renewcommand{\compextradelim}
{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}%
\or ,\or\addcomma\space\fi}
\DeclareDelimFormat[cite,parencite,pagescite,citep]{nameyeardelim}
{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}%
\or ,\or\addcomma\space\fi}
\DeclareDelimFormat[textcite,authornumcite,citet]{nameyeardelim}
{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}%
\or ,\or\addcomma\space\fi}
\DeclareDelimFormat[cite,parencite,pagescite,citep]{andothersdelim}
{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}%
\or ,\or\addcomma\space\fi}
\DeclareDelimFormat[textcite,authornumcite,citet]{andothersdelim}
{\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}%
\or ,\or\addcomma\space\fi}
您好。比如在武汉大学的模板中,怎么改呢?好像没有设置参数的地方。
只要是加了
biblatex-gb7714-2015
的,都是一样的改法比如在主
.tex
中,涉及biblatex
的为bib-backend = biblatex,
,在cls文件中,更复杂。你问一下模板的维护者,如果要修改biblatex的设置或宏,怎么传进去?
至于英文的用英文括号和标点,中文的中文括号和标点,可以加上如下代码:
\renewrobustcmd{\mkbibleftborder} {\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{(}{(}% \or (\or (\fi}% \renewrobustcmd{\mkbibrightborder} {\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{)}{)}% \or )\or )\fi}% \renewcommand*{\multicitedelim} {\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{;}{\addsemicolon\addspace}% \or ;\or\addsemicolon\addspace\fi}%; \renewcommand*{\compcitedelim} {\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% \or ,\or\addcomma\space\fi} \renewcommand{\compextradelim} {\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% \or ,\or\addcomma\space\fi} \DeclareDelimFormat[cite,parencite,pagescite,citep]{nameyeardelim} {\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% \or ,\or\addcomma\space\fi} \DeclareDelimFormat[textcite,authornumcite,citet]{nameyeardelim} {\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% \or ,\or\addcomma\space\fi} \DeclareDelimFormat[cite,parencite,pagescite,citep]{andothersdelim} {\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% \or ,\or\addcomma\space\fi} \DeclareDelimFormat[textcite,authornumcite,citet]{andothersdelim} {\ifcase\value{gbcitelocalcase}\iffieldequalstr{userf}{chinese}{,}{\addcomma\space}% \or ,\or\addcomma\space\fi}
这又两个小问题:
\citet{}
命令时,中文后接英文文献和英文后接英文文献时,中间缺少空格,可以自动加上去不。谢谢
(b) 使用上述代码,目前没有很好的判断同时引用多个文献存在中英文的情况,这其实也没有必要去做的,你可以使用其他方式来实现你的格式要求的。比如括号自己写,引用命令使用citeauthor等方式。
文献 \citet{蔡敏2006--,Miroslav2004--,赵学功2001--}\par
paragraph \citet{Miroslav2004--,赵学功2001--}\par
文献 \citet{蔡敏2006--} \citet{Miroslav2004--} \citet{赵学功2001--}\par
通常你自己手动添加就可以了。
使用上述代码在一个引用命令中引用多篇文献时,特别是中英文都有时,容易出现问题。也许能够根据特定的目标实现特定的情况。
但这没有意义,国标之所以规定全部使用半角标点,就是可以避免这些事情,只要标准统一,按标准来就可以,至于美观与否完全是见仁见智和习惯问题,没有必要太纠结。
问题。也许能够根据特定的目标实现特定的情况。
但这没有意义,国标之所以规定全部使用半角标点,就是可以避免这些事情,只要标准统一,按标准来就可以,至于美观与否完全是见仁见智和习惯问题,没有必要太纠结。
按标准来,是这样的。我是一次看到Zotero的双语国标的csl文件时,当使用这个csl文件进行排版,文献中的中英文符号进行了区分,文末参考文献没有进行中英文符号的区分。只是感觉很新颖,觉得是一个值得关注的技术点。就像Zotero官方说,他们很受开发者关注的一个技术,是一个很不受使用者关注的技术,就是用Word编辑器编写文档时,将文献识别域(我粗略描述,不准确)以文字的方式写入文档,再通过Zotero软件导入该Word,文献自动生成转化。使用意义目前不大,但是这个技术方案显然有一定特殊的适用性。如果能在实用性的基础性,以技术性为指导,应该会让工作具有前沿性。
- (a)不要使用上述代码中的前两个定义,设置选项gbcitelabel=parensqj,全部括号就是全角的。
(b) 使用上述代码,目前没有很好的判断同时引用多个文献存在中英文的情况,这其实也没有必要去做的,你可以使用其他方式来实现你的格式要求的。比如括号自己写,引用命令使用citeauthor等方式。
- 没有太明白你的意思,不知道你指的是下面哪中情况
文献 \citet{蔡敏2006--,Miroslav2004--,赵学功2001--}\par paragraph \citet{Miroslav2004--,赵学功2001--}\par 文献 \citet{蔡敏2006--} \citet{Miroslav2004--} \citet{赵学功2001--}\par
通常你自己手动添加就可以了。
比如,这段代码:
\documentclass{article}
\usepackage{ctex}
\usepackage[backend=biber,style=gb7714-2015ay]{biblatex}
\DeclareDelimFormat[cite,parencite,pagescite]{nameyeardelim}{
\iffieldequalstr{userf}{chinese}{\unspace,}{\addcomma\addspace}%
}
%\DeclareDelimFormat[textcite]{nameyeardelim}{
%\iffieldequalstr{userf}{chinese}{\unspace,}{\addcomma\addspace}%
%}
\DefineBibliographyStrings{english}{
andothersincitecn={\unspace 等},%将标注中的分开,便于与文献表中的区分
}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Inproceedings{Firoozbakhsh2003-473-477,
Title = {Analysis of IEEE 802.11a interference on UWB systems},
Address = {Oulu, Finland},
Author = {Firoozbakhsh, B. and Pratt,T. G. and Jayant,N.},
Booktitle = {Proc. of IEEE Conference on Ultrawideband Systems and Technologies (UWBST)},
Pages = {473-477},
Year = {2003}
}
@Book{郭文彬2006--,
Title = {通信原理--基于Matlab的计算机仿真},
Address = {北京},
Author = {郭文彬 and 桑林},
Publisher = {北京邮电大学出版社},
Year = {2006}
}
@Manual{吴凌云2007--,
Title = {CTEX FAQ},
Author = {吴凌云},
Version = {version 0.4},
Month = {1},
Subtitle = {常见问题集},
Year = {2007}
}
@Book{蔡敏2006--,
Title = {UML基础和Rose建模教程},
Address = {北京},
Author = {蔡敏 and 徐慧慧 and 黄柄强},
Publisher = {人民邮电出版社},
Year = {2006},
Month = {1}
}
\end{filecontents}
\addbibresource[location=local]{\jobname.bib}
\begin{document}
依据\citet{Firoozbakhsh2003-473-477},according to \citet{Firoozbakhsh2003-473-477}\par
依据\citet{郭文彬2006--},according to \citet{郭文彬2006--}\par
\printbibliography
\end{document}
输出:
同样的引用,中文后接中文文献,是正常的。但是中文后接英文文献,需要增加一个空格吧。所以在引用时,需要判断是否为同一种语言,然后是否键入回车键。这样的话,如果可以自动就好很多了。谢谢!
同样的引用,中文后接中文文献,是正常的。但是中文后接英文文献,需要增加一个空格吧。所以在引用时,需要判断是否为同一种语言,然后是否键入回车键。这样的话,如果可以自动就好很多了。谢谢!
同样的引用,中文后接中文文献,是正常的。但是中文后接英文文献,需要增加一个空格吧。所以在引用时,需要判断是否为同一种语言,然后是否键入回车键。这样的话,如果可以自动就好很多了。谢谢!
@earthmoon CTeX-org/ctex-kit#392
谢谢!通过这个链接我知道大体现状了。
通过学习[https://blog.csdn.net/xenonhu/article/details/124686522]()以及参考这个问题[https://github.com/hushidong/biblatex-gb7714-2015/issues/69](https://github.com/hushidong/biblatex-gb7714-2015/issues/69)下的相关讨论,已经对不同标点的使用有了初步的了解。
但上面的修改都是整体的修改,即是针对gbcitelocalcase不同情况下的整体应用,而在gbcitelocalcase=0时包括多种语言(这里主要指中、英两种语种的混排),而本人想实现的功能是,在gbcitelocalcase=0的条件下,类似目前biblatex-gb7714-2015包针对中英文献提供的andincite、andothersincite 、andincitecn 、 andothersincitecn接口,使nameyeardelim(作者和年份之间的分隔符,一般为逗号)能根据每个文献的语种而采用不同的nameyeardelim(中文文献用",",英文文献用”,“),
下面是最终想要实现的效果:
谢谢。