mirror of
https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
synced 2025-10-29 09:15:33 +00:00
Changed a few things in the printer
This commit is contained in:
@@ -55,6 +55,7 @@ namespace HamannPrinter
|
||||
static public string NormalFont { get; set; }
|
||||
// Name der alternativen Font (serifenlos)
|
||||
static public string SpecialFont { get; set; }
|
||||
static public string Diodone { get; set; }
|
||||
//Positionswert von Hochstellungen
|
||||
static public string SuperValue { get; set; }
|
||||
//Positionswert von Tiefstellungen
|
||||
@@ -94,6 +95,7 @@ namespace HamannPrinter
|
||||
SpecialFont = docxOptions.SpecialFont;
|
||||
SuperValue = docxOptions.SuperValue;
|
||||
SubValue = docxOptions.SubValue;
|
||||
Diodone = docxOptions.Diodone;
|
||||
RegisterPaths = new List<string>();
|
||||
YearPaths = new List<string>();
|
||||
LetterPaths = new List<string>();
|
||||
@@ -284,7 +286,7 @@ namespace HamannPrinter
|
||||
|
||||
public static void MakeSourceSection(LetterObj letter)
|
||||
{
|
||||
string txt = "Johann Georg Hamann: Kommentierte Briefausgabe. Hrsg. von Leonard Keidel und Janina Reibold, auf Grundlage der Vorarbeiten Arthur Henkels, unter Mitarbeit von Gregor Babelotzky, Konrad Bucher, Christian Großmann, Carl Friedrich Haak, Luca Klopfer, Johannes Knüchel, Isabel Langkabel und Simon Martens. (Heidelberg 2020ff.) URL: ";
|
||||
string txt = "Johann Georg Hamann: Kommentierte Briefausgabe (HKB). Hrsg. von Leonard Keidel und Janina Reibold, auf Grundlage der Vorarbeiten Arthur Henkels, unter Mitarbeit von Gregor Babelotzky, Konrad Bucher, Christian Großmann, Carl Friedrich Haak, Luca Klopfer, Johannes Knüchel, Isabel Langkabel und Simon Martens. (Heidelberg 2020ff.) URL: ";
|
||||
//Hyperlink link = new Hyperlink(new Run(new Text("www.hamann-ausgabe.de"))) { Anchor = "Hamann-Ausgabe online", DocLocation = "https://www.hamann-ausgabe.de", Id= "https://www.hamann-ausgabe.de" };
|
||||
var link = new Run(new Text("www.hamann-ausgabe.de"));
|
||||
var head = new Run(new Text("Quelle:"));
|
||||
@@ -335,7 +337,7 @@ namespace HamannPrinter
|
||||
{
|
||||
string editRefString = RemoveWhiteSpaceLinebreak(edit.Reference);
|
||||
XElement editReference = StringToXElement(editRefString);
|
||||
ParseXElement(editReference, editLemma);
|
||||
ParseSublementaXElement(editReference, editLemma);
|
||||
editLemma.AppendChild<Run>(new Run(new Text("] ") { Space = SpaceProcessingModeValues.Preserve }));
|
||||
}
|
||||
else
|
||||
@@ -354,7 +356,7 @@ namespace HamannPrinter
|
||||
XElement editComment = StringToXElement(editText);
|
||||
if (editComment != null)
|
||||
{
|
||||
ParseXElement(editComment, editLemma);
|
||||
ParseSublementaXElement(editComment, editLemma);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -689,6 +691,9 @@ namespace HamannPrinter
|
||||
string tag = xelem.Name.LocalName;
|
||||
switch (tag)
|
||||
{
|
||||
case "letterTradition":
|
||||
form = new Formatierer(SansSerifRun);
|
||||
break;
|
||||
case "line":
|
||||
string parent = GetHighestParentNode(xnode).Trim();
|
||||
if (parent == "editreason")
|
||||
@@ -786,6 +791,9 @@ namespace HamannPrinter
|
||||
|
||||
switch (tag)
|
||||
{
|
||||
case "letterTradition":
|
||||
form = new Formatierer(SansSerifRun);
|
||||
break;
|
||||
case "app":
|
||||
case "emph":
|
||||
string emphParent = GetHighestParentNode(xelem).Trim();
|
||||
@@ -793,6 +801,7 @@ namespace HamannPrinter
|
||||
{
|
||||
form = new Formatierer(LineBreakBefore);
|
||||
form += new Formatierer(BoldRun);
|
||||
form += new Formatierer(SansSerifRun);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -838,7 +847,7 @@ namespace HamannPrinter
|
||||
case "hand":
|
||||
//die Liste HandTags wird später zur Referenzierung der <hand> Stellen gebraucht
|
||||
letter.HandTags.Add(xelem);
|
||||
form = new Formatierer(GreyBackRun);
|
||||
form = new Formatierer(DiodoneRun);
|
||||
break;
|
||||
|
||||
case "ul":
|
||||
@@ -875,7 +884,7 @@ namespace HamannPrinter
|
||||
break;
|
||||
|
||||
case "added":
|
||||
form = new Formatierer(GreyRun);
|
||||
form = new Formatierer(GreyBackRun);
|
||||
break;
|
||||
|
||||
case "fn":
|
||||
@@ -1916,6 +1925,18 @@ namespace HamannPrinter
|
||||
runprops.AppendChild(new RunFonts() { Ascii = Hamann2Word.SpecialFont, HighAnsi = Hamann2Word.SpecialFont, ComplexScript = Hamann2Word.SpecialFont });
|
||||
}
|
||||
|
||||
public static void DiodoneRun(Run run, string arg = null)
|
||||
{
|
||||
RunProperties runprops = run.RunProperties;
|
||||
if (runprops == null)
|
||||
{
|
||||
runprops = run.PrependChild(new RunProperties());
|
||||
}
|
||||
runprops.AppendChild(new RunFonts() { Ascii = Hamann2Word.Diodone, HighAnsi = Hamann2Word.Diodone, ComplexScript = Hamann2Word.Diodone });
|
||||
runprops.AppendChild(new FontSize() { Val = "21" });
|
||||
runprops.AppendChild(new FontSizeComplexScript() { Val ="21" });
|
||||
}
|
||||
|
||||
public static void SerifRun(Run run, string arg = null)
|
||||
{
|
||||
RunProperties runprops = run.RunProperties;
|
||||
@@ -2419,7 +2440,40 @@ namespace HamannPrinter
|
||||
}
|
||||
}
|
||||
|
||||
public static void ParseXElement(XElement list, Paragraph para)
|
||||
public static void ParseTraditionXElement(XElement list, Paragraph para, LetterObj letter) {
|
||||
//loopt über die Nodes des BriefXmls
|
||||
foreach (XNode xnode in list.Nodes())
|
||||
{
|
||||
/*wenn die node der ersten ebene ein XElelemnt ist, werden die
|
||||
* ihrem typ entsprechenden formatierungs informationen auf den "StyleStack" gelegt.
|
||||
dann wird mit WalkNodeTree über die ChildNodes geloopt*/
|
||||
if (xnode is XElement)
|
||||
{
|
||||
XElement xelem = xnode as XElement;
|
||||
Formatierer stack = null;
|
||||
stack = ProcessXelement(stack, xelem, letter.WordDoc, letter);
|
||||
if (xelem.LastNode != null)
|
||||
{
|
||||
WalkNodeTree(xelem.LastNode, stack, para, letter.WordDoc, letter);
|
||||
}
|
||||
}
|
||||
/*wenn node der ersten ebene XText ist, wird ihr Textinhalt als Run dem letzten Absatz des Dokuments angehängt*/
|
||||
else if (xnode is XText)
|
||||
{
|
||||
Run run = MakeTextRun(xnode);
|
||||
Formatierer stack = null;
|
||||
foreach (var anc in xnode.Ancestors())
|
||||
{
|
||||
stack += GetFormat(anc, para: para);
|
||||
}
|
||||
stack?.Invoke(run);
|
||||
Paragraph lastParagraph = GetLastPara(letter.WordDoc);
|
||||
lastParagraph.AppendChild(run);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void ParseSublementaXElement(XElement list, Paragraph para, LetterObj letter = null)
|
||||
{
|
||||
//wertet Kommentare, Überliefrerungen und Varianten apparat in form von XElement aus und hängt sie an para an
|
||||
if (list != null)
|
||||
@@ -2460,7 +2514,7 @@ namespace HamannPrinter
|
||||
wird es hinzugefügt. das einzige was dann etwas kniffelig ist, ist herauszufinden von wo (zeile/seite) bis
|
||||
wo sich der bereich mit fremder hand erstreckt*/
|
||||
|
||||
MakeHeading(letter.WordDoc, "Zusätze von fremder Hand");
|
||||
MakeHeading(letter.WordDoc, "Zusätze fremder Hand");
|
||||
foreach (var hand in letter.HandTags)
|
||||
{
|
||||
Paragraph para = GetLastPara(letter.WordDoc);
|
||||
@@ -2514,7 +2568,7 @@ namespace HamannPrinter
|
||||
string descript = "";
|
||||
if (Letters.HandPersons.ContainsKey(nameIndex))
|
||||
{
|
||||
descript = "geschrieben von " + Letters.HandPersons[nameIndex].Name;
|
||||
descript = Letters.HandPersons[nameIndex].Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -154,11 +154,76 @@ namespace HamannPrinter
|
||||
case "7":
|
||||
return "VII";
|
||||
default:
|
||||
Logger.Out("Kann BandZahl " + index + "nicht in römische Zahl auflösen.");
|
||||
return "?";
|
||||
var number = 0;
|
||||
if (!Int32.TryParse(index, out number)) {
|
||||
Logger.Out("Kann BandZahl " + index + "nicht in römische Zahl auflösen.");
|
||||
return "?";
|
||||
}
|
||||
else {
|
||||
return ToRoman(number);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Dictionary<char, int> RomanMap = new Dictionary<char, int>()
|
||||
{
|
||||
{'I', 1},
|
||||
{'V', 5},
|
||||
{'X', 10},
|
||||
{'L', 50},
|
||||
{'C', 100},
|
||||
{'D', 500},
|
||||
{'M', 1000}
|
||||
};
|
||||
|
||||
public static int RomanToInteger(string roman)
|
||||
{
|
||||
var ro = roman.ToUpper();
|
||||
int number = 0;
|
||||
for (int i = 0; i < roman.Length; i++)
|
||||
{
|
||||
if (RomanMap.ContainsKey(ro[i]) && (i + 1 >= ro.Length || RomanMap.ContainsKey(ro[i + 1])))
|
||||
{
|
||||
if (i + 1 < ro.Length && RomanMap[ro[i]] < RomanMap[ro[i + 1]])
|
||||
{
|
||||
number -= RomanMap[ro[i]];
|
||||
}
|
||||
else
|
||||
{
|
||||
number += RomanMap[ro[i]];
|
||||
}
|
||||
}
|
||||
else return 0;
|
||||
}
|
||||
return number;
|
||||
}
|
||||
|
||||
public static int RomanOrNumberToInt(string number)
|
||||
{
|
||||
var a = 0;
|
||||
if (Int32.TryParse(number, out a)) return a;
|
||||
else return RomanToInteger(number);
|
||||
}
|
||||
public static string ToRoman(int number)
|
||||
{
|
||||
if ((number < 0) || (number > 3999)) return string.Empty;
|
||||
if (number < 1) return string.Empty;
|
||||
if (number >= 1000) return "M" + ToRoman(number - 1000);
|
||||
if (number >= 900) return "CM" + ToRoman(number - 900);
|
||||
if (number >= 500) return "D" + ToRoman(number - 500);
|
||||
if (number >= 400) return "CD" + ToRoman(number - 400);
|
||||
if (number >= 100) return "C" + ToRoman(number - 100);
|
||||
if (number >= 90) return "XC" + ToRoman(number - 90);
|
||||
if (number >= 50) return "L" + ToRoman(number - 50);
|
||||
if (number >= 40) return "XL" + ToRoman(number - 40);
|
||||
if (number >= 10) return "X" + ToRoman(number - 10);
|
||||
if (number >= 9) return "IX" + ToRoman(number - 9);
|
||||
if (number >= 5) return "V" + ToRoman(number - 5);
|
||||
if (number >= 4) return "IV" + ToRoman(number - 4);
|
||||
if (number >= 1) return "I" + ToRoman(number - 1);
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
public static string GetHighestParentNode(XNode xnode)
|
||||
{
|
||||
while (xnode.Parent != null)
|
||||
@@ -505,7 +570,7 @@ namespace HamannPrinter
|
||||
pagenumber = xelem.Attribute("index").Value.ToString();
|
||||
Paragraph counterParagraph = new Paragraph();
|
||||
ApplyParaStyle(counterParagraph, "seitenzählung");
|
||||
Run run = new Run(new Text("Seite " + pagenumber));
|
||||
Run run = new Run(new Text("S. " + pagenumber));
|
||||
counterParagraph.AppendChild<Run>(run);
|
||||
SmallFont(run);
|
||||
BoldRun(run);
|
||||
@@ -576,7 +641,7 @@ namespace HamannPrinter
|
||||
ApplyParaStyle(tradPara, "überlieferung");
|
||||
var tradString = letter.Tradition.ToString();
|
||||
XElement tradition = StringToXElement(RemoveWhiteSpaceLinebreak(tradString));
|
||||
ParseXElement(tradition, tradPara, letter);
|
||||
ParseTraditionXElement(tradition, tradPara, letter);
|
||||
}
|
||||
return tradPara;
|
||||
}
|
||||
|
||||
@@ -28,8 +28,8 @@ namespace HamannPrinter
|
||||
VolumeDocs.IsChecked = false;
|
||||
StartYearTextBox.Text = "1751";
|
||||
EndYearTextBox.Text = "1764";
|
||||
XmlFileBox.Text = @"C:\Users\simon\Desktop\Printer\XML"; // DEV
|
||||
OutputDirBox.Text = @"C:\Users\simon\Desktop\Printer\Ausg"; // DEV
|
||||
XmlFileBox.Text = @"D:\dev\source\hamann-ausgabe-core\XML\XML"; // DEV
|
||||
OutputDirBox.Text = @"D:\dev\source\hamann-ausgabe-core\XML\Ausg"; // DEV
|
||||
}
|
||||
|
||||
private void SingleDocChanged(object sender, RoutedEventArgs e)
|
||||
|
||||
@@ -47,6 +47,7 @@ namespace HamannPrinter
|
||||
public string FooterToText { get; set; } = "420";
|
||||
public string NormalFont { get; set; } = "Linux Libertine G";
|
||||
public string SpecialFont { get; set; } = "Linux Biolinum";
|
||||
public string Diodone { get; set; } = "Playfair Display";
|
||||
public string SuperValue { get; set; } = "6";
|
||||
public string SubValue { get; set; } = "-4";
|
||||
public (int, int) Years { get; set; }
|
||||
|
||||
5
HamannPrinter/probs.txt
Normal file
5
HamannPrinter/probs.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
[28.09.2021 13:39] Luca Klopfer
|
||||
Hier das Protokoll, die Dateien vom heutigen Datum sind ordnungsgebrüft. Auf lange Sicht möglicherweise ändern:- Schriftgröße und Zeilenabstand könnte man bei dem Monster-Format A4 schon bissl größer machen und dadurch die allzu großen Ränder verkleinern.
|
||||
|
||||
Der hängende Einzug im zweispaltigen Kommentar ist auf einstellige Seiten und Zeilen eingestellt.; etwa beim Kommentar zu HKB 1 (2/3) ist er perfekt, bei vielen anderen aber schief (vgl. die Kommentare zu HKB 4 ff). Wenn man den hängenden Einzug nicht an die Stellenzahl (2- 3- oder 4-Stellig) koppeln kann – was ich bezweifle – sollte man ihn global am 5-Stelligen ausrichten: etwa 3/4 aller Kommentare sind 5-Stellig. Kurzfristigeres:- pdfs: Zahlenformat Mediävalziffert für Haupttext; bei Stellenanzeigen im Kommentar usf. Versalziffern- HKB 24 Anfang: ZZ wird systembedingt nicht angezeigt, die Zeilen schweben bissl in der Luft (auf der Seite ists ausgerechnet Z. 31-34)- Schusterjungen-Korrektur händisch (das geht wohl schneller als sich eine technische Lösung auszudenken)- etwa alle 50 Seiten ist eine Zeile zu lang, bspw. HKB 30 (79/11), auf der website hauts hin, bei pdfs wird die Zeile aber umbrochen; habe den Umbruch an solchen Stellen dann immer geglättet (unsere ZH-Zeilen-Entsprechung ist ja sowieso nur 99%), werde das auch weiterhin tun; Zeilenbreite aber dennoch etwas weiter nach rechts- website: HKB 630 (327/1ff): da hakt etwas mit der ZZ, jedenfalls ist die Zeile verrutscht, obwohls richtig eingetragen ist; vielleicht liegts an der alten upload-version, nach upload nochmal checken- Unterstreichung in pdf sollte etwas dünner und bissl weiter nach unten; Unterlängen-Ausfall-Effekt bei p,g,q usf.?- line type line wird nicht ausgegeben: z.B. HKB 179 (13/3), ebenso 21/23, systematisches problem- HKB 189 (37/5): Die ZZ oben bei Z. 5 stimmt nicht, später aber schon, auch richtig eingetragen; oben verrutscht es immer, wenn der Brief bei einer durch 5 teilbare Zahl anfängt
|
||||
|
||||
Reference in New Issue
Block a user