LaTeX: \input 시 자동으로 "..."를 "\ldots"로 변환합니다.

LaTeX: \input 시 자동으로 "..."를 "\ldots"로 변환합니다.

나는 이미 읽었다"..."를 "\ldots"로 자동 변환합니다.하지만 이 질문은 질문자가 여러 파일을 통해 많은 교체 작업을 절약할 수 있도록 질문/답변되었습니다.

\input내 경우에는 전체 스토리에 부합하는 별도의 장면(소설의 경우)을 여러 파일 로 만들려고 합니다 . 나는 별도의 파일을 가능한 한 단순하게 유지하는 데 관심이 있습니다. 즉, 더 적은 수의 TeX/LaTeX 명령을 사용하고 싶다는 뜻입니다. 이유는 수정을 위해 별도의 파일을 보낼 예정이며 텍스트가 많으면 \ldots읽기/수정이 더 어려워지기 때문입니다. 그러나 Linux Libertine 또는 Junicode 이외의 글꼴을 사용하고 싶기 때문에 참조된 솔루션이 주로 내 문서에 작동하지 않습니다.

물론 수정 프로세스가 끝날 때까지 기다렸다가 일괄 교체할 수도 있습니다. 그러나 나는 소스 파일을 실제로 수정하지 않고 "..."를 줄임표로 바꾸는 더 나은 프로그래밍 방식을 원했습니다 \ldots.

의 예 main.tex:

\documentclass[statementpaper,9pt,openany]{memoir}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{mynovel}
\usepackage{ebgaramond}

\begin{document}
    \pagestyle{plain}
    \story{stories/first_story.tex}
\end{document}

의 예 mynovel.sty:

\ProvidesPackage{mynovel}
\RequirePackage{lettrine}
% Most code here is to provide a lettrine automatically
\def\capitalize#1#2 {
    \lettrine[lhang=1,nindent=0pt,loversize=0.5,lines=2]{#1}{#2}
}
\newcommand{\story}[1]{
    % some code here explicitly omitted
    \expandafter\capitalize\@@input#1
}

의 예 stories/first_story.tex:

Había una vez un hombre. El hombre dijo:

---Buenos días... ¿me da una taza de café?

답변1

LuaLaTeX, 즉 LaTeX를 사용할 수 있다면체재루아텍스와 함께엔진(pdfTeX 엔진 대신) 컴파일 프로세스의 매우 초기 단계에서 모든 인스턴스를 "즉시" ...로 대체하는 Lua 함수를 작성하는 것은 간단합니다(\dots~ 전에TeX는 일반적인 처리를 시작합니다.

다음 예제에서는 Lua 함수라는 Lua 함수를 설정하고 Lua 함수의 작업을 활성화 및 비활성화하는 및 dots2ellipses라는 두 개의 LaTeX 매크로를 제공합니다 .\dotstoellipsisON\dotstoellipsisOFF

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

(코드에서는 "EB Garamond" 대신 "Arno Pro"를 사용합니다. 전자가 "..."와 "\dots" 모양의 차이를 더 쉽게 볼 수 있기 때문입니다.)

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Arno Pro} % for a clear difference between "..." and "\dots"

%% Lua-side code
\usepackage{luacode}
\begin{luacode}
function dots2ellipses ( buff ) 
   return ( buff:gsub ( "%.%.%." , "\\dots{}" ) )
end
\end{luacode}

%% TeX-side code: macros to switch Lua function on/off
\newcommand\dotstoellipsisON{\directlua{luatexbase.add_to_callback(
   "process_input_buffer", dots2ellipses, "dots2ellipses" )}}
\newcommand\dotstoellipsisOFF{\directlua{luatexbase.remove_from_callback(
   "process_input_buffer", "dots2ellipses" )}}

\begin{document}
\dotstoellipsisON
here ... there ... everywhere --- with ``\textbackslash dots''

\dotstoellipsisOFF
here ... there ... everywhere --- without ``\textbackslash dots''

\end{document}

답변2

활성 encTeX 엔진과 함께 모든 형식(Plain, LaTeX)을 사용하는 경우 다음과 같이 작성할 수 있습니다.

\mubyte\dots...\endmubyte
\mubytein=1 % make it 0 to turn off conversion

something ... or another

예상되는 결과를 얻습니다. encTeX는 8비트 TeX 엔진(Knuth, eTeX, pdfTeX)에서 사용할 수 있습니다.

답변3

xelatex로 컴파일하여 다음을 시도해 보세요.

   \documentclass{article}
    \usepackage{ebgaramond}
    \usepackage{xesearch}
\UndoBoundary{.}
\SearchList{list1}{\ldots}{...}

\begin{document}

    Hello ... World

\end{document}

관련 정보