
Ich schreibe ein Dokument auf Italienisch, das auch englische Wörter enthält. Ich möchte alle englischen Wörter kursiv darstellen, aber ich möchte nicht alle Vorkommen im gesamten Dokument finden. Ich hoffe, es ist möglich, etwas zu erstellen (vielleicht einen Befehl?), mit dem ich eine Reihe von Wörtern angeben kann, damit sie beim Kompilieren des Dokuments kursiv dargestellt werden. Vielleicht ist es sogar möglich, sicherzustellen, dass alle englischen Wörter automatisch kursiv dargestellt werden. Bisher habe ich nichts gefunden, das meine Frage beantworten könnte, außerDas, aber das Problem besteht darin, dass es sich nur auf ein bestimmtes Wort bezieht, während ich eine Reihe von Wörtern angeben muss.
Antwort1
Eine einfache Modifikation vondiese Antwort:
\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}
Antwort2
Hier ist eine LuaLaTeX-basierte Lösung. Sie zeigt, wie man eine kommagetrennte Liste von Wörtern als Lua-Tabelle einrichtet, und richtet eine Lua-Funktion ein, die die Eingabe durchsucht und alle Wörter, die mit einem der Wörter in der Tabelle übereinstimmen, kursiv darstellt.
Beachten Sie, dass dieser Code alles andere als robust ist. Wenn Ihr Dokument beispielsweise ein Makro mit dem Namen \foxhound
oder eine Umgebung mit dem Namen enthält foxbat
, können mit Sicherheit sehr schlimme Dinge passieren.
Ich denke, es wäre besser, wenn Sie alle Vorkommen englischsprachiger Wörter in Ihrem Dokument manuell in \textit
Anweisungen einschließen würden.
% !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}