LaTeX: "..." automatisch in "\ldots" umwandeln bei \input

LaTeX: "..." automatisch in "\ldots" umwandeln bei \input

Ich habe schon gelesen"..." automatisch in "\ldots" umwandelnaber diese Frage wurde gestellt/beantwortet, um dem Fragesteller zu helfen, viele Ersetzungsvorgänge in mehreren Dateien zu sparen.

In meinem Fall versuche ich, \inputmehrere Dateien mit einzelnen Szenen (für einen Roman) zu erstellen, die eine ganze Geschichte ergeben. Ich möchte die einzelnen Dateien so einfach wie möglich halten, was bedeutet, dass ich möglichst wenige TeX/LaTeX-Befehle verwenden möchte. Der Grund dafür ist, dass ich die einzelnen Dateien zur Überarbeitung einsende und viel \ldotsText das Lesen/Überarbeiten erschwert. Ich möchte jedoch eine andere Schriftart als Linux Libertine oder Junicode verwenden, sodass die angegebene Lösung für mein Dokument nicht geeignet ist.

Ich könnte natürlich bis zum Ende des Revisionsprozesses warten und dann stapelweise ersetzen. Ich hoffte jedoch auf eine bessere – eher programmgesteuerte – Möglichkeit, „…“ durch Auslassungspunkte zu ersetzen, ohne die Quelldateien tatsächlich zu ändern, um sie jeweils durch zu ersetzen \ldots.

Beispiel von 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}

Beispiel von 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
}

Beispiel von stories/first_story.tex:

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

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

Antwort1

Wenn Sie LuaLaTeX verwenden können, also das LaTeXFormatmit dem LuaTeXMotor(anstelle der pdfTeX-Engine) ist es unkompliziert, eine Lua-Funktion zu schreiben, die alle Instanzen von ...durch \dots„on the fly“ ersetzt, und zwar in einem sehr frühen Stadium des Kompilierungsprozesses (VorTeX startet seine übliche Verarbeitung.)

Das folgende Beispiel richtet eine solche Lua-Funktion mit dem Namen ein dots2ellipsesund stellt zwei LaTeX-Makros mit den Namen \dotstoellipsisONund bereit \dotstoellipsisOFF, die die Ausführung der Lua-Funktion aktivieren und deaktivieren.

Bildbeschreibung hier eingeben

(Der Code verwendet „Arno Pro“ statt „EB Garamond“, da bei ersterem ein leichter erkennbarer Unterschied im Erscheinungsbild von „…“ und „\dots“ entsteht.)

% !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}

Antwort2

Wenn Sie ein beliebiges Format (Plain, LaTeX) mit einer aktiven encTeX-Engine verwenden, können Sie etwa Folgendes schreiben:

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

something ... or another

und Sie erhalten die erwartete Ausgabe. encTeX ist in 8-Bit-TeX-Engines (Knuth, eTeX, pdfTeX) verfügbar.

Antwort3

Versuchen Sie Folgendes, kompilieren Sie es mit xelatex:

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

\begin{document}

    Hello ... World

\end{document}

verwandte Informationen