xelatex의 acro 및 fancyhdr 패키지 관련 문제 - 섹션 제목에 약어 사용

xelatex의 acro 및 fancyhdr 패키지 관련 문제 - 섹션 제목에 약어 사용

소개

최근 acroxelatex.

내 문서 fancyhdr에서는 섹션 제목이 바닥글에 표시되도록 설정한 패키지를 사용합니다. 섹션 제목 문자는 대문자로 표시됩니다.

문제

나는 가능하면 약어를 사용하는 것을 좋아합니다. 그래서 저는 섹션 제목에 다음과 같은 약어 요청을 사용하기로 결정했습니다.

\section{Moving Forward to Distributed \ac{sdn} Management}

그러나 어떤 이유에서인지 엔진은 섹션 제목의 모든 텍스트를 강제로 대문자 \ac{sdn}로 변환하여 를 \ac{SDN}.

그런 다음 문서 바닥글에서 이런 일이 발생했습니다. 이상한 바닥글

이 때문에 나는 보조 파일에 두 번 나타나는 유령 약어에 시달렸습니다.

\acro@used@once {SDN}{78}{78}{89}
\acro@used@twice {SDN}{79}{79}{90}

이러한 유령 약어 요청은 문서 작성 로그에 나타났습니다. 지정된 줄에 약어 요청이 없습니다.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! acro error: "undefined"
! 
! You've requested acronym `SDN' on line 499 but you apparently haven't
! defined it, yet!
! Maybe you've misspelled `SDN'?
! 
! See the acro documentation for further information.
! 
! Type <return> to continue.
!...............................................  

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! acro error: "undefined"
! 
! You've requested acronym `SDN' on line 514 but you apparently haven't
! defined it, yet!
! Maybe you've misspelled `SDN'?
! 
! See the acro documentation for further information.
! 
! Type <return> to continue.
!...............................................  

답변1

반드시 에 구속되는 것은 아닙니다 fancyhdr. \pagestyle{headings}기사 클래스의 간단한 경우에도 마찬가지입니다 .

문제는 제목에서 \sectionmark수행되고 – 및 친구는 보호된 명령이므로 – 변경되어 오류 메시지가 발생한다는 것입니다.\MakeUppercase\ac\ac{sdn}\ac{SDN}

  • 한 가지 확실한 "해결책"은 대신 대문자 ID를 사용하여 약어를 정의하는 것입니다.

     \DeclareAcronym{SDN}{...}
    

그러나 문서의 약어 및 약어 호출 수에 따라 변경하는 것은 지루한 작업이 될 수 있습니다. (검색 및 바꾸기가 실제로는 꽤 쉬울 수도 있지만...)

  • 또 다른 가능성은 LaTeX에 특정 부분을 대문자로 쓰지 말라고 지시할 수 있도록 textcase재정의하는 패키지를 사용하는 것입니다 .\MakeUppercase

     \documentclass{article}
     \usepackage{acro}
     \usepackage[overload]{textcase}
    
     \DeclareAcronym{sdn}{
       short = SDN ,
       long  = some dummy nonsense
     }
    
     \pagestyle{headings}
    
     \begin{document}
    
     \section{Moving Forward to Distributed \protect\NoCaseChange{\acs*{sdn}} Management}
    
     \end{document}
    
  • 제목 스타일 정의 방식에 의존하지 않는 세 번째 옵션으로 이러한 문제를 해결하기 위해 올해 초(v2.11 2020/01/11 릴리스와 함께) acro옵션이 도입되었습니다 . case-sensitive두 개의 서로 다른 약어가 없다고 가정하면(하나는 sdnID로 사용하고 다른 하나는 ID로 사용) 둘 다 동일하게 취급하도록 SDN알 수 있습니다 .acro

     \documentclass{article}
     \usepackage{acro}
    
     \acsetup{case-sensitive=false}
    
     \DeclareAcronym{sdn}{
       short = SDN ,
       long  = some dummy nonsense
     }
    
     \pagestyle{headings}
    
     \begin{document}
    
     \section{Moving Forward to Distributed \acs*{sdn} Management}
    
     \end{document}
    

마지막 두 예제는 모두

여기에 이미지 설명을 입력하세요

답변2

해결책

acro패키지와 함께 패키지를 사용 fancyhdr하면서 섹션 제목을 바닥글에 넣는 조합이 버그가 있는 것으로 확인되었습니다. 이로 인해 \ac{sdn}제목에서 요청을 삭제하여 팬텀 요청 문제를 해결했습니다 \ac{SDN}.

이제 문서의 바닥글이 정확하고 유령 약어 요청이 사라졌습니다. 여기에 이미지 설명을 입력하세요

관련 정보