Apalike 참고문헌 스타일을 사용할 때 저자 이니셜 사이의 공백을 제거하는 방법

Apalike 참고문헌 스타일을 사용할 때 저자 이니셜 사이의 공백을 제거하는 방법

내 참조가 아래와 같다고 가정합니다.

저자, JM(2006). 종 풍부도 모델 비교. 생태학적 모델링, 199(2):153 – 163.

저자의 두 이니셜 사이의 공백을 제거하여 Last, JM을 얻는 방법

감사해요!

답변1

의 사본을 만들고 apalike.bst와 같은 유용한 이름을 지정하십시오 apalike-nospace.bst. 이것을 로컬 texmf폴더 에 저장합니다 texmf/bib/bst.

format.names그런 다음 파일 의 기능을 변경하십시오 .bst. 중요한 변경 사항은 bibtex이름 부분의 형식을 지정하는 방법을 알려주는 함수의 다음 문자열에 있습니다 .

"{vv~}{ll}{, jj}{, f.}"

이는 다음과 같이 변경되어야 합니다.

"{vv~}{ll}{, jj}{, f{.}.}"

부분 f은 이니셜 부분이고 기본 요소간 단위는 공백입니다. 대신 를 사용하여 이를 명시적으로 재정의해야 합니다 {.}.

이전 버전과 새 버전의 전체 기능은 다음과 같습니다.

원본 코드:

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=   % last name first
      nameptr #1 >
        { namesleft #1 >
            { ", " * t * }
            { numnames #2 >
                { "," * }
                'skip$
              if$
              t "others" =
                { " et~al." * }
                { " and " * t * }
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

새로운 코드

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't :=   % last name first
      nameptr #1 >
        { namesleft #1 >
            { ", " * t * }
            { numnames #2 >
                { "," * }
                'skip$
              if$
              t "others" =
                { " et~al." * }
                { " and " * t * }
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

관련 정보