RE: Soprano, nueva versión. - Shordi - 28-08-2021
En el tema de edición no me quise meter en berenjenales. Al exportar el proyecto a un archivo único lo puedes exportar como quieras, bien a .odt para trabajar con él en el LibreOffice directamente a partir de las preferncias que ya tiene, bien en .txt para después copiar y pegar sin formato en un .odt nuevo y formatear como más rabia te de.
Es que eso de la edición es un mundo muy complejo en el que, de momento, no tengo demasiado interés en meterme...
Saludos
RE: Soprano, nueva versión. - Shordi - 29-08-2021
Un poco picadito por el comentario de que Focuswriter sí cuenta bien las palabras y Soprano no, he instalado Focuswriter, revisado el código y hecho comparativas. Creo que ahora sí que se cuentan bien las palabras. He actualizado, pues, el gitlab con la versión 2.1.2.
El follón venía del tema de UTF-8 y demás pero creo que ya está resuelto.
Saludos.
"revisado el código"... de Soprano, no de Focuswriter, que conste
RE: Soprano, nueva versión. - tincho - 29-08-2021
Bien, solucione el problema de la propiedad .Centered borrándola mediante la edición del archivo del form con un editor de texto plano.
Luego me puse a escribir un capitulo de un libro logre asignarle al texto un tipo de encabezado H2, H3 ...etc. pero me gustarias una tecla rapida para eso en vez de tener que usar el botón de la toolbar. escribí un poco y guarde el archivo.- El tipo de control ToolBar compromete la compatibilidad hacia atrás, sugiero que no la uses.
- Se agradecería que incorpores teclas de atajo para asignar los tipos de encabezado como en writer. ctrl+1=Titulo 1, etc.
- Estaría bien que según donde este el cursor se indique en la barra de abajo que tipo de nivel es h1, h2, párrafo etc. ya que al escribir no logro diferenciar si es un titulo h2 o h3, tal vez una marca de agua que indique estas cosas podría funcionar.
- Estaría bien poder exportar un xhtml solo con marcas estándar <h1> a <h6>, <p>, <b> etc. para poder tomar esos archivos y crear luego un .epub, podrías agregar la exportación a xhtml para esto. [1]
- En el caso de la pantalla completa con F11 estaría bueno un cartelito que indique como volver al estado anterior yo le di al botón de pantalla y luego no sabia como volver.
[1] ejemplo de mi propuesta
Así esta en sopprano
Así es el html que exporta actualmente
Así seria el formato que me gustaría para formar un epub luego
Saludos.
RE: Soprano, nueva versión. - Shordi - 29-08-2021
Cita:Bien, solucione el problema de la propiedad .Centered borrándola mediante la edición del archivo del form con un editor de texto plano.
Luego me puse a escribir un capitulo de un libro logre asignarle al texto un tipo de encabezado H2, H3 ...etc. pero me gustarias una tecla rapida para eso en vez de tener que usar el botón de la toolbar. escribí un poco y guarde el archivo.- El tipo de control ToolBar compromete la compatibilidad hacia atrás, sugiero que no la uses. Si encuentro un control que lo sustituya, no hay problema...
- Se agradecería que incorpores teclas de atajo para asignar los tipos de encabezado como en writer. ctrl+1=Titulo 1, etc. Esto sí es posible, creo. lo miro.
- Estaría bien que según donde este el cursor se indique en la barra de abajo que tipo de nivel es h1, h2, párrafo etc. ya que al escribir no logro diferenciar si es un titulo h2 o h3, tal vez una marca de agua que indique estas cosas podría funcionar. Mmmm.... de momento no se me ocurre como, pero lo miro también
- Estaría bien poder exportar un xhtml solo con marcas estándar <h1> a <h6>, <p>, <b> etc. para poder tomar esos archivos y crear luego un .epub, podrías agregar la exportación a xhtml para esto. [1] Esto también es peliagudo, dado que Soprano depende de TextEdit para su funcionamiento. De todas formas déjame que le de unas vueltas
- En el caso de la pantalla completa con F11 estaría bueno un cartelito que indique como volver al estado anterior yo le di al botón de pantalla y luego no sabia como volver. Un balloon mismo puede valer ¿no?
Con todo esto veo delicado encontrar el equilibrio entre un programa de mera escritura y un programa de Edición de Textos. Es evidente que un editor de texto plano se queda insuficiente y es evidente, por el otro lado, que yo no puedo hacer un Writer del Libreoffice o un Microsoft Word...
Hay que encontrar ese equilibrio. De momento me apunto a hacer todo aquello que "buenamente" se pueda. Es decir, sin tener que reescribir lo que funciona, sin tener que añadir recursos externos a gambas y sin tener que complicar tanto el código y los tiempos de respuesta que se haga inmanejable.
Muchas gracias por el feed-back y por tu interés en el proyecto.
Saludos
RE: Soprano, nueva versión. - Grandamakulo - 29-08-2021
Cita:Un poco picadito por el comentario de que Focuswriter sí cuenta bien las palabras y Soprano no
Noooooo, no nos piqueeeeemos, que era una sola mención a un problema que puede ser peliagudo
Verás, yo escribía bastante microficción y, cuando en un concurso entras en 50, 40, 20 o 10 palabras, desde luego, ya no se trata de «entre 1.000 y 3.000 palabras», como por ejemplo « El Polidori». Cada palabra cuenta. Y, como los jueces suelen contar «a mano» —yo también lo haría, sobre todo con textos con efectos especiales, que haberlos, haylos—, ha habido varias desgracias por usar Google Docs y que no dé la contabilidad adecuado. De hecho, en su día en una página de éstas precisamente de microficción presenté una tabla con pruebas que había hecho con editores de todo tipo:
Añadiendo «Soprano» a esta tabla, puedo decir que... sigue contando muy bien de manera aproximada. Pero tampoco hayq ue volverse loco con el asunto. Por cierto, los tres patrones que uso son:
Código:
Sueños
―Ya no me quieres...―musita.
―No es eso, Sasha ―contesto sabiéndole el rey del chantaje emocional―.Necesito otros horizontes.
―Quimeras, Laika –dice.
―Está en mi sangre. Mi bisabuelo colaboró con Pavlov, mis padres fueron artistas de circo...
Sasha enmudece y yo, abatida, abandono la granja.
Su postrer aullido no me detiene.
Código:
Después
— ¿Te ha gustado? —pregunto él.
—¿Qué si me ha gustado? ¡Has estado fabuloso! Tienes que volver a hacerme eso de… —ella se sorprendió degollando de un tajo a su amante.
La frustración invadió.
su ser.
—Espera al segundo, Cloti. Contrólate —se repitió, a modo de mantra, la mantis religiosa.
Código:
Mi última bala
Estoy sobre la cabina oxidada de un camión; él, a unos metros, sobre una cisterna.
Sin munición, sin salida. Rodeados de no vivos.
—Tírame tu pistola —me grita.— ¡Confía en mí!
—¡¿Qué?!
—Hay un depósito de propano. Moriremos matando.
Se la lancé. El muy cabrón se suicidó.
—El último es mío, ahí lo dejo .—
Como ves, no es nada sencillo, yo empleo una miniaplicación que me hice yo mismo con mi mecanismo en html5 y js, y que funciona fenomenal. El problema es que al pasarlo a Gambas3, resulta que las RegExp no funcionan bien con UTF-8, tal cual señalas:
Código: <!--
SOFTWARE LIBRE
-->
<div class="crqt" id="Pral">
<form class="crqt" id="Escrito" "Estadisticas()">
<textarea onkeyup="Estadisticas()" id="Texto" class="crqt">Componente en pruebas. Escribe cualquier texto.</textarea>
</form>
<form class="crqt" id="Etiquetas">
<label>Palabras :<input id="Palabras" readonly="" /></label>
<label>Matrices :<input id="Matrices" readonly="" /></label>
<label>Caracteres :<input id="Caracteres" readonly="" /></label>
<label>Letras :<input id="Letras" readonly="" /></label>
<label>Párrafos :<input id="Parrafos" readonly="" /></label>
<label>Sílabas :<input id="Silabas" readonly="" /></label>
<label>Frases :<input id="Frases" readonly="" /></label>
<label style="border-top: solid thin">Szigriszt1993:<input id="Szigriszt1993" readonly="" style="border-top: solid thin"/></label>
<label>Perspicuidad :<input id="Perspicuidad" readonly="" /></label>
</form>
<script>
function Estadisticas() {
var strTexto = Texto.value;
var Resultado = 0
var pttPalabras = /([A-Za-z0-9\u00C0-\u02B8\-])[A-Za-z0-9\u00C0-\u02B8\-]*/g;
var pttMatrices = /./g;
var pttCaracteres= /\S/g;
var pttLetras = /[A-Za-z0-9\u00C0-\u02B8]/g;
var pttParrafos = /[\n][^\n]/g;
var pttSilabas = /[aeo]h[iu]|[iu]h[aeo]|[aeo][iu]|[aeo][y]|[y]|[íú]|[iu][^aeo]|[aeo]|[áéíóú]|[q|g]ui[aeo]/gi
var pttFrases = /[.?!][^.?!]/g;
var INFLESZ = "";
try {
Resultado = strTexto.match(pttPalabras).length;
var P = Resultado;
}
catch(err) {
Resultado = 0;
}
document.getElementById("Palabras").value = Resultado.toLocaleString();
try {
Resultado = strTexto.match(pttMatrices).length;
}
catch(err) {
Resultado = 0;
}
document.getElementById("Matrices").value = Resultado.toLocaleString();
try {
Resultado = strTexto.match(pttCaracteres).length;
}
catch(err) {
Resultado = 0;
}
document.getElementById("Caracteres").value= Resultado.toLocaleString();
try {
Resultado = strTexto.match(pttLetras).length;
var L = Resultado;
}
catch(err) {
Resultado = 0;
}
document.getElementById("Letras").value = Resultado.toLocaleString();
try {
Resultado = 1 + strTexto.match(pttParrafos).length;
}
catch(err) {
Resultado = 0;
}
document.getElementById("Parrafos").value = Resultado.toLocaleString();
try {
Resultado = strTexto.match(pttSilabas).length;
var S = Resultado;
}
catch(err) {
Resultado = 0;
}
document.getElementById("Silabas").value = Resultado.toLocaleString();
try {
Resultado = strTexto.match(pttFrases).length;
var F = Resultado;
}
catch(err) {
Resultado = 0;
}
document.getElementById("Frases").value = Resultado.toLocaleString();
Resultado = 206.835-62.3*S/P-P/F;
Resultado = Math.round(Resultado);
if (isNaN(Resultado)) {
Resultado = 0;
}
document.getElementById("Szigriszt1993").value = Resultado.toLocaleString();
if (Resultado<40) {
INFLESZ="Muy difícil";
}else if (Resultado<55) {
INFLESZ="Algo difícil";
}else if (Resultado<65) {
INFLESZ="Normal";
}else if (Resultado<80) {
INFLESZ="Bastante fácil";
}else {
INFLESZ="Muy fácil";
}
document.getElementById("Perspicuidad").value = INFLESZ;
}
</script>
<style type="text/css">
.crqt {
background-color: black;
color: rgb(0, 255, 0);
font-family: monospace;
font-size: 14px;
border-style: solid;
border-width: thin;
border-color: rgb(0, 255, 00);
}
form label {
display: inline;
width: 100px;
}
form input {
display: inline-block;
background-color: black;
color: rgb(0, 255, 0);
font-family: monospace;
font-size: 14px;
border-style: none;
width: 100px;
text-align: right;
}
textarea {
width: 98%;
height: 98%;
}
#Pral {
width: 670px;
height: 190px;
margin-right: auto;
margin-left: auto;
}
#Escrito {
width: 65%;
height: 99%;
float: left;
}
#Etiquetas {
width: 33%;
float: right;
}
</style>
</div>
Si supiese C, lo mismo montaba una librería para poder usar la función directamente en Gambas3.
PS.—Ésta es mi función de Gambas3, que no funciona todo lo bien que debiera:
Código: ' **** Estadísiticas de un texto.
' <<<< Devuelve una matriz de enteros:
' [0]: Número de palabras
' [1]: Número de tipos
' [2]: Número de caracteres
' [3]: Perspicuidad de Szgrizt 1993
' >>>> Texto plano para obtener estadísticas.
'
'' ╔═════════════════════════════════════════════════════════════╗
'' ║ Atención: PCRE sólo admite texto ASCII extendido, no UTF-8. ║
'' ║ Los valores obtenidos son aproximados. ║
'' ╚═════════════════════════════════════════════════════════════╝
Dim iPaso As New Integer[4] ' Variable de paso para almacenar resultados
Dim sEse As String ' Cadena de trabajo
Dim iPal As Integer ' Nº Palabras para cálculo perspicuidad
Dim iSil As Integer ' Nº Sílabas " "
Dim iLet As Integer ' Nº Letras " "
Dim iFrs As Integer ' Nº Frases " "
Dim SCAM As String = Chr(7) ' El símbolo «campanita» que ya no se usa
' Si no hay texto, no hay resultados
If Not Texto Then Return [0, 0, 0, 0]
' Palabras
sEse = RegExp.Replace(Texto, "([A-Za-zÁÉÍÓÚáéíóúÜüñÑ0-9])[A-Za-zÁÉÍÓÚáéíóúÜüñÑ0-9]*", SCAM, RegExp.Greedy)
iPal = Split(sEse, SCAM).Max
iPaso[0] = iPal
' Tipos
sEse = RegExp.Replace(Texto, ".", SCAM, RegExp.Greedy)
iPaso[1] = Split(sEse, SCAM).Max
' Caracteres
sEse = RegExp.Replace(Texto, "\\S", SCAM, RegExp.Greedy)
iPaso[2] = Split(sEse, SCAM).Max
' Sílabas
sEse = RegExp.Replace(Texto, "[aeo]h[iu]|[iu]h[aeo]|[aeo][iu]|[aeo][y]|[y]|[íú]|[iu][^aeo]|[aeo]|[áéíóú]|[q|g]ui[aeo]", SCAM, RegExp.Greedy + RegExp.Caseless)
iSil = Split(sEse, SCAM).Max
' Letras
sEse = RegExp.Replace(Texto, "[A-Za-zÁÉÍÓÚáéíóúÜüñÑ0-9]", SCAM, RegExp.Greedy)
iLet = Split(sEse, SCAM).Max
' Frases
sEse = RegExp.Replace(Texto, "[.?!][^.?!]", SCAM, RegExp.Greedy)
iFrs = Split(sEse, SCAM).Max
' Perspicuidad
If iPal > 0 And iFrs > 0 Then
iPaso[3] = 206.835 - 62.3 * iSil / iPal - iPal / iFrs
Else
iPaso[3] = 0
Endif
Return iPaso
End
RE: Soprano, nueva versión. - Grandamakulo - 07-09-2021
Obra parcialmente escrita con Soprano —el principio ya estaba terminado pero sin corregir— presentada al certamen IX Concurso homenaje a John William Polidori con la temática de fantasmas. El relato es «Círculo de frío».
RE: Soprano, nueva versión. - Shordi - 07-09-2021
Gracias! Todo un honor.
Por cierto he subido hoy unas actualizaciones sin acordarme que con tanto lío no había terminado algunas cosas... así que no actualicéis hasta nuevo comunicado, que puede dar fallos garrafales.
Saludos
RE: Soprano, nueva versión. - Shordi - 09-09-2021
Acabo de subir la versión corregida de Soprano. Vergüenza me da decir que no recuerdo todos los cambios, sólo los últimos, a saber: He reescrito el sistema de estilos y de atajos para hacerlo más flexible y amplio. Los demás cambios van en la línea que sugirió en su momento Maese Grandamakulo.
Un cambio que se ha hecho ha sido en le fichero de configuración .styles.conf, tanto en user.home/.config/soprano (que no se usa, pero se crea), como en el archivo raíz de cada proyecto que es el que se usa. Para no caer en los errores de siempre con estos archivos le he establecido que si la fecha del archivo es inferior al 8 de septiembre de 2021, lo elimine y lo cree de nuevo (con lo que se eliminará lo que hayáis modificado allí. Sorry).
Aún así, si tenéis algún problema raro, probad primero a borrarlos a mano. Es lo que tiene ser Beta-tester.
Saludos
RE: Soprano, nueva versión. - tincho - 16-09-2021
Reportando un bug.
Hace unos minutos clone el repo y ejecute soprano desde el ide en gambas 3.16.2 en Manjaro.
Estoy intentando hacer un manual de configuración de la red a medida que voy haciendo los pasos.
Estoy haciendolo con Writer pero decidí volver a probar soprano y salto un error pero he de decirte que tampoco me resulta intuitivo el uso y me parece que deberías hacer algunos cambios en la inteface.
Cree un proyecto (con soprano) eligiendo "Libro" porque no existe "Manual"
Algo de feedback
No me resulta amigable la navegación del documento, creo que tendría que manejarse todo desde un TreeView lateral izquierdo como:
Saludos.
RE: Soprano, nueva versión. - Shordi - 16-09-2021
Oído cocina. Investigate mode on
Investigado el bug, creo que se debe a que los ficheros de configuración de los estilos que usas son los de la versión anterior.
El aspecto de del .styles.conf debe ser éste:
Cita:[Colors]
foreground=15658732
[Specials]
Long Dash (Ctrl+-)="kc-安—"
Left Quotes (Ctrl+1)="kc1安«"
Right Quotes (Ctrl+2)="kc2安»"
[Styles]
Normal (Alt+0)="ea0安Ubuntu,10"
Títle 1 (Alt+1)="ea1安Ubuntu,18,Bold"
Títle 2 (Alt+2)="ea2安Ubuntu,16,Bold"
Títle 3 (Alt+3)="ea3安Ubuntu,14,Bold"
Títle 4 (Alt+4)="ea4安Ubuntu,12,Bold"
Es decir deben tener la letra china dentro del código. (Lo más clásico es usar "|" como separador pero cuando se trata de almacenar los caracteres especiales no puedes colocar ninguno de los que ofrece el teclado. Por tanto recurrí a la letra china que tiene significado para mí. No creo que nadie quiera que le aparezca al teclear nada y no creo que Soprano llegue a ser usado en china nunca...
Resumiendo: Si tus archivos ~/.config/soprano/.styles.conf y/o ~/<proyectos deSoprano>/<nombre_proyecto/.sytles.conf no tienen ese aspecto chino, elimínalos y se deberían crear correctamente al siguiente inicio.... Es lo que tiene ser beta-tester....
Respecto al interface, no veo cómo puedo hacerlo todo en un treeview sin reducirlo sólo a los nombres de archivo y perder la información de "un vistazo" sobre el número de palabras y fechas de modificación de los archivos dentro de cada capítulo. A lo más puedo unificar "Estructura" y "Adjuntos" en un sólo treeview... pero eso puede ser difícil de manejar cuando tu libro esté avanzado y tengas unas 50 capítulos con trescientas escenas y hayas recopilado tropecientos archivos de documentación...
Gracias por el feedback.
Saludos.
|