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を使用できる場合フォーマットLuaTeXでエンジン(pdfTeXエンジンの代わりに)コンパイルプロセスの非常に早い段階で、すべてのインスタンスを「オンザフライ」...で置き換えるLua関数を書くのは簡単です(\dots前にTeX は通常の処理を開始します。

次の例では、 という名前の Lua 関数を設定しdots2ellipses、 および という名前の 2 つの LaTeX マクロを提供します。\dotstoellipsisONこれら\dotstoellipsisOFFのマクロは、Lua 関数の操作をアクティブ化および非アクティブ化します。

ここに画像の説明を入力してください

(このコードでは、「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}

関連情報