Jewiki unterstützen. Jewiki, die größte Online-Enzyklopädie zum Judentum.
Helfen Sie Jewiki mit einer kleinen oder auch größeren Spende. Einmalig oder regelmäßig, damit die Zukunft von Jewiki gesichert bleibt ... Vielen Dank für Ihr Engagement! (→ Spendenkonten) |
How to read Jewiki in your desired language · Comment lire Jewiki dans votre langue préférée · Cómo leer Jewiki en su idioma preferido · בשפה הרצויה Jewiki כיצד לקרוא · Как читать Jewiki на предпочитаемом вами языке · كيف تقرأ Jewiki باللغة التي تريدها · Como ler o Jewiki na sua língua preferida |
Modul:Zitation
local p = {} -- Ergänzt bei Titelformatierungen in Abhängigkeit der letzten Zeichen ein Punkt am Ende des Titels hinzu oder nicht. Test für Vorlage:Internetquelle / Vorlage:TitelFormat -- Aufruf: IrgendeinTitel. function p.TitelFormat(frame) local titel = frame.args[1] or frame.args.titel if (titel == ) or (titel == nil) then return elseif (mw.ustring.find(titel, '[\.!?.!?。…][%]»«›‹‘’”“"\']*$')) or (mw.ustring.find(titel, '[\.!?.!?。…]</[%s%w]*>$')) then return '' .. titel .. '' else return '' .. titel .. '.' end end
-- Entscheidet anhand der letzten Zeichen, ob ein Punkt gesetzt wird oder nicht. Test für Vorlage:Internetquelle -- Aufruf: . function p.Endpunkt(frame) local titel = frame.args[1] or frame.args.titel if (titel == ) or (mw.ustring.find(titel, '[\.!?.!?。…][%]»«›‹‘’”“"\']*$')) or (mw.ustring.find(titel, '[\.!?.!?。…]</[%s%w]*>$')) then return else return '.' end end -- Funktion zum Ersetzen von ausgewählten Elementen der Wiki-Syntax. Wird benötigt, um die durch Vorlage:Coins eingebundnenen Datensätze frei von Wiki-Syntax zu halten. -- Aufruf: IrgendeinTitel -- derzeit funktioniert die Ersetzung nicht, da die eingegeben Zeichenkette statt einen UNIQ..QINU String enhält, vgl. http://www.mediawiki.org/wiki/QINU_fix function p.RemoveWikiSyntax(frame) local text = frame.args[1] or frame.args.text text = mw.ustring.gsub(text,'(UNIQ.+QINU)',"FEHLER %1") --text = "Test - Electroweak corrections to the charm quark contribution to " -- internen Link entfernen (z. B. bei Autorenartikelverknüpfungen) text = mw.ustring.gsub(text,'%[%[([^%[%]]*)%]%]',"%1") -- math-Tag in TeX-Math-Umgebung umwandeln, u.a. weil math-Tags zu fehlenden COinS-Tags führen text = mw.ustring.gsub(text,'(<%s*/*%s*math[^>]*>)',"$") return text end -- Funktion zum Bereinigen von ISBN-Angaben. Wird benötigt, um unnötige Fehler durch Bindestriche oder Leerzeichen bei der Nutrzung der Vorlage:bibISBN zu umgehen. -- Aufruf: IrgendeinTitel function p.CleanISBN(frame) local isbn = frame.args[1] or frame.args.isbn isbn = mw.ustring.gsub(isbn,'[- ]+',"") return isbn end -- Test einer Umsetzung von Vorlage:Literatur in Lua, Ziel: Abschätzung des Ressourcenverbrauchs. -- Aufruf: -- Änderungen: -- 10. April 2013: erste Testversion -- 11. April 2013: Korrektur der Ausgabe von Band und Nummer -- 21. April 2013: Flexibilisierung des Parameters-Auflage (Ergänzung von "Auflage" nur bei Bedarf) -- 22. April 2013: Ausgabe des abschließenden Punktes korrigiert -- 30. April 2013: Umstellung der Abfrage für Trennzeichen function p.Literatur(frame) function AddDelimiterIfNeeded(text, delimiter) --local text = frame.args[1] or frame.args.text if delimiter == nil then delimiter = '.' end if (text == ) or (mw.ustring.find(text, '[\.:!?.:!?。…][%]»«›‹‘’”“"\']*[%s( )]*$')) or (mw.ustring.find(text, '[\.:!?.:!?。…]</[%s%w]*>$')) then return
else return delimiter end
end
function FormatDate(Datum) if not mw.ustring.find(frame:expandTemplate{ title = 'FormatDate', args = {Datum} }, 'Fehler') then return frame:expandTemplate{ title = 'FormatDate', args = {Datum} } --' .. Datum .. ' else return Datum end end
local args = frame.args local Autor = args.Autor or local Herausgeber = args.Herausgeber or local Titel = args.Titel or local TitelErg = args.TitelErg or local Sammelwerk = args.Sammelwerk or local WerkErg = args.WerkErg or local Reihe = args.Reihe or local Band = args.Band or local Nummer = args.Nummer or local Auflage = args.Auflage or local Verlag = args.Verlag or local Ort = args.Ort or local Jahr = args.Jahr or local Monat = args.Monat or local Tag = args.Tag or local Datum = args.Datum or local Kapitel = args.Kapitel or local Seiten = args.Seiten or local Spalten = args.Spalten or local ISBN = args.ISBN or local ISBNistFormalFalsch = args.ISBNistFormalFalsch or local ISSN = args.ISSN or local Kommentar = args.Kommentar or local Originaltitel = args.Originaltitel or local Originalsprache = args.Originalsprache or local Uebersetzer = args.Uebersetzer or local DOI = args.DOI or local PMID = args.PMID or local DB = args.DB or local DBcode = args.DBcode or local Online = args.Online or local Zugriff = args.Zugriff or local Typ = args.Typ or
local Ausgabe =
if (Autor ~= ) and (Typ ~= 'wl') then if (Sammelwerk == ) and (Herausgeber ~= ) then Ausgabe = Autor .. ', ' .. Herausgeber .. ' (Hrsg.):' else Ausgabe = Autor .. ':' end elseif (Sammelwerk == ) and (Herausgeber ~= ) then Ausgabe = Herausgeber .. ' (Hrsg.):' end
if Titel ~= then Ausgabe = Ausgabe .. ' ' .. Titel .. ''
if TitelErg ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Titel, '.') ..' ' .. TitelErg end if (Sammelwerk == ) and (Reihe ~= ) then Ausgabe = Ausgabe .. ' (= ' .. Reihe .. ''
if (Band ~= ) and (Nummer ~= ) then Ausgabe = Ausgabe .. ' ' .. Band .. ', Nr. ' .. Nummer elseif (Band ~= ) then Ausgabe = Ausgabe .. ' ' .. Band elseif (Nummer ~= ) then
Ausgabe = Ausgabe .. ' Nr. ' .. Nummer end Ausgabe = Ausgabe .. ').' elseif TitelErg ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(TitelErg, '.')
else Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Titel, '.')
end end
if Sammelwerk ~= then if Herausgeber ~= then Ausgabe = Ausgabe .. ' In: ' .. Herausgeber .. ' (Hrsg.): ' .. Sammelwerk .. '' else Ausgabe = Ausgabe .. ' In: ' .. Sammelwerk .. '' end
if WerkErg ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Werk, '.') .. ' ' .. WerkErg end
if Auflage ~= then
Auflage = Auflage:gsub("^%s*(.-)%s*$", "%1"):gsub('Auflage$', 'Aufl.'):gsub('[eE]dition', 'ed.') if (Auflage:find('Aufl[%.]*$') == nil) and (Auflage:find('[eE]d[%.]*$') == nil) then Auflage = Auflage .. ' Aufl.' end Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Auflage
end
if (Reihe ~= ) then Ausgabe = Ausgabe .. ' (= ' .. Reihe .. ''
if (Band ~= ) and (Nummer ~= ) then Ausgabe = Ausgabe .. ' ' .. Band .. ', Nr. ' .. Nummer elseif (Band ~= ) then Ausgabe = Ausgabe .. ' ' .. Band elseif (Nummer ~= ) then
Ausgabe = Ausgabe .. ' Nr. ' .. Nummer end Ausgabe = Ausgabe .. ').' else if (Band ~= ) and (Nummer ~= ) then
Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Band .. ', Nr. ' .. Nummer elseif (Band ~= ) then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Band elseif (Nummer ~= ) then
Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' Nr. ' .. Nummer end end
else if Auflage ~= then Auflage = Auflage:gsub("^%s*(.-)%s*$", "%1"):gsub('Auflage$', 'Aufl.'):gsub('[eE]dition', 'ed.') if (Auflage:find('Aufl[%.]*$') == nil) and (Auflage:find('[eE]d[%.]*$') == nil) then Auflage = Auflage .. ' Aufl.' end Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Auflage
end
if (Band ~= ) and (Nummer ~= ) then Ausgabe = Ausgabe .. ' ' .. Band .. ', Nr. ' .. Nummer elseif (Band ~= ) then Ausgabe = Ausgabe .. ' ' .. Band elseif (Nummer ~= ) then Ausgabe = Ausgabe .. ' Nr. ' .. Nummer end end
if Verlag ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Verlag end
if Datum ~= then Jahr = '' .. FormatDate(Datum) .. '' else if Monat ~= then iMonat = tonumber(Monat) if iMonat then if (iMonat > 0) and (iMonat <10) then Monat = '0' .. tonumber(Monat) end end iTag = tonumber(Tag) if iTag then if (tonumber(iTag) < 0) or (tonumber(iTag) > 31) then Tag = '00' end end Jahr = '' .. FormatDate(Jahr ..'-' .. Monat .. '-' .. Tag) .. '' end end
if (Ort ~= ) or (Jahr ~= ) then
if (Ort ~= ) and (Jahr ~= ) then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',').. ' ' .. Ort .. ' ' .. Jahr elseif (Ort ~= ) then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',').. ' ' .. Ort else Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',').. ' ' .. Jahr end end -- ISBN oder ISSN, aber nicht beides
if ISBN ~= then if ISBNistFormalFalsch ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. frame:expandTemplate{ title = 'Falsche ISBN', args = {ISBN} } else Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ISBN ' .. ISBN
end
elseif ISSN ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. frame:expandTemplate{ title = 'ISSN', args = {ISSN} } end
if Kapitel ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' ' .. Kapitel end
if (Seiten ~= ) or (Spalten ~= ) then if (Seiten ~= ) and (Spalten ~= ) then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' S. ' .. Seiten .. ' Sp. ' .. Spalten elseif Seiten ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' S. ' .. Seiten else Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' Sp. ' .. Spalten end end
if DOI ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' doi:' .. DOI .. '' end if PMID ~= then Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') .. ' PMID ' .. PMID .. end
if (DB ~= ) and (DBcode ~= ) then
Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, ',') -- .. ','
if (DB == 'arxiv') or (DB == 'arXiv') then Ausgabe = Ausgabe .. ' ' .. frame:expandTemplate{ title = 'arxiv', args = {DBcode} } elseif DB == 'DNB' then Ausgabe = Ausgabe .. ' .. DBcode .. ' DNB:' .. DBcode .. '' elseif DB == 'ZDB' then Ausgabe = Ausgabe .. ' .. DBcode .. ' ZDB-ID:' .. DBcode .. '' elseif DB == 'LCCN' then Ausgabe = Ausgabe .. ' ' .. frame:expandTemplate{ title = 'LCCN', args = {DBcode} } elseif DB == 'OCLC' then Ausgabe = Ausgabe .. ' .. DBcode .. ' OCLC:' .. DBcode .. '' elseif DB == 'PMC' then Ausgabe = Ausgabe .. ' DBcode .. ' PMC:' .. DBcode .. '' elseif DB == 'Bibcode' then Ausgabe = Ausgabe .. ' .. DBcode .. ' Bibcode:' .. DBcode .. '' elseif DB == 'JSTOR' then Ausgabe = Ausgabe .. ' .. DBcode .. ' JSTOR:' .. DBcode .. '' else end end
if (Kommentar ~= ) or (Online ~= ) then Klammerinhalt = if (Kommentar ~= ) and (Online ~= ) then Klammerinhalt = Klammerinhalt .. Kommentar .. ', ' else Klammerinhalt = Klammerinhalt .. Kommentar end if Online ~= then Klammerinhalt = Klammerinhalt .. Online if Zugriff ~= then Klammerinhalt = Klammerinhalt .. ', abgerufen am ' ..FormatDate(Zugriff) .. '' end end Ausgabe = Ausgabe .. ' (' .. Klammerinhalt .. ')' end
-- Abschließender Punkt Ausgabe = Ausgabe .. AddDelimiterIfNeeded(Ausgabe, '.')
return Ausgabe
end
return p