소스 코드를 건드리지 않고 `` 및 ''를 guillemets로 교체

소스 코드를 건드리지 않고 `` 및 ''를 guillemets로 교체

나는 책을 쓰고 있는데 출판사는 ``'' 인용문 대신에 길레메(guillemets)를 사용하기를 원합니다. 나는 이 스택 교환에서 좋은 답변이 있는 질문을 꽤 많이 읽었지만 내 질문에 대한 정확한 답변을 찾지 못했습니다.

LaTeX에서 "``를 쓸 때 자동으로 ", ''를 쓸 때 "를 자동으로 만들 수 있는 방법이 있는지 궁금합니다. 내가 그다지 좋아하지 않는 대안은 15개 이상의 서로 다른 .tex 문서로 구성된 전체 책을 살펴보고 수동으로 수행하는 것입니다.

어떤 도움이라도 매우 감사하겠습니다.

답변1

Lua(La)TeX를 사용하여 문서를 컴파일할 수 있으므로 Overleaf 플랫폼을 사용하고 있다는 것은 좋은 소식입니다. :-)

LuaLaTeX에 (아직) 익숙하지 않은 경우: 요즘 LuaLaTeX는 대체로 pdfLaTeX의 상위 집합입니다. 이는 특히 문서가 pdfLaTeX에서 올바르게 컴파일되면 LuaLaTeX에서도 제대로 컴파일되도록 하기 위해 너무 많은 변경을 가할 필요가 없다는 것을 의미합니다. 수행해야 할 주요 변경 사항은 inputencfontenc패키지 로드를 중지하는 것입니다. 문서에서 특수 텍스트나 수학 글꼴을 사용하는 경우글꼴 사양\setmainfont적절한 지침 등 을 패키지 및 발행합니다 \setsansfont. 기본이 아닌 글꼴을 사용하는 경우 표시해 주십시오.

저는 두 단계로 진행되는 다음 솔루션을 제안합니다. 먼저,인용문옵션으로 패키지 norwegian=guillemets; 이 패키지는 \enquote인수를 일치하는 길레메 쌍으로 묶는 매크로를 제공합니다 . 둘째, 입력 스트림에서 전처리기 역할을 하는 Lua 함수를 정의하고 활성화하여 ``to 의 모든 인스턴스와 to \enquote{의 모든 인스턴스를 "즉시" 변환해야 합니다. Lua 함수가 전처리기 역할을 하면서,''}~ 전에LaTeX는 일반적인 작업을 시작합니다. LaTeX는 실제로 ``및 의 인스턴스를 "보지" 않습니다 ''. 대신 LaTeX는 지시문 인스턴스만 보고 작동할 수 있습니다 \enquote.

use_enquote다음 테스트 파일은 Lua 기능을 활성화하고 필요한 경우 비활성화하는 두 개의 유틸리티 매크로와 함께 라는 Lua 기능을 제공합니다 .

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

%% this document must be compiled with LuaLaTeX.
\documentclass{book} % or some other suitable document class
\usepackage{fontspec} % don't load the 'inputenc' and 'fontenc' packages

\usepackage[norsk]{babel} % or '\usepackage[norwegian]{babel}'
\usepackage[norwegian=guillemets]{csquotes} % customize appearance of quoted material

%% A Lua function that performs all of the work:
\directlua{
  function use_enquote ( s )
    s = s:gsub ( "``" , "\\enquote{" )
    return ( s:gsub ( "''" , "}" ) )
  end
}

% Two LaTeX utility macros:
\newcommand\EnquoteOn{\directlua{luatexbase.add_to_callback(
   "process_input_buffer", use_enquote, "use_enquote" )}}
\newcommand\EnquoteOff{\directlua{luatexbase.remove_from_callback(
   "process_input_buffer", "use_enquote" )}}
  
\begin{document}

\EnquoteOn % activate the Lua function 
``Hei Verden''

\EnquoteOff % deactivate the Lua function
``Hei Verden''

\end{document}

관련 정보