![LaTeX: "..." automatisch in "\ldots" umwandeln bei \input](https://rvso.com/image/328454/LaTeX%3A%20%22...%22%20automatisch%20in%20%22%5Cldots%22%20umwandeln%20bei%20%5Cinput.png)
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, \input
mehrere 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 \ldots
Text 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 dots2ellipses
und stellt zwei LaTeX-Makros mit den Namen \dotstoellipsisON
und bereit \dotstoellipsisOFF
, die die Ausführung der Lua-Funktion aktivieren und deaktivieren.
(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}