eu já liConverter automaticamente "..." em "\ldots"mas esta pergunta foi feita/respondida para ajudar o solicitante a economizar muitas operações de substituição em vários arquivos.
No meu caso, estou tentando \input
vários arquivos de cenas separadas (para um romance) que conformam uma história inteira. Estou interessado em manter os arquivos separados o mais simples possível, o que significa que quero usar menos comandos TeX/LaTeX. O motivo é que enviarei os arquivos separados para revisão, e ter muito \ldots
texto dificulta a leitura/revisão. No entanto, eu gostaria de usar uma fonte diferente de Linux Libertine ou Junicode, portanto a solução referenciada não funcionará principalmente para o meu documento.
Eu poderia, é claro, esperar até o final do processo de revisão e então substituir em lote. No entanto, eu esperava uma maneira melhor - mais programática - de substituir "..." por reticências, sem realmente modificar os arquivos de origem para substituir cada um por \ldots
.
Exemplo de 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}
Exemplo de 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
}
Exemplo de stories/first_story.tex
:
Había una vez un hombre. El hombre dijo:
---Buenos días... ¿me da una taza de café?
Responder1
Se você puder usar LuaLaTeX, ou seja, o LaTeXformatarcom o LuaTeXmotor(em vez do mecanismo pdfTeX), é simples escrever uma função Lua que substitui todas as instâncias de ...
por \dots
"on the fly", em um estágio bem inicial do processo de compilação (antesTeX inicia seu processamento normal).
O exemplo a seguir configura essa função Lua, denominada dots2ellipses
, e fornece duas macros LaTeX, denominadas \dotstoellipsisON
e \dotstoellipsisOFF
, que ativam e desativam a operação da função Lua.
(O código usa "Arno Pro" em vez de "EB Garamond", já que o primeiro gera uma diferença mais facilmente visível na aparência de "..." e "\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}
Responder2
Se você usar qualquer formato (Plain, LaTeX) com um mecanismo encTeX ativo, você poderá escrever algo assim:
\mubyte\dots...\endmubyte
\mubytein=1 % make it 0 to turn off conversion
something ... or another
e você obtém o resultado esperado. encTeX está disponível em motores TeX de 8 bits (Knuth, eTeX, pdfTeX).
Responder3
Tente isto, compilando com xelatex:
\documentclass{article}
\usepackage{ebgaramond}
\usepackage{xesearch}
\UndoBoundary{.}
\SearchList{list1}{\ldots}{...}
\begin{document}
Hello ... World
\end{document}