biblatex는 참조에서 시리즈 뒤의 공백을 제거합니다.

biblatex는 참조에서 시리즈 뒤의 공백을 제거합니다.

저는 석사 논문의 표준.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.

관련 정보