Risposte nei forum create
-
AutoreRisposte
-
9 Giugno 2011 alle 17:03 in risposta a: Script TeXworks per creazione e formattazione di tabelle #596629 Giugno 2011 alle 15:09 in risposta a: Script TeXworks per creazione e formattazione di tabelle #59660::
Allora ci siamo: su Squeeze ci sono le QT 4.6!
Invece, su Sid proprio le 4.7, cosa che spiega perché lo script mi funzionava.Ora ho provato i nuovi scripts su Sid (dopo, forse domani, però, li riprovo anche su Squeeze).
Quello per creare le tabelle, va, ma PARE che quello per formattarle NON funzioni. Si limita infatti a duplicare le impostazioni dell’ambiente, creando qualcosa di questo genere:
`\begin{tabular}{ccc}
\begin{tabular}{ccc}
prova & prova & prova \\
prova & prova & prova
\end{tabular}
\end{tabular}`
Non parte però alcun debug.P.S.: spero di non stare abusando della tua pazienza!
9 Giugno 2011 alle 10:19 in risposta a: Script TeXworks per creazione e formattazione di tabelle #59658::
Debian Squeeze AMD64
TexWorks Versione 0.4.1 r.829 (launchpad)`qsdb> .backtrace
#0 BuildCellLines() at -1
#1() at 305
#2() at /home/domenico/.TeXworks/scripts/Tables/tableWizard.js:175` `qsdb> .info locals
cellLines :
toReDo :
rows : 1
j : 0
returned : undefined
row : undefined
colWidths :
cols : 3
desired : 15
i : 0``qsdb> .up
#1() at 305` `qsdb> .info locals
cells : prova,prova,prova
environment : null
addTerminalEmptyCells : false
SplitText : function SplitText(text, desiredWidth) {
if (text.length > desiredWidth && desiredWidth != 0)
{
var lines = text.split(/\s+/);// Prima di tutto prendo la lunghezza di ogni sottostringa e se è maggiore di desiredWidth
// allora quest'ultimo deve essere aggiornato con la lunghezza massima. Faccio questo
// all'inizio così il riaggiustamento della larghezza massima ha effetto anche sulle linee
// precedenti (anziché dal momento in cui lo riaggiusto in poi)
for (var i = 0; i < lines.length; i++) if (desiredWidth < lines[i].length) desiredWidth = lines[i].length; var maxUsedWidth = 0; var line = -1; var current = 0; while (current < lines.length) { line++; lines[line] = lines[current]; current++; while (current < lines.length && lines[line].length + lines[current].length < desiredWidth) { lines[line] += ' ' + lines[current]; current++; } maxUsedWidth = Math.max(maxUsedWidth, lines[line].length); } var result = lines.slice(0, line + 1); return { "Result": result, "MaxUsedWidth": maxUsedWidth }; } var result = new Array(); result[0] = text; return { "Result": result, "MaxUsedWidth": text.length }; } returned : undefined BuildLaTeXCode : function BuildLaTeXCode(cellLines, colWidths) { var terminator = "\n"; var result = ""; var rows = cellLines.length; for (var i = 0; i < rows; i++) { var columnStartPosition = 0; var buffer = ""; var cols = cellLines[i].length; for (var j = 0; j < cols; j++) { var cell = cellLines[i][j]; for (var k = 0; k < cell.length; k++) { if (k > 0) {
buffer += terminator + “”.padRight(columnStartPosition);
}
var t = insertPadding ? cell[k].padRight(colWidths[j]) : cell[k];
buffer += t;
if(cell[k].length > 0) {
result += buffer;
buffer = “”;
}
cell[k] = t;
}columnStartPosition += cell[cell.length – 1].length;
if (j < cols - 1) { buffer += " & "; columnStartPosition += 3; } } if (addTerminalEmptyCells) { result += buffer; for (var j = cols; j < colWidths.length; j++) result += " & " + (insertPadding ? "".padRight(colWidths[j]) : ""); } if (i < rows - 1) result += " \\\\"; result += terminator; } if (environment) { var name = environment.trim(); var columns = RequiresColumnSpecifiers(name) ? "{" + "c".padRight(colWidths.length, "c") + "}" : ""; if (name.length > 0)
result = “\\begin{” + name + “}” + columns + terminator + result + “\\end{” + name + “}” + terminator;
}return result;
}
maxColumnWidth : 15
insertPadding : true
BuildCellLines : function BuildCellLines() {
var toReDo = new Array(); // indica che per le righe da 0 a toReDo[j] della colonna j bisogna ricalcolare la larghezza
var colWidths = new Array(); // colWidths[j] contiene la larghezza massima della colonna j su tutte le righe
var cellLines = new Array(); // cellLines[j] è un array contenente le linee in cui è stato suddiviso il testo della cella (i,j)var rows = cells.length;
for (var i = 0; i < rows; i++) { cellLines[i] = new Array(); var cols = cells[i].length; for (var j = 0; j < cols; j++) { var desired = typeof(colWidths[j]) == "undefined" || maxColumnWidth == 0 ? maxColumnWidth : Math.max(maxColumnWidth, colWidths[j]); var returned = SplitText(cells[i][j].trim(), desired); cellLines[i][j] = returned.Result; if (typeof(colWidths[j]) != "undefined") { if(returned.MaxUsedWidth > colWidths[j])
{
// È stata modificata la larghezza, quindi dovrà ricalcolare le sottostringhe per
// le celle precedenti. Da notare che può succedere che toReDo venga sovrascritto,
// ovviamente con un valore maggiore (indici più avanti) ma perché la larghezza
// è ulteriormente aumentata
toReDo[j] = i – 1;
}
else continue;
}
colWidths[j] = returned.MaxUsedWidth;
}
}for (var j = 0; j < toReDo.length; j++) { var row = toReDo[j]; if(typeof(row) != "undefined") { while (row >= 0)
{
if (cells[row][j])
cellLines[row][j] = SplitText(cells[row][j].trim(), colWidths[j]).Result;
row–;
}
}
}return { “CellLines”: cellLines, “ColumnWidths”: colWidths };
}
qsdb> .up
#2() at /home/domenico/.TeXworks/scripts/Tables/tableWizard.js:175
qsdb> .info locals
Math : [object Math]
NaN : NaN
undefined : undefined
Infinity : Infinity
JSON : [object JSON]
Object : function Object() {
[native code]
}
Function : function Function() {
[native code]
}
Array : function Array() {
[native code]
}
Boolean : function Boolean() {
[native code]
}
String : function String() {
[native code]
}
Number : function Number() {
[native code]
}
Date : function Date() {
[native code]
}
RegExp : function RegExp() {
[native code]
}
Error : function Error() {
[native code]
}
EvalError : function EvalError() {
[native code]
}
RangeError : function RangeError() {
[native code]
}
ReferenceError : function ReferenceError() {
[native code]
}
SyntaxError : function SyntaxError() {
[native code]
}
TypeError : function TypeError() {
[native code]
}
URIError : function URIError() {
[native code]
}
eval : function eval() {
[native code]
}
parseInt : function parseInt() {
[native code]
}
parseFloat : function parseFloat() {
[native code]
}
isNaN : function isNaN() {
[native code]
}
isFinite : function isFinite() {
[native code]
}
escape : function escape() {
[native code]
}
unescape : function unescape() {
[native code]
}
decodeURI : function decodeURI() {
[native code]
}
decodeURIComponent : function decodeURIComponent() {
[native code]
}
encodeURI : function encodeURI() {
[native code]
}
encodeURIComponent : function encodeURIComponent() {
[native code]
}
print : function () {
[native code]
}
gc : function gc() {
[native code]
}
version : function version() {
[native code]
}
TW : TWScriptAPI(name = “”)
__FILE__ : undefined
__LINE__ : -1
CANNOT_OPEN_FILE : Errore: impossibile aprire il file
formatterScript : tableFormatter.js
wizardScript : tableWizard.js
file : // TeXworksScript
// Title: &Formatta tabella/matrice
// Description: Formatta il codice di una tabella o di una matrice.
// Author: Antonio Macrì
// Version: 0.9.3
// Date: 2011-06-07
// Script-Type: standalone
// Context: TeXDocument
// Shortcut: Ctrl+K, Ctrl+Fvar formatterScript = “tableFormatter.js”;
/**
* Usato per sapere se un ambiente LaTeX richiede l'argomento con gli
* specificatori di colonna (ad esempio: {ccccc}).
*/
function RequiresColumnSpecifiers(environment)
{
return environment == “array” || environment == “tabular”;
}/**
* Aggiunge un carattere a destra di una stringa fino a raggiungere una data lunghezza.
*
* @param {number} width
* @param {string} c Il carattere da replicare in coda alla stringa.
*/
String.prototype.padRight = function(width, c)
{
return (width > this.length) ? (this + (c == null ? ” ” : c)).padRight(width, c) : this;
}function TableFormatter()
{
this.Settings = {
AddTerminalEmptyCells: false,
MaxColumnWidth: 15,
InsertPadding: true,
Environment: null
}
}TableFormatter.prototype.LoadSettings = function()
{
var settings = TW.readFile(formatterScript.replace(“.js”, “-settings.json”));
if (settings.status != 0) {
// Qualcosa è andata storta: non faccio niente.
return;
}
// Evito di riscrivere tutto Settings, ma aggiorno leggendole dal file solo le
// proprietà già presenti. Così facendo, se nel file ne manca qualcuna, rimane
// quella impostata nel costruttore e se invece ce ne sono di vecchie evito di
// portarmele dietro in eterno.
var properties = JSON.parse(settings.result);
for (var p in properties)
if (typeof(this.Settings[p]) != “undefined”) this.Settings[p] = properties[p];
}TableFormatter.prototype.SaveSettings = function()
{
var r = TW.writeFile(formatterScript.replace(“.js”, “-settings.json”), JSON.stringify(this.Settings));
if (r == 2) {
// L'utente dovrebbe mettere la spunta a “Allow scripts to write files”:
// non faccio niente e semplicemente non salvo le impostazioni.
}
}/**
* Analizza il codice LaTeX di una tabella/matrice ricavandone le righe e le colonne.
*
* @param {string} text Il codice LaTeX da analizzare.
*/
TableFormatter.prototype.ParseCode = function(text)
{
// Faccio una cosa molto semplice ma efficace (in prima approssimazione…)
// altrimenti il codice qui si complicherebbe di molto
var regex = /^(?:(?!\\\\).|\n)+(?:\\\\|(?=$))/;
var rows = new Array();
for (var i = 0; (matches = regex.exec(text)) != null; i++)
{
// Purtroppo non è supportato il costrutto di lookbehind nelle espressioni regolari
// Qt (altrimenti potrei fare .split(/(?<!\\)&/) per suddividere la riga in celle). // Mi tocca invece farlo a mano rows[i] = new Array(); var m = rows[i][0] = matches[0]; for (var pos = m.indexOf("&"); pos >= 0; pos = m.indexOf(“&”, pos))
{
if (pos == 0 || m[pos-1] != '\\')
{
rows[rows.length – 1] = m.substr(0, pos).replace(/\s+/g,” “).trim();
m = rows[rows.length] = m.substr(pos + 1);
pos = 0;
}
else pos++;
}
rows[rows.length – 1] = (m.substr(m.length-2) == “\\\\” ? m.substr(0, m.length-2) : m).replace(/\s+/g,” “).trim();text = text.substring(matches[0].length);
}
this.Table = rows;
}/**
* Genera il codice LaTeX di una tabella, aggiungendo opzionalmente degli spazi di
* riempimento e racchiudendo eventualmente il tutto in un ambiente.
*
* @param {object} [cells=this.Table] Una matrice bidimensionale di stringhe contenenti il
* testo della rispettiva cella. Righe differenti possono avere numero di colonne diverso.
* @param {number} [maxColumnWidth=this.Settings.MaxColumnWidth] La larghezza massima di
* una colonna del sorgente generato. Se vale zero, allora non viene usato alcun limite.
* @param {boolean} [addTerminalEmptyCells=this.Settings.AddTerminalEmptyCells] Specifica
* se tutte le righe generate devono avere lo stesso numero di colonne (si aggiungeranno,
* cioè, i delimitatori di colonna anche per le celle vuote finali).
* @param {boolean} [insertPadding=this.Settings.InsertPadding] Un booleano che specifica se
* inserire degli spazi di riempimento in modo da avere tutte le colonne del sorgente
* della stessa larghezza (i delimitatori di colonna '&' risulteranno così allineati).
* @param {string} [environment=this.Settings.Environment] Il nome dell'ambiente in cui
* inserire il codice.
*/
TableFormatter.prototype.GenerateCode = function(cells, maxColumnWidth, addTerminalEmptyCells, insertPadding, environment)
{
cells = cells ? cells : this.Table;
maxColumnWidth = maxColumnWidth ? maxColumnWidth : this.Settings.MaxColumnWidth;
addTerminalEmptyCells = typeof(addTerminalEmptyCells) != “undefined” ? addTerminalEmptyCells : this.Settings.AddTerminalEmptyCells;
insertPadding = typeof(insertPadding) != “undefined” ? insertPadding : this.Settings.InsertPadding;
environment = environment ? environment : this.Settings.Environment;/**
* Divide una stringa in sottostringhe aventi (se possibile) la lunghezza specificata.
* Può accadere che la lunghezza di qualche sottostringa debba essere necessariamente
* maggiore di desiredWidth: tale valore viene comunque restituito al chiamante.
*
* @param {string} text La stringa da suddividere.
* @param {number} desiredWidth La dimensione ideale di ciascuna sottostringa.
* @returns {object} Restituisce un oggetto contenente nella proprietà Result un
* vettore con l'insieme di sottostringhe ottenute e nella proprietà MaxUsedWidth la
* lunghezza massima tra tutte le sottostringhe restituite (che può essere anche
* maggiore o minore del valore passato in desiredWidth).
*/
function SplitText(text, desiredWidth)
{
if (text.length > desiredWidth && desiredWidth != 0)
{
var lines = text.split(/\s+/);// Prima di tutto prendo la lunghezza di ogni sottostringa e se è maggiore di desiredWidth
// allora quest'ultimo deve essere aggiornato con la lunghezza massima. Faccio questo
// all'inizio così il riaggiustamento della larghezza massima ha effetto anche sulle linee
// precedenti (anziché dal momento in cui lo riaggiusto in poi)
for (var i = 0; i < lines.length; i++) if (desiredWidth < lines[i].length) desiredWidth = lines[i].length; var maxUsedWidth = 0; var line = -1; var current = 0; while (current < lines.length) { line++; lines[line] = lines[current]; current++; while (current < lines.length && lines[line].length + lines[current].length < desiredWidth) { lines[line] += ' ' + lines[current]; current++; } maxUsedWidth = Math.max(maxUsedWidth, lines[line].length); } var result = lines.slice(0, line + 1); return { "Result": result, "MaxUsedWidth": maxUsedWidth }; } var result = new Array(); result[0] = text; return { "Result": result, "MaxUsedWidth": text.length }; } /** * Analizza le celle della tabella e genera una matrice bidimensionale contenente in * ogni elemento (i,j) un array con le linee in cui viene spezzato il testo del sorgente * relativo alla cella (i,j). */ function BuildCellLines() { var toReDo = new Array(); // indica che per le righe da 0 a toReDo[j] della colonna j bisogna ricalcolare la larghezza var colWidths = new Array(); // colWidths[j] contiene la larghezza massima della colonna j su tutte le righe var cellLines = new Array(); // cellLines[i][j] è un array contenente le linee in cui è stato suddiviso il testo della cella (i,j) var rows = cells.length; for (var i = 0; i < rows; i++) { cellLines[i] = new Array(); var cols = cells[i].length; for (var j = 0; j < cols; j++) { var desired = typeof(colWidths[j]) == "undefined" || maxColumnWidth == 0 ? maxColumnWidth : Math.max(maxColumnWidth, colWidths[j]); var returned = SplitText(cells[i][j].trim(), desired); cellLines[i][j] = returned.Result; if (typeof(colWidths[j]) != "undefined") { if(returned.MaxUsedWidth > colWidths[j])
{
// È stata modificata la larghezza, quindi dovrà ricalcolare le sottostringhe per
// le celle precedenti. Da notare che può succedere che toReDo venga sovrascritto,
// ovviamente con un valore maggiore (indici più avanti) ma perché la larghezza
// è ulteriormente aumentata
toReDo[j] = i – 1;
}
else continue;
}
colWidths[j] = returned.MaxUsedWidth;
}
}for (var j = 0; j < toReDo.length; j++) { var row = toReDo[j]; if(typeof(row) != "undefined") { while (row >= 0)
{
if (cells[row][j])
cellLines[row][j] = SplitText(cells[row][j].trim(), colWidths[j]).Result;
row–;
}
}
}return { “CellLines”: cellLines, “ColumnWidths”: colWidths };
}/**
* Genera il codice LaTeX di una tabella, aggiungendo opzionalmente gli spazi di
* riempimento e racchiudendo eventualmente il tutto in un ambiente.
*
* @param {string[][][]} cellLines Una matrice bidimensionale contenente in ogni
* elemento (i,j) un array con le linee in cui è stato spezzato il testo del sorgente
* relativo alla cella (i,j).
* @param {number} colWidths La larghezza (in caratteri) di ciascuna colonna nel sorgente.
*/
function BuildLaTeXCode(cellLines, colWidths)
{
var terminator = “\n”;
var result = “”;
var rows = cellLines.length;
for (var i = 0; i < rows; i++) { var columnStartPosition = 0; var buffer = ""; var cols = cellLines[i].length; for (var j = 0; j < cols; j++) { var cell = cellLines[i][j]; for (var k = 0; k < cell.length; k++) { if (k > 0) {
buffer += terminator + “”.padRight(columnStartPosition);
}
var t = insertPadding ? cell[k].padRight(colWidths[j]) : cell[k];
buffer += t;
if(cell[k].length > 0) {
result += buffer;
buffer = “”;
}
cell[k] = t;
}columnStartPosition += cell[cell.length – 1].length;
if (j < cols - 1) { buffer += " & "; columnStartPosition += 3; } } if (addTerminalEmptyCells) { result += buffer; for (var j = cols; j < colWidths.length; j++) result += " & " + (insertPadding ? "".padRight(colWidths[j]) : ""); } if (i < rows - 1) result += " \\\\"; result += terminator; } if (environment) { var name = environment.trim(); var columns = RequiresColumnSpecifiers(name) ? "{" + "c".padRight(colWidths.length, "c") + "}" : ""; if (name.length > 0)
result = “\\begin{” + name + “}” + columns + terminator + result + “\\end{” + name + “}” + terminator;
}return result;
}var returned = BuildCellLines();
return BuildLaTeXCode(returned.CellLines, returned.ColumnWidths);
}formatter : [object Object]
selection :
RequiresColumnSpecifiers : function RequiresColumnSpecifiers(environment) {
return environment == “array” || environment == “tabular”;
}
TableFormatter : function TableFormatter() {
this.Settings = {
AddTerminalEmptyCells: false,
MaxColumnWidth: 15,
InsertPadding: true,
Environment: null
}
}
qsdb> .up
Already at top (outermost) frame.`P.S.: mi pare di ricordare che ieri su Sid, con TW v. 5, gli scripts andassero.. Riprovo dopo sull’altra macchina e ti fo sapere.
8 Giugno 2011 alle 12:41 in risposta a: Script TeXworks per creazione e formattazione di tabelle #59654::
Mi dispiace farti impazzire, ma la situazione è peggiorata. 😀Debian Squeeze Amd64
TexWorks Versione 0.4.1 r.829 (launchpad)Errore (per creare una tabella):
`TypeError: Result of expression 'cells[j].trim' [undefined] is not a function`P.S.: allora avevo capito come funziona l’altro script, quello per modificare una tabella, ma debbo confermare che non va, almeno sulle mie macchine.
8 Giugno 2011 alle 11:53 in risposta a: Script TeXworks per creazione e formattazione di tabelle #59652::Ora paiono funzionare, ma non ho capito come si fa ad inserire le tabelle in ambienti.
Infatti, se metto la spunta alla corrispondente voce ed indico, ad esempio, “tabular”, non fa niente.Ciao,
DomenicoEDIT
Testato su Debian Squeeze, con TW v. 0.4.1 r.829 (launchpad)
Il wizard parte, ma non produce alcun esito.La formattazione invece funzionava, giusto? Credo di aver risolto (ieri sera avevo sonno…)
Ciao
La formattazione?
O non ho capito come funziona oppure…. non funziona! 😀
8 Giugno 2011 alle 8:06 in risposta a: Script TeXworks per creazione e formattazione di tabelle #59650::
Ora paiono funzionare, ma non ho capito come si fa ad inserire le tabelle in ambienti.
Infatti, se metto la spunta alla corrispondente voce ed indico, ad esempio, “tabular”, non fa niente.Ciao,
DomenicoEDIT
Testato su Debian Squeeze, con TW v. 0.4.1 r.829 (launchpad)
Il wizard parte, ma non produce alcun esito.
7 Giugno 2011 alle 18:05 in risposta a: Script TeXworks per creazione e formattazione di tabelle #59648::[quote]Gli eseguibili per la versione 0.5.0 sono disponibili **anche** per Mac OS X, agli indirizzi […]
Ciao
EnricoSbaglio o per linux e win la versione in distribuzione è ancora la 0.4.1 (come sembra sul sito di texworks)?
Mi pare che per Win ci sia la 0.5
http://code.google.com/p/texworks/downloads/detail?name=TeXworks-w32-0.5-r813.zip&can=2&q=
Ciao
Enrico[/quote]
Per linux, dipende dal sistema utilizzato.
Debian http://packages.debian.org/search?keywords=texworks&searchon=names&suite=all§ion=all&sourceid=mozilla-searchUbuntu https://launchpad.net/~texworks/+archive/stable/+packages (stable)
https://launchpad.net/~texworks/+archive/ppa (development, ovvero v. 0.5)Sulla mia Debian Squeeze uso senza problemi il ppa di ubuntu per la versione stable, ma ho già verificato (senza però procedere) che anche il ppa della versione di sviluppo andrebbe benissimo.
Se usate altre distro (arch, fedora etc.), non dovreste aver problemi a trovare la v. 0.5.
::Poche, le trovi nell’annuncio in cima alla sezione.
Ciao
EnricoEhm… ma all’inizio del topic non c’è nessuna informazione. 😕
::Salve a tutti ragazzi.
Vi scrivo per un problema occorso ad un mio amico, piuttosto che a me, ma credo sia opportuno che scriva io perché per quanto io sia un novizio, lui lo è ancora più di me.
Lui ha windows 7 e gli ho detto di scaricare miktex. Solo che non riesco a fargli l’aggiornamento dei pacchetti perché sembra ci sia un problema di incompatibilità tra il programma e win7. A qualcuno è successo lo stesso e sa dirmi come risolvere il problema?
Grazie a tutti in anticipo,
Emanuele.Bah!
Non so rispondere alla tua questione, ma ti consiglio di ricorrere a texlive, anziché a miktex: andrai sul sicurissimo!
::In effetti navigando sul forum mi ero accorto di questa preferenza di texlive e texworks, unitamente ad ambienti linux. Avevo solo bisogno di conferme, che ho ottenuto.
Grazie per la disponibilità.
P.S.: Per quanto riguarda il s.o., windows è uscito insieme al notebook perciò non l’ho tolto (invaliderebbe la garanzia) ed inoltre il pc lo utilizzano anche i miei familiari (fortemente legati a windows).ATTENZIONE!
Di norma, il comparto software non ha niente a che vedere con la garanzia. Se fosse come tu dici, io sarei fregato da secoli! 😉Tra l’altro, un dual boot…
::
A me questo problema succede spessissimo.Per la verità, uso polyglossia, ma ho imparato a risolvere questo problema con due metodi:
1) racchiudendo il testo latino in \textlatin{blablabla}
2) inserendo un trattino di collegamento a mano (\-) nel punto che mi interessa.La soluzione 1 mi fu suggerita da Enrico, che ringrazio nuovamente.
Questo è il mio preambolo polyglossiano:
`\usepackage{polyglossia}
\setmainlanguage[variant=polytonic]{greek}
\setotherlanguage{latin}`Spero che quanto sopra possa tornarti utile.
30 Aprile 2011 alle 21:56 in risposta a: [RISOLTO] Left & Right Ceiling in un’edizione critica #58476::[quote]Ma ci sono quei caratteri nel font che usi?
Ah! 😳 😳 😳
Mi accorgo ora che il linux libertine non dispone dei caratteri in questione!!!!
Il che è un vero casino, dal momento che ho già scartato tanti altri fonts proprio per l’assenza di alcuni altri caratteri per me necessarii…Ora cerco un modo per usare un altro font per i miei DUE soli casi….
`\usepackage{newunicodechar}
\newunicodechar{⌈}{{\ceilfont ⌈}}
\newunicodechar{⌉}{{\ceilfont ⌉}}
\newfontfamily{\ceilfont}{Charis SIL}`
Naturalmente Charis SIL è solo una delle possibilità. In questo modo puoi usare direttamente i due caratteri nel tuo documento senza ricorrere a macro strane.Ciao
Enrico[/quote]
GRANDIOSO!!!!
Non conoscevo questo pacchetto, anzi… come fai a conoscerlo [domanda retorica]? 😯 😯
30 Aprile 2011 alle 21:39 in risposta a: [RISOLTO] Left & Right Ceiling in un’edizione critica #58474::[quote]Probabilmente ti basta usare direttamente i codici che già conosci:
\char\string”2308
e
\char\string”2309
\string probabilmente non ti serve a meno che tu con polyglossia non usi una delle lingue che rendono il doppio apice un carattere attivo; in ogni caso non disturba, e rimarrebbe solo a scopo pleonastico.
Ti conviene definirti due comandi, che ti dicano qualcosa tipo \lceiling e \rceiling, in modo da non doverti ricordare ogni volta i codici UNICODE di quei due caratteri.Intanto, ti ringrazio per l’interessamento!
Non conoscevo questa possibilità, ma purtroppo non mi aiuta: ho provato varie combinazioni, anche senza \string, ma il risultato è sempre uno spazio bianco,Spero di trovare una soluzione quanto prima, altrimenti dovrò o rinunciare al carattere o trovare un surrogato: i miei tempi sono troppo stretti! 😥
Ma ci sono quei caratteri nel font che usi?
Ciao
Enrico[/quote]
Ah! 😳 😳 😳
Mi accorgo ora che il linux libertine non dispone dei caratteri in questione!!!!
Il che è un vero casino, dal momento che ho già scartato tanti altri fonts proprio per l’assenza di alcuni altri caratteri per me necessarii…Ora cerco un modo per usare un altro font per i miei DUE soli casi….
Grazie mille e, veramente, scusatemi!
-
AutoreRisposte