- Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 6 anni, 7 mesi fa da
robitex.
-
CreatoreTopic
-
15 Gennaio 2020 alle 9:13 #117041::
Buongiorno a tutti! È la prima volta che scrivo su questo forum quindi spero di non aver sbagliato sezione o modalità.
Il mio problema è il seguente: vorrei scrivere un testo in Latex in modo che una lettera sia Bianca, una verde, una rossa, una bianca, una verde, una rossa ecc… (So che sembra una cosa un po’ strana ma il motivo è valido…). L’unico modo che mi è venuto in mente è quello di usare textcolor su ogni lettera ma è umanamente impossibile; inoltre ho provato a cercare sulla guida ma non ho visto nulla. Sapere per caso se c’è un comando o qualcosa per fare ciò?Grazie mille!
-
CreatoreTopic
-
AutoreRisposte
-
-
15 Gennaio 2020 alle 10:20 #117042::
Benvenuto nel forum.Certo è molto faticoso specificare \textcolor per ogni lettera, anche se il motivo è valido.
a) Spero che tu scriva queste lettere su uno sfondo adeguatamente colorato, altrimenti le lettere baianche non si vedono; quindi lo sfondo può essere nero o con qualche colore diverso dal rosso e dal verde, sufficientemente scuro da fare contrasto. Se non fosse così, il tuo problema si complicherebbe moltissimo, perché dovresti comunque tracciare il contienro della tua lettera; mi pare che esista un pacchetto che fa questa cosa, ma anche l’uso di questo pacchetto complicherebbe ulteriormente il tuo problema.
b) Puoi ridurre di tre volte il tuo problema se ti definisci una macro come questa`
\newcommand\tricolore[3]{\textcolor{green}#1\textcolor{white}{#2}\textcolor{red}{#3}}`da usare così`\tricolore ITA\tricolore LIA` senza graffe; se devi scrivere una parola che non ha un numero di lettere multiplo di tre, le lettere mancanti le sostiuisci conun gruppo vuoto[tt]{}[/tt]; per esempio per scrivere “oldClaudio” useresti [tt]\tricolore Old\tricolore Cla\tricolore udi\tricolore o{}{}[/tt].c) Forse si potrebbe andare su un’unica macro che sfrutti \detokenize e \scantokens, ma qui andiamo nel difficile.
d) Pensaci bene: se devi scrivere poche parole, anche riducendo per tre la fatica, può andare,ma se devi scrivere un’intera frase esamina bene se i validi motivi sono davvero validi. Ricorda che LaTeX è un programma di composizione tipografica, non un programma di disegno per costruire manifesti, reclame, depliant propagandistici e simili cose; magari ci si riesce anche, ma con grandissima fatica, perché non è la sua ragion d’essere.
-
15 Gennaio 2020 alle 11:08 #117043::
Grazie mille per la risposta!
Il motivo è che devo fare una presentazione di matematica in Spagna, a degli spagnoli, ma in italiano, quindi avevo pensato di scrivere le proposizioni sia in spagnolo che in italiano e colorarle in giallo e rosso per le spagnole ed in un bianco, rosso e verde per quelle in italiano (lo sfondo pensavo di metterlo grigio, ma farò delle prove). Quindi in effetti mi servirebbe scrivere tanto…
Chiaramente non è una cosa assolutamente necessaria ma mi sembrava molto simpatica, quindi se è troppo complicata da fare pazienza
-
15 Gennaio 2020 alle 11:49 #117044::
Dipende da quale classe usi per la presentazione, tuttavia da qualche parte, malamente nascosto in un pacchetto il cui nome non c’entra niente, ci sono le “icone” con tutte le bandiere. Quindi il tuo problema si risolverebbe in modo semplicissimo se usassi le bandierine già disponibili. Se non riesci a trovare il pacchetto misterioso (onestamente dovrei cercare per alcune ore per dirti il suo nome), con le bandiere italiana e spagnola, la soluzione con l’ambiente picture e il pacchetto color, è semplice; puoi anche comporti le bandiere separatamente usando la classe standalone, e salvando il risultato di ciascuna bandiera con il nome giusto, tipo bandiera-it.pdf e bandiera-es.pdf, in modo che importi l’uno o l’altro disegno in corrispondenza del blocco dove scrivi l’enunciato nella lingua corrispondente. A me sembrerebbe ancora meglio; anche perché se usi l’ambiente picture (o, se preferisci TikZ) il risultato è vettoriale e sei sicuro che puoi ingrandire o ridurre il disegno senza perdere nessuna qualità; col bianco della bandiera italiana sarebbe utile il contorno sottile disegnato in nero. Conla bandiera spagnola non sarebbe necessario, ma per omogeneità lo metterei anche in quella; inoltre non hai bisogno dello sfodo grigio o colorato.
-
15 Gennaio 2020 alle 14:09 #117045::
Stenus” post=117466Buongiorno a tutti! È la prima volta che scrivo su questo forum quindi spero di non aver sbagliato sezione o modalità.
Il mio problema è il seguente: vorrei scrivere un testo in Latex in modo che una lettera sia Bianca, una verde, una rossa, una bianca, una verde, una rossa ecc… (So che sembra una cosa un po’ strana ma il motivo è valido…). L’unico modo che mi è venuto in mente è quello di usare textcolor su ogni lettera ma è umanamente impossibile; inoltre ho provato a cercare sulla guida ma non ho visto nulla. Sapere per caso se c’è un comando o qualcosa per fare ciò?Grazie mille!
Ciao e benvenuto Stenus.
Un testo simile è abbastanza illeggibile… comunque…
Perché non usare LuaLaTeX?
In Lua non è difficile scrivere una funzione che prenda un carattere alla volta e lo inserisca nell’opportuno comando.Ecco il codice:
`% !TeX program = LuaLaTeX\documentclass{article}
\usepackage{xcolor}\newcommand{\colorize}[1]{\directlua{
local col = {[[white!90!black]], [[green]], [[red]]}
local f = 0
local function colorize(s)
local t = {}
local ch = string.char
local bs = ch(92)
local perc = ch(37)
local fmt = bs..[[textcolor{]]..perc..[[s}{]]..perc..[[s}]]
local i = 0
for c in string.utfcharacters(s) do
i = i + 1
if c == [[ ]] then
t = c
else
f = f + 1
if f == 4 then
f = 1
end
t = string.format(fmt, col[f], c)
end
end
return t
end
local t = colorize([=[#1]=])
tex.sprint(table.concat(t))
}}\newcommand{\mymacro}{pippo}
\begin{document}
ljkdlkjd
\colorize{dckjhqkjdshjh kjh jkdjk è 1212 \mymacro{} hsdkjh}
dòlkdlòkd
\end{document}`Come puoi vedere funziona con le lettere accentate e anche con macro semplici.
Infatti gli argomenti passati a \directlua vengono prima espansi.
Certamente non funziona se il testo contiene macro che non espandono semplicemente in un testo, per esempio non funziona se inserisco \LaTeX.Alla prossima.
R.
-
15 Gennaio 2020 alle 16:08 #117046
-
15 Gennaio 2020 alle 16:22 #117047::
Stenus” post=117477OldClaudio grazie mille per il suggerimento, se non riesco con le lettere lo farò con le bandierine!
Robitek grazie anche a te, ma non ho mai sentito parlare di LuaLaTex… come si utilizza ?Compili con il programma lualatex anziché pdflatex.
Le uniche modifiche al sorgente LaTeX sono 3:
1 codificare il sorgente in utf-8 (e probabilmente è già così in per la maggioranza degli utenti);
2 eliminare il caricamento del pacchetto inputenc;
3 caricare fontspec per regolare i fontquindi:
`
\documentclass{quello che vuoi}
\usepackage[italian]{babel}
\usepackage{fontspec}
…ecc
`
Saluti.
R.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.