![biblatex는 참조에서 시리즈 뒤의 공백을 제거합니다.](https://rvso.com/image/370298/biblatex%EB%8A%94%20%EC%B0%B8%EC%A1%B0%EC%97%90%EC%84%9C%20%EC%8B%9C%EB%A6%AC%EC%A6%88%20%EB%92%A4%EC%9D%98%20%EA%B3%B5%EB%B0%B1%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%A9%EB%8B%88%EB%8B%A4..png)
저는 석사 논문의 표준.bbx 파일을 사용자 정의하여 새로운 참고문헌 스타일을 만들고 있습니다. 지금까지는 큰 문제가 없었지만 이제는 매크로 시리즈 번호가 괄호 안에 있어야 하므로 조정하고 싶습니다. 정보가 부족해서 가끔 시리즈나 번호만 올리곤 합니다.
시리즈만 가지고 있지 않는 한 지금까지는 잘 작동합니다. 그런 다음 시리즈의 마지막 단어와 닫는 괄호 사이에 공백이 나타납니다.
여기 내 새 매크로가 있습니다.
\newbibmacro*{series+number}{%
\iffieldundef{series}% Überprüfen ob series vorhanden
{}
{ \setunit{\addspace\bibopenparen}
\printtext{Reihe \addcolon\space}%
\printfield{series}
\iffieldundef{number} % Überprüfen ob noch Bd kommt
{\printtext{\bibcloseparen}}
{\setunit{\addcomma\space}}
}%
\iffieldundef{number}%
{}
{ \iffieldundef{series}%
{\setunit{\addspace\bibopenparen}}
{}
\printtext{Bd \adddot}
\printfield{number}%
\printtext{\bibcloseparen\space}
}
\newunit}
그리고 여기 MWE가 있습니다
\RequirePackage{filecontents}
\begin{filecontents*}{my_bibfile.bib}
@incollection{Akyar.2008,
author = {Akyar, Bedia},
title = {Dual Quaternions in Spatial Kinematics in an Algebraic Sense},
pages = {373--391},
bookpagination = {page},
publisher = {T{\"u}bitak},
isbn = {1010-7622},
editor = {{Scientific and Technological Research Council of Turkey}},
booktitle = {Turkish journal of mathematics},
year = {2008},
abstract = {},
shorthand = {AKYA08},
location = {Ankara},
edition = {32},
number = {4}
}
@book{Angeles.2007,
author = {Angeles, Jorge},
year = {2007},
title = {Fundamentals of Robotic Mechanical Systems},
url = {http://site.ebrary.com/lib/alltitles/docDetail.action?docID=10229254},
edition = {Third Edition},
publisher = {{Springer Science+Business Media LLC}},
isbn = {0-387-29412-0},
subtitle = {Theory, Methods, and Algorithms},
shorthand = {ANGE07},
language = {eng},
location = {Boston, MA, USA},
series = {Mechanical Engineering Series},
abstract = {},
doi = {10.1007/978-0-387-34580-2},
file = {http://gso.gbv.de/DB=2.1/PPNSET?PPN=546653987},
file = {http://external.dandelon.com/download/attachments/dandelon/ids/DEAGI363052149B0CFDDDC125715B0045ACDA.pdf},
file = {http://zbmath.org/?q=an:1140.70001}
}
\end{filecontents*}
\documentclass[fleqn]{scrreprt}
\usepackage[scaled]{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[style=alphabetic, % Use this style
isbn=false,
doi=false,
url=false,
maxbibnames = 4,
minbibnames = 3,
language = ngerman,
giveninits=true]{biblatex}
\bibliography{my_bibfile}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
첫 번째 참조에는 숫자만 있습니다(여기(Bd. 4)). 두 번째에는 시리즈가 있습니다. 그러나 닫는 괄호에는 불필요한 공백이 있습니다.
답변1
%
. 이후에 너무 중요한 것을 잊어버렸습니다 \printfield{series}
. 매크로에 추가하면 원하지 않는 공간이 제거됩니다.
\renewbibmacro*{series+number}{%
\iffieldundef{series}% Überprüfen ob series vorhanden
{}
{ \setunit{\addspace\bibopenparen}
\printtext{Reihe \addcolon\space}%
\printfield{series}% <- here
\iffieldundef{number} % Überprüfen ob noch Bd kommt
{\printtext{\bibcloseparen}}
{\setunit{\addcomma\space}}
}%
\iffieldundef{number}%
{}
{ \iffieldundef{series}%
{\setunit{\addspace\bibopenparen}}
{}
\printtext{Bd \adddot}
\printfield{number}%
\printtext{\bibcloseparen\space}
}
\newunit}
위 버전은 원하지 않는 공간이 생성되는 지점을 강조합니다. 그러나 실제로 코드에는 원하지 않는 공간이 있을 수 있는 다른 인스턴스가 있습니다. 아래 버전은 %
매크로에서 원하지 않는 공백을 피하기 위해 후행을 추가한 버전입니다 .
\renewbibmacro*{series+number}{%
\iffieldundef{series} % Überprüfen ob series vorhanden
{}
{\setunit{\addspace\bibopenparen}%
\printtext{Reihe\addcolon\space}%
\printfield{series}%
\iffieldundef{number} % Überprüfen ob noch Bd kommt
{\printtext{\bibcloseparen}}
{\setunit{\addcomma\space}}%
}%
\iffieldundef{number}
{}
{\iffieldundef{series}
{\setunit{\addspace\bibopenparen}}
{}%
\printtext{Bd\adddot}%
\printfield{number}%
\printtext{\bibcloseparen\space}%
}%
\newunit}
문자열 "Reihe"와 "Bd"가 매크로에 이렇게 하드 코딩되어 있다는 사실이 눈살을 찌푸릴 수도 있다는 점을 덧붙여야겠습니다. Biblatex는 이를 위해 확장 가능한 현지화된 턱받이 스트링을 제공합니다. 또한 기존 매크로를 재정의하려면 \renewbibmacro
.