diff --git a/HaLive/Hamann.xml b/HaLive/Hamann.xml index 48976c2..d21547a 100644 --- a/HaLive/Hamann.xml +++ b/HaLive/Hamann.xml @@ -35078,7 +35078,7 @@ Schuldbriefe erwachsen, näml. No1.) Joh And. Schönsche ingrossirte Obligation von 500 fl.   noch aus der ersten Specification. - 2.)Nuppenausches Anlehn, welches gemäß dem + 2.) Nuppenausches Anlehn, welches gemäß dem   obigen Verzeichnis bestanden in 2000 fl. so nicht   völlig beygetrieben worden sondern wovon   noch Rest geblieben auf einen Wechsel, für den @@ -35095,8 +35095,8 @@   Documenta produciret und künfftig ad   depositum pupillare gegeben werden können. 7.) HE. Commercien R. Hoyer Wechsel auf3000 - 8.) H Commerc.Saturgus 1000   - 14,500 fl. + 8.) H Commerc.Saturgus1000   + 14,500 fl. Aus diesen specifirten CreditPosten submittire mich No 2. bis No. 6. incl. welche zusammen 10000 fl. ausmachen sogl. zu produciren, auch solche künftig ad depositum pupillare zu geben wodurch also mein Bruder Johann diff --git a/HaLive/Pages/Briefe.cshtml b/HaLive/Pages/Briefe.cshtml index 63bdf40..11a2dd5 100644 --- a/HaLive/Pages/Briefe.cshtml +++ b/HaLive/Pages/Briefe.cshtml @@ -597,7 +597,7 @@ {

- Zusätze fremder Hand: + Zusätze fremder Hand @foreach (var hand in handstrings) {
@@ -612,7 +612,7 @@ Textkritische Anmerkungen - : + @*
Der Brieftext wurde anhand der überlieferten Quellen (vgl. Provenienz) kritisch geprüft. Notwendige Korrekturen gegenüber dem in ZH gedruckten Text wurden vorgenommen und sind vollständig annotiert. Die in den beiden Auflagen von ZH angehängten Korrekturvorschläge werden vollständig aufgelistet, werden aber nur dann im Text realisiert, sofern diese anhand überlieferter Quellen verifiziert werden konnten.
*@ @Html.Raw(sb_edits)
diff --git a/HamannPrinter/Hamann2Word.cs b/HamannPrinter/Hamann2Word.cs index 2929ce7..4f34021 100644 --- a/HamannPrinter/Hamann2Word.cs +++ b/HamannPrinter/Hamann2Word.cs @@ -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(); YearPaths = new List(); LetterPaths = new List(); @@ -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(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 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 { diff --git a/HamannPrinter/Helper.cs b/HamannPrinter/Helper.cs index cfdf873..68765ff 100644 --- a/HamannPrinter/Helper.cs +++ b/HamannPrinter/Helper.cs @@ -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 RomanMap = new Dictionary() + { + {'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); 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; } diff --git a/HamannPrinter/MainWindow.xaml.cs b/HamannPrinter/MainWindow.xaml.cs index dc44f28..5560a86 100644 --- a/HamannPrinter/MainWindow.xaml.cs +++ b/HamannPrinter/MainWindow.xaml.cs @@ -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) diff --git a/HamannPrinter/Parser.cs b/HamannPrinter/Parser.cs index 2a06b8e..3b0a708 100644 --- a/HamannPrinter/Parser.cs +++ b/HamannPrinter/Parser.cs @@ -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; } diff --git a/HamannPrinter/probs.txt b/HamannPrinter/probs.txt new file mode 100644 index 0000000..ac64ffc --- /dev/null +++ b/HamannPrinter/probs.txt @@ -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 + diff --git a/XML/XML/Editionsrichtlinien.docx b/XML/XML/Editionsrichtlinien.docx index 00d440f..1bdef6f 100644 Binary files a/XML/XML/Editionsrichtlinien.docx and b/XML/XML/Editionsrichtlinien.docx differ diff --git a/XML/XML/Sicherungskopie von Editionsrichtlinien.wbk b/XML/XML/Sicherungskopie von Editionsrichtlinien.wbk new file mode 100644 index 0000000..00d440f Binary files /dev/null and b/XML/XML/Sicherungskopie von Editionsrichtlinien.wbk differ