
Estoy escribiendo un documento en italiano que también contiene palabras en inglés. Quiero poner en cursiva todas las palabras en inglés, pero no quiero encontrar todas sus apariciones en todo el documento. Espero que sea posible crear algo (¿tal vez un comando?) con el que especifique un conjunto de palabras para que aparezcan en cursiva al compilar el documento. Tal vez incluso sea posible asegurarse de que todas las palabras en inglés estén automáticamente en cursiva. Hasta ahora, no he encontrado nada que pueda responder a mi pregunta, exceptoeste, pero el problema es que se refiere solo a una palabra en particular, mientras que yo necesito especificar un conjunto de palabras.
Respuesta1
Una simple modificación deesta respuesta:
\documentclass{article}
\usepackage{xesearch}
\UndoBoundary{-} % allow hyphens!!
\SearchList{italics}{\emph{#1}}{antibod?,covid?,infection,rna,DNA,*ELISA,*WHO,?pcr,%
RT-pcr,Multiplex-PCR,usa,UK,SARS?,virus,sensit?,test?}
\begin{document}
Mr. So and So, from the
WHO, % organization,
who % common word, must be not changed
has announced yesterday in the UK and the USA that the
ELISA % method acronym, must be changed
test to detect antibodies against SARS-CoV-2
in COVID-19 patients with first signs of the disease is useless,
said now that even PCR methods,
like RT-PCR
nested PCR,
quantitative PCR,
and Multiplex-PCR test,
used too early in the course of infection
are not enough sensitives.
On the other hand, the researcher
Elisa % Woman name, must be not changed
Whoknow proposed a WHO meetings to discuss the
disgnostic protocols of SARS and RNA virus and the sensitivity of a new indirect antibody test.
\StopList{italics}
\end{document}
Respuesta2
Aquí hay una solución basada en LuaLaTeX. Muestra cómo configurar una lista de palabras separadas por comas como una tabla Lua y configura una función Lua que recorre la entrada y muestra en cursiva cualquier palabra que coincida con una de las palabras de la tabla.
Tenga en cuenta que este código es todo menos robusto. Por ejemplo, si su documento contiene una macro llamada \foxhound
o un entorno llamado foxbat
, es probable que sucedan cosas muy malas.
Creo que sería mejor encerrar manualmente en \textit
declaraciones todas las instancias de palabras en inglés en su documento.
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage[a4paper,margin=2.5cm]{geometry}
\usepackage[english,italian]{babel}
\usepackage{luacode}
%% Lua-side code: (a) Lua table with English words,
%% (b) Lua function that renders words in the table in italics
\begin{luacode}
en_words_list = {"The","quick","brown","fox","jumps","over","the","lazy","dog"}
function italicize_english_words ( s )
for i=1,#en_words_list do
s = s:gsub ( en_words_list[i] , "\\textit{%0}" )
end
return s
end
\end{luacode}
%% LaTeX-side code: Macros to activate/deactivate the Lua function:
\newcommand\EnWordsOn{\directlua{
luatexbase.add_to_callback(
"process_input_buffer" , italicize_english_words , "enwords" )}}
\newcommand\EnWordsOff{\directlua{
luatexbase.remove_from_callback(
"process_input_buffer" , "enwords" )}}
\begin{document}
\EnWordsOn % Activate the Lua function
la rapida volpe marrone---the quick brown fox---salta sopra---jumps over---il cane pigro---the lazy dog
\end{document}