Wenn Sie auf Gesetze und Vorschriften im Internet verweisen möchten, wird e-Gov Law Search vom Ministerium für innere Angelegenheiten und Kommunikation veröffentlicht. Und Law api, aber das Layout ist subtil und das XML-Stylesheet wird nicht bereitgestellt. Keiner von ihnen ist sehr einfach zu bedienen.
Als Versuch, das Gesetz API in einem früheren Artikel von Qiita zu verwenden,
Wenn Sie die Gesetze und Vorschriften in der Online-Umgebung sehen möchten, können Sie sich auf diese beziehen, aber es gibt Zeiten, in denen Sie die Gesetze und Vorschriften in der Offline-Umgebung verwenden oder auf Papiermedien drucken und verwenden möchten, also habe ich sie von der Gesetzes-API erhalten Ich habe ein Skript erstellt, um das Gesetz wie folgt in ein PDF mit einem geeigneten Layout umzuwandeln. Dieses Layout ist unter Bezugnahme auf das in Japanisches Recht PDF + XML PDF und XML des japanischen Rechts veröffentlichte PDF angeordnet. Da das Update der Homepage 2016 eingestellt wurde, habe ich beschlossen, es selbst zu machen.
Die Verwendung usw. wird im Folgenden ausführlich beschrieben. Wenn Sie sie jedoch nur verwenden möchten, lesen Sie [Umgebungskonstruktion (für Jurastudenten)](# Umgebungskonstruktion (für Jurastudenten)) und [Verwendung](# Verwendung). Ich denke es ist genug. [Code-Erklärung](# Code-Erklärung) dient auch als Referenz, wenn Sie die Gesetzes-API selbst bearbeiten oder meinen Code ändern möchten. Beachten Sie außerdem, dass Achtung den Fall beschreibt, in dem es nicht richtig funktioniert.
Grundsätzlich ist es für Jurastudenten nützlich, aber ich denke, dass es nicht viele Jurastudenten gibt, die mit Python und TeX vertraut sind, daher werde ich die Umgebungskonstruktion etwas detaillierter erläutern. Wenn Sie Python und TeX verwenden können, benötigen Sie es nicht. Überspringen Sie es daher.
Laden Sie die neueste Version von Python von der offiziellen Python-Website (https://www.python.org/) herunter. Wählen Sie auf der Registerkarte "Downloads" auf dem Foto die für Ihr Betriebssystem aus (ich denke, es ist entweder Windows oder MacOS). Wenn Sie im detaillierten Prozess Fragen haben, gibt es viele Webseiten, auf denen die Einführung erläutert wird (z. B. https://gammasoft.jp/blog/python-install-and-code-run/). Lesen Sie daher auch diese.
Nach dem Herunterladen und Installieren ist Python bereit.
Bitte installieren Sie TeX Live (siehe https://texwiki.texjp.org/?TeX%20Live usw.). TeX wird anscheinend von mehr Juristen verwendet als Python. Wenn Sie also LuaLaTeX als Satzmethode in Ihrer aktuellen TeX-Nutzungsumgebung auswählen können, ist dies in Ordnung. Starten Sie nach Abschluss der Installation TeXworks, wählen Sie "Einstellungen" auf der Registerkarte "Bearbeiten" und setzen Sie "Standard" für die Satzmethode auf der Registerkarte "Satz" auf LuaLaTeX.
Damit sind die Einstellungen für TeX abgeschlossen.
Ich werde den Teil von Usage, der möglicherweise stolpert, ausführlich beschreiben.
Gehen Sie zu https://github.com/tbyuunagi/make_lawtex und drücken Sie Klonen oder laden Sie das Foto herunter.
Öffnen Sie eine Eingabeaufforderung für Windows oder ein Terminal für Mac (siehe https://techacademy.jp/magazine/5318 und https://techacademy.jp/magazine/5155) und geben Sie "pip install request" ein. Bitte ausführen.
Wenn Sie auf die heruntergeladene Datei make_lawtex.py doppelklicken und sie ausführen (wie unter [Verwendung](# Verwendung) beschrieben), liegt kein Problem vor. Wenn Sie doppelklicken, um Editor usw. zu öffnen, https://boukenki.info/python-py-file-doubleclick-kidou-jikkou-houhou/ usw. für Windows, https: / für Mac Weitere Informationen finden Sie unter /yutori-gi.com/pythonscript-run/ usw. und können Sie die .py-Datei in Python öffnen.
Der Code ist unten. https://github.com/tbyuunagi/make_lawtex
Es sollte gut funktionieren, wenn Sie Python und LuaLaTex verwenden können. Wir haben den Vorgang unter Windows10 und Ubuntu18.04 bestätigt.
Installieren Sie die Python-Bibliothek Anfragen.
$ pip install requests
Wenn Sie make_lawtex.py ausführen
Bitte geben Sie das Schlüsselwort ein, nach dem Sie suchen möchten
Wird gedruckt, geben Sie einen Teil oder den gesamten gesuchten Namen ein. Dann
1 Zivilrecht
2 Auszug aus dem Gesetz zur Durchsetzung des Bürgerlichen Gesetzbuchs
3 Gesetz über besondere Bestimmungen des Bürgerlichen Gesetzbuches über die Anforderungen gegen die Übertragung von beweglichen Waren und Forderungen
4 Gesetz über besondere Ausnahmen vom Zivilrecht in Bezug auf elektronische Verbraucherverträge
5 Ministerialverordnung zur Aufsicht über besondere zivilrechtliche Körperschaften unter der Zuständigkeit des Ministers für innere Angelegenheiten und Kommunikation
6 Gesetz über besondere Bestimmungen des Bürgerlichen Gesetzbuchs über den Zeitraum, für den die Erbschaft aufgrund des Erdbebens im Großen Osten Japans genehmigt oder aufgegeben werden sollte
7 Ministeriumsverordnung, die den in der Verordnung des Justizministeriums in Artikel 909-2 des Bürgerlichen Gesetzbuchs festgelegten Betrag festlegt
8 Ministeriumsverordnung zur Notifizierung des Standardverhältnisses nach Artikel 404 Absatz 3 des Bürgerlichen Gesetzbuchs und Artikel 404 Absatz 5 desselben Artikels
welcher?
Die Auswahlmöglichkeiten werden mit einer Nummer in Form von angezeigt (z. B. bei der Suche nach "Zivilrecht"). Geben Sie also das gesuchte Gesetz anhand der Nummer ein. Dies schließt den Python-Prozess ab und generiert "Gesetzname" .xml (erhalten von law api) und "Gesetzname" .tex unter dem Gesetzesverzeichnis (im Fall von Zivilrecht, Zivilrecht.xml und Zivilrecht). tex).
Wenn Sie die hier mit LuaLaTeX generierte .tex-Datei setzen, erhalten Sie eine PDF-Datei mit dem am Anfang gezeigten Layout. Wenn Sie beispielsweise TeXworks nach der Installation von TeXLive verwenden, wird der in der folgenden Abbildung von Blau umgebene Teil auf LuaLaTeX gesetzt. Capture.PNG Darüber hinaus muss der festgelegte Typ dreimal ausgeführt werden, um die Tabelle auf der richtigen Seite anzuzeigen (siehe https://cns-guide.sfc.keio.ac.jp/2000/8/3/5.html usw.). .. Um ehrlich zu sein, habe ich das Gefühl, dass ich etwas falsch mache, aber ich kenne TeX nicht, also weiß ich es nicht. Ich wäre dankbar, wenn jemand, der eine geeignetere Methode kennt, darauf hinweisen könnte.
Wenn Sie die Gesetzes-API für den gleichen Zweck verwenden möchten, wenn Sie die Gesetz-API natürlich für andere Zwecke verwenden möchten, kann sie meiner Meinung nach bis zu einem gewissen Grad umgeleitet werden, daher werde ich den Stolperteil erläutern, und sie war etwas kompliziert. Law API Specifications (Version 1) wird als angemessen bezeichnet. Bereiten Sie dies daher vor, wenn Sie ausführlich lesen möchten. Bitte denken Sie daran, dass dies der Fall ist, wenn Sie ohne vorherige Ankündigung auf "Spezifikationen" verweisen.
import requests
import os
import xml.etree.ElementTree as ET
Das Obige ist die verwendete Bibliothek.
#Wird nur verwendet, wenn die Gesetzesliste erfasst und die XML-Datei gespeichert und aktualisiert wird
def get_lawlist():
r = requests.get('https://elaws.e-gov.go.jp/api/1/lawlists/1')
root = ET.fromstring(r.text)
tree = ET.ElementTree(element=root)
if not os.path.exists('laws/'):
os.mkdir('laws')
tree.write('laws/lawlist.xml', encoding='utf-8', xml_declaration=True)
return
Greifen Sie auf die API zur Erfassung von Gesetzesnamenlisten (Spezifikationen, Seiten 5 und 10) zu, um die XML-Datei für die Liste der Gesetzesnamen zu erhalten. Diese XML-Datei wird bei der Suche nach dem unten stehenden Gesetznamen verwendet. Standardmäßig
r = requests.get('https://elaws.e-gov.go.jp/api/1/lawlists/1')
Wenn Sie jedoch keine Ministerialverordnung benötigen, lesen Sie bitte Abschnitt 4.2 auf Seite 10 der Spezifikationen und ändern Sie das Ende der URL.
#Eine Funktion, die den offiziellen Namen und die Nummer eines Gesetzes zurückgibt, nachdem nach einem bestimmten Gesetz aus der Liste der Gesetznamen nach Schlüsselwörtern gesucht wurde.
def search_Laws(key):
tree = ET.parse('laws/lawlist.xml')
root = tree.getroot()
LawName_list = []
LawNo_list = []
for child in root[1]:
if child.tag != 'Category':
if key in child[0].text:
LawName_list.append(child[0].text)
LawNo_list.append(child[1].text)
return LawName_list, LawNo_list
Wie kommentiert, handelt es sich um eine Funktion, die ein Schlüsselwort als Argument verwendet und eine Liste von Gesetzen und Vorschriften zurückgibt, die das Schlüsselwort enthalten. Als Vorsichtsmaßnahme beim Umgang mit der Gesetzes-API ist, wie Sie dem Inhalt der XML-Datei entnehmen können, die aus der oben erwähnten API zur Erfassung von Gesetzesnamenlisten stammt, ein bestimmtes Gesetz das, was wir als Namen erkennen (Gesetzname wie "Zivilrecht") Zusätzlich werden Attribute wie Gesetz Nr. M des japanischen Kalenderjahres n (Gesetz Nr. Wie "Gesetz Nr. 89 von Meiji 29") angegeben. Natürlich wissen die Menschen nicht, worum es im Gesetz geht, wenn sie sich die Gesetzesnummer ansehen, aber in der Gesetzes-API ist diese Gesetzesnummer ein eindeutiger Schlüssel zur Angabe eines bestimmten Gesetzes ( (Siehe get_LawContent ()), damit wir diese LawNos zusammen mit den LawNames verwalten können, die wir leicht erkennen können.
#Input-Output
def get_Law(search_Laws):
LawName_list = search_Laws[0]
LawNo_list = search_Laws[1]
if len (LawName_list) == 0:
print('Es gibt kein anwendbares Recht')
return None
if len(LawName_list) == 1:
return LawName_list[0], LawNo_list[0]
for i,x in enumerate(LawName_list):
print(i+1,x)
print('welcher?')
input_num = int(input())-1
LawName = LawName_list[input_num]
LawNo = LawNo_list[input_num]
return LawName, LawNo
Dies ist der Eingabe- / Ausgabeteil, der Gesetze und Vorschriften auflistet und auswählt, die den Schlüsselwörtern entsprechen. Die Anzahl der aufgeführten Gesetze ist unbegrenzt, daher kann die Suche nach "Gesetzen" eine entmutigende Aufgabe sein. Wenn eine solche Operation unangenehm ist, begrenzen Sie sie bitte entsprechend.
# get_Erhalten Sie den Inhalt anhand des Gesetzesergebnisses und speichern Sie ihn unter dem entsprechenden Gesetznamen
def get_LawContent(get_Law):
LawName = get_Law[0]
LawNo = get_Law[1]
r = requests.get('https://elaws.e-gov.go.jp/api/1/lawdata/'+LawNo)
root = ET.fromstring(r.text)
tree = ET.ElementTree(element=root)
if not os.path.exists('laws/'):
os.mkdir('laws')
tree.write('laws/' + LawName + '.xml', encoding='utf-8', xml_declaration=True)
return LawName
Erhalten Sie das gewünschte Gesetz mithilfe der API zum Erwerb von Gesetzen (Seite 6 der Spezifikation). Wie ich schon sagte
r = requests.get('https://elaws.e-gov.go.jp/api/1/lawdata/'+LawNo)
Bitte beachten Sie, dass Sie am Ende der URL der Zeile eine Gesetzesnummer angeben sollten.
Gemäß Anmerkungen können einige Gesetze und Vorschriften von dieser Funktion nicht erhalten werden, da sie von der Gesetzes-API überhaupt nicht erhalten werden können.
def main():
get_lawlist()
Law_Name = search_get_LawContent()
result = xml_to_tex(Law_Name)
return result
Es ist zur Ausführung. Ich habe beschlossen, get_lawlist () jedes Mal auszuführen, um immer die neueste Liste zu verwenden, aber die Verarbeitung ist etwas langsam, da lawlist.xml eine angemessene Datengröße hat. Da get_lawlist () ein Prozess ist, der nach seiner Ausführung nicht viele Male ausgeführt werden muss, halte ich es für in Ordnung, diese Zeile ab dem zweiten Mal zu kommentieren.
Das Obige ist die Erklärung der Funktion. Sie können sehen, was nicht erklärt wird. Wenn Ihnen das generierte Layout nicht gefällt, vergleichen Sie die resultierende TeX-Datei mit der Funktion xml_to_tex () und nehmen Sie die erforderlichen Korrekturen vor. Es ist nutzlos lang, aber der Präambelteil ist alles am Anfang geschrieben (Zeile 79 von make_lawtex.py), daher sollte es ausreichen, ihn in Bezug auf das Layout zu ändern.
Einige Gesetze und Vorschriften können aufgrund der Datengröße nicht von der Gesetzes-API abgerufen werden. Insbesondere möchte ich, dass Sie die Einschränkungen für https://www.e-gov.go.jp/elaws/interface_api/index.html sehen, aber was für das Erlernen von Gesetzen notwendig erscheint und nicht erhältlich ist Es gibt das Einkommensteuergesetz und das Gesetz über besondere Steuermaßnahmen. Wir planen, in naher Zukunft zu reagieren. Bitte beachten Sie jedoch, dass wir diese Gesetze und Vorschriften derzeit nicht erhalten können.
Weiterverteilung, Änderung und selbst gemachte Bemerkungen sind kostenlos. Sie können sie also gerne verwenden. Wenn Sie Fehler oder Verbesserungsvorschläge haben (nicht nur zum Code, sondern auch zu diesem Artikel), teilen Sie uns dies bitte in den Kommentaren hier mit, rufen Sie die Anfrage auf github oder My Twitter ab. ..
Recommended Posts