Forum

Topic with no new replies

Export in BibTex inklusive Karteikarten


Author Message
Written on: 29. 07. 2019 [16:34]
Eppleru
Topic creator
registered since: 13.02.2013
Posts: 1
Betriebssystem: Windows 10
Litlink-Version: 5.01.016

Für den Export in BibTex mit der entsprechenden Zit-form gelingt mir der Export von Exzerpten. Doch setzt das voraus, alle Inhalte der Karteikarten zunächst in einem Exzerpt abzulegen. Liesse sich das für alle Titel und Archivalien in einem Prozess machen, wäre mein Problem gelöst. Doch habe ich eine entsprechende Funktion nicht gefunden (wie z.B. Co-Autoren neu berechnen).
Einen anderen Weg empfiehlt Herr Busch an anderer Stelle:
"Mit der Funktion "List()" können Sie eine Liste von relational verknüpften Daten in den Export integrieren. Interessant wären in diesem Zusammenhang
list(DTitel.Kartei::d_Zitat_t), list(DTitel.Kartei::d_Kommentar_t) oder auch list(DTitel.Kartei::xCalc_FussnoteKomplett_ctu)."
Wie ich diese List() in eine Zit-form integrieren kann, habe ich aber nicht herausgefunden. Gibt es dazu Beispiele?
Ruedi Epple

Written on: 13. 08. 2019 [17:12]
nicolausbusch
registered since: 26.04.2012
Posts: 812
"Eppleru" schrieb:

Betriebssystem: Windows 10
Litlink-Version: 5.01.016

Für den Export in BibTex mit der entsprechenden Zit-form gelingt mir der Export von Exzerpten. Doch setzt das voraus, alle Inhalte der Karteikarten zunächst in einem Exzerpt abzulegen. Liesse sich das für alle Titel und Archivalien in einem Prozess machen, wäre mein Problem gelöst [...]
Wie ich diese List() in eine Zit-form integrieren kann, habe ich aber nicht herausgefunden. Gibt es dazu Beispiele?


Bitte entschuldigen Sie die lange Wartezeit, es waren Ferien und die Frage ist nicht ganz trivial. Litlink 5 basiert ja auf einem FileMaker, der SQL gelernt hat, deshalb geht das ein Stück eleganter: wir können der Zitierform eine SQL-Abfrage voranstellen und dabei gleich den Text etwas formatieren, so wie wir es auch der automatischen Erstellung von Exzerpten tun.
die vollständige Zit-Form folgt gleich in einer separaten Antwort. Damit das Ganze halbwegs lesbar und verständlich bleibt zerlege ich es etwas:

1) Der Ausdruck

SELECT xCalc_AnzeigeSeiten_ctu ,d_Zitat_t, d_Kommentar_t FROM DKartei WHERE "_fk_Titel_t" = DTitel::_pk_GUID ORDER BY d_SeiteVon_n

würde uns einfach eine Auflistung der drei Felder aus den Karteikarten zum aktuellen Element liefern. (Der Feldname _fk_Titel_t muss extra in Anführungszeichen, sonst verschluckt sich SQL an dem Unterstrich zu Beginn)

2) Damit der Text so vorhanden in Anführungszeichen und der Kommentar in Klammern kommt komplizieren wir das zu:
SELECT xCalc_AnzeigeSeiten_ctu + ':' + CASE WHEN d_Zitat_t IS NOT NULL THEN '"'+ TRIM(d_Zitat_t) + '"' ELSE '' END + CASE WHEN d_Kommentar_t IS NOT NULL THEN '
<'+ TRIM(d_Kommentar_t) + '>' ELSE '' END FROM DKartei WHERE "_fk_Titel_t" = DTitel::_pk_GUID ORDER BY d_SeiteVon_n

3) Weil das schlecht lesbar und noch schlechter zu pflegen ist mache ich zwei Teile daraus; der erste Teil definiert das Format, der zweite setzt die korrekten Feldnamen ein:

~query =
"SELECT <Seiten>
+ ':' + CASE WHEN <Zitat> IS NOT NULL THEN '\"'+ TRIM(<Zitat>) + '\"' ELSE '' END
+ CASE WHEN <Kommentar> IS NOT NULL THEN '¶<'+ TRIM(<Kommentar>) + '>' ELSE '' END
FROM <Kartei>
WHERE <ID_Titel> = ?
ORDER BY <SeiteVon>";

~query =
Substitute( ~query;

["<Seiten>" ; "xCalc_AnzeigeSeiten_ctu" ];
["<Zitat>" ; "d_Zitat_t" ];
["<Kommentar>" ; "d_Kommentar_t" ];
["<ID_Titel>" ; "\"_fk_Titel_t\"" ];
["<SeiteVon>" ; "d_SeiteVon_n" ];
["<Kartei>" ; "DKartei" ]
)

4) Jetzt lassen wir FileMaker das Monster berechnen und in eine Variable schreiben:

$Exzerpt = ExecuteSQL ( ~query ; "" ; "¶¶" ; DTitel::_pk_GUID )]

Beachten Sie das Fragezeichen in der Definition der Query. Dies weist FileMaker an, hier zur Laufzeit das mit dem Befehl ExecuteSQL übergebene Argument einzusetzen, eben die _pk_GUID.

Damit haben Sie in $Exzerpt einen Ausdruck, den Sie nun beliebig weiter verwenden können, so wie ich es in der letzten Zeile skizziert habe.
Written on: 13. 08. 2019 [17:14]
nicolausbusch
registered since: 26.04.2012
Posts: 812
Wie versprochen noch die ganze Zitierform inkl. SQL:
_____________________________
//Definition für Bibtex, Formate Article, Book, Incollection
//Alexander Mendle 09.07.2007
//Update auf Litlink 3.5, 18.05.2008, N. Busch
//Update auf Litlink 5, 13.08.2019, N. Busch
//Auf Basis der Suhrkamp-Definition von N. Busch



Let([

~query =
"SELECT <Seiten>
+ ':' + CASE WHEN <Zitat> IS NOT NULL THEN '\"'+ TRIM(<Zitat>) + '\"' ELSE '' END
+ CASE WHEN <Kommentar> IS NOT NULL THEN '¶<'+ TRIM(<Kommentar>) + '>' ELSE '' END
FROM <Kartei>
WHERE <ID_Titel> = ?
ORDER BY <SeiteVon>";

~query =
Substitute( ~query;

["<Seiten>" ; "xCalc_AnzeigeSeiten_ctu" ];
["<Zitat>" ; "d_Zitat_t" ];
["<Kommentar>" ; "d_Kommentar_t" ];
["<ID_Titel>" ; "\"_fk_Titel_t\"" ];
["<SeiteVon>" ; "d_SeiteVon_n" ];
["<Kartei>" ; "DKartei" ]
)
;

$Exzerpt = ExecuteSQL ( ~query ; "" ; "¶" ; DTitel::_pk_GUID )];

Case(
IsValid( DTitel.Periodikum::_pk_GUID );

// Zitform für Artikel -> @article

Trim(
"@ARTICLE{" & d_EigeneSignatur_t & ",¶author={" &
Case( not IsEmpty( d_AutorNachname_t ) ; d_AutorNachname_t ) &
Case( IsEmpty( d_AutorNachname_t ) ; "o.~V." ) &
Case ( not IsEmpty( d_AutorVorname_t ); ", " & d_AutorVorname_t ) &
xCalc_Pseudonym_ctu &
Case ( not IsEmpty( d_CoAutoren_t ) ; " and " & d_CoAutoren_t ) &
"},¶title={" & xCalc_TitelAlsZeile_ctu & "}" &
Case ( not IsEmpty( DTitel.Periodikum::xCalc_TitelAlsZeile_ctu ) ; ",¶journal={" & DTitel.Periodikum::xCalc_TitelAlsZeile_ctu & "}" ) &
Case ( IsEmpty( DTitel.Periodikum::xCalc_TitelAlsZeile_ctu ) ; ",¶journal={PERIODIKUM!!}" ) &
Case ( not IsEmpty( d_AusgabeVol_t ) ; ",volume=" & d_AusgabeVol_t ) &
Case ( not IsEmpty( d_Datierung_t ) ; ",¶year={" & d_Datierung_t & "}" ) &
Case ( IsEmpty( d_Datierung_t ) ; ",¶year={o.~J.}" ) &
Case ( not IsEmpty( d_AusgabeNr_t ); ",¶number={" & d_AusgabeNr_t & "}" ) &
Case ( not IsEmpty( d_AusgabeSeite_t) ; ",¶pages={" & d_AusgabeSeite_t & "}" ) &
"}") // End trim
;
IsValid( DTitel.Titel.Sammelband::_pk_GUID );

// Zitform für Aufsätze -> @incollection

Trim(
"@INCOLLECTION{" & d_EigeneSignatur_t & ",¶author={" &
Case( not IsEmpty( d_AutorNachname_t ) ; d_AutorNachname_t ) &
Case( IsEmpty( d_AutorNachname_t ) ; "o.~V." ) &
Case( not IsEmpty( d_AutorVorname_t ) ; ", " & d_AutorVorname_t ) &
xCalc_Pseudonym_ctu &
Case( not IsEmpty( d_CoAutoren_t ) ; " and " & d_CoAutoren_t ) &
"},¶title={" & xCalc_TitelAlsZeile_ctu & "}" &
Case( not IsEmpty( DTitel.Titel.Sammelband::xCalc_TitelAlsZeile_ctu ) ; ",¶booktitle={" & DTitel.Titel.Sammelband::xCalc_TitelAlsZeile_ctu & "}" ) &
Case( IsEmpty( DTitel.Titel.Sammelband::xCalc_TitelAlsZeile_ctu ) ; ",¶booktitle={BUCHTITEL!!}" ) &
Case( not IsEmpty( DTitel.Titel.Sammelband::d_Herausgeber_n ) ; ",¶editor={" & DGlobals::d_HerausgeberKuerzel_tg &
Case( not IsEmpty( DTitel.Titel.Sammelband::d_CoAutoren_t ) ; " and " & DTitel.Titel.Sammelband::d_CoAutoren_t ) &
"}" ) &
Case( not IsEmpty( DTitel.Titel.Sammelband::d_Ort_t ) ; ",¶address={" & DTitel.Titel.Sammelband::d_Ort_t & "}" ) &
Case( not IsEmpty( DTitel.Titel.Sammelband::d_Verlag_t ) ; ",¶publisher={" & DTitel.Titel.Sammelband::d_Verlag_t & "}" ) &
Case( IsEmpty( DTitel.Titel.Sammelband::d_Verlag_t ) ; ",¶publisher={VERLAG!!}" ) &
Case( not IsEmpty( d_Datierung_t ) ; ",¶year={" & d_Datierung_t & "}" ) &
Case ( IsEmpty( d_Datierung_t ) ; ",¶year={o.~J.}" ) &
Case( not IsEmpty( DTitel.Titel.Sammelband::d_BibliogrZusätze_t ) ; ",¶edition={" & DTitel.Titel.Sammelband::d_BibliogrZusätze_t & "}" ) &
Case( not IsEmpty( d_AusgabeSeite_t ) ; ",¶pages={" & d_AusgabeSeite_t & "}" ) &
"}") // End trim
;

// Zitform für Monographien -> @book

Trim(
"@BOOK{" & d_EigeneSignatur_t &
Case ( d_Datentyp_t = "Sammelband" ; ",¶editor={" & d_AutorNachname_t & Case ( not IsEmpty( d_AutorVorname_t ) ; ", " & d_AutorVorname_t ) & Case ( not IsEmpty( d_CoAutoren_t ) ; " and " & d_CoAutoren_t ) & "}" ) &
Case ( d_Datentyp_t <> "Sammelband" ; ",¶author={" & d_AutorNachname_t & Case( not IsEmpty( d_AutorVorname_t ) ; ", " & d_AutorVorname_t ) & xCalc_Pseudonym_ctu & Case ( not IsEmpty( d_CoAutoren_t ) ; " and " & d_CoAutoren_t ) & "}" ) &
",¶title={" & xCalc_TitelAlsZeile_ctu & "}" &
Case( not IsEmpty( d_Ort_t ) ; ",¶address={" & d_Ort_t & "}" ) &
Case( IsEmpty( d_Ort_t ) ; ",¶address={o.~O.}" ) &
Case( not IsEmpty( d_Verlag_t ) ; ",¶publisher={" & d_Verlag_t & "}" ) &
Case( IsEmpty( d_Verlag_t ) ; "¶,publisher={VERLAG!!}" ) &
Case( not IsEmpty( d_Datierung_t ) ; ",¶year={" & d_Datierung_t & "}" ) &
Case ( IsEmpty( d_Datierung_t ) ; ",¶year={o.~J.}" ) &
Case( not IsEmpty( d_BibliogrZusätze_t ) ; ",¶edition={" & d_BibliogrZusätze_t & "}" ) &
Case( not IsEmpty( $Exzerpt ) ; ",¶exzerpt={" & $Exzerpt & "}" ) &

"}" ) // End trim
) //End Case

& "."
) //end let



User login

Enter your username and password here in order to log in on the website:
Login

Forgot your password?