Technischer HintergrundLatex ist ein unverzichtbares Werkzeug beim Verfassen von Dokumenten und insbesondere beim Schreiben von Artikeln und ein unverzichtbares Werkzeug für den Textsatz. Allerdings ist die Bereitstellung der Latex-Umgebung keine besonders benutzerfreundliche Operation, zumal die Vorgänge auf verschiedenen Plattformen völlig unterschiedlich sind und häufig Fehler gemeldet werden. Wir können die Fehlerprobleme einzeln lösen, aber das erfordert viel Energie und Zeit, weshalb sich viele Leute dafür entscheiden, Latex direkt in Overleaf zu erstellen. Tatsächlich hat Overleaf aber auch seine Nachteile. So sind beispielsweise Bandbreite und Geschwindigkeit der kostenlosen Version relativ begrenzt, insbesondere in Heimnetzwerken ist die Zugriffsgeschwindigkeit dort extrem langsam. Daher stellen wir hier eine benutzerfreundlichere Lösung vor, die mit allen wichtigen Plattformen sehr kompatibel ist: die Verwendung von Docker zum Bereitstellen der Latex-Umgebung. Grundlegende Vorgänge von DockerDie offiziellen Quellen der wichtigsten Plattformen sollten alle Docker-Container bereitstellen, daher werden wir hier nicht ins Detail gehen. Der Autor hat in der Vergangenheit einen Blog über die Verwendung von Docker zum Bereitstellen der MindSpore-Entwicklungsumgebung geschrieben. Interessierte Leser können ihn als Erweiterungsartikel lesen. Zuerst starten wir Docker auf der Manjaro Linux-Plattform (der Vorgang auf anderen Plattformen kann anders sein, z. B. [dechin-root tex]# systemctl start docker Beachten Sie, dass die obigen Anweisungen nur unter dem Root-Konto gestartet werden können. Wenn Sie mit einem Nicht-Root-Konto arbeiten, wird der Docker-Container nicht unterstützt. Wir können jedoch eine ähnliche Containerlösung wie Singularity wählen. Verwandte Inhalte finden Sie in diesem Blog. Nach dem Starten des Dienstes können wir unter normalen Umständen sehen, dass der Status von Docker aktiv oder ausgeführt wird: [dechin-root tex]# systemctl status docker ● docker.service – Container-Engine für Docker-Anwendungen Geladen: geladen (/usr/lib/systemd/system/docker.service; deaktiviert; Vendor-Vorgabe: deaktivieren> Aktiv: aktiv (läuft) seit Sonntag, 28.03.2021, 18:50:47 CST; vor 7 Sek. Ausgelöst durch: ● docker.socket Dokumentation: https://docs.docker.com Haupt-PID: 25366 (dockerd) Aufgaben: 123 (Limit: 47875) Speicher: 219,1 M CGroup: /system.slice/docker.service ├─25366 /usr/bin/dockerd -H fd:// └─25378 containerd --config /var/run/docker/containerd/containerd.toml --log-l> Containerimage abrufen Zunächst können wir die offizielle Dockerhub-Website besuchen und nach dem Container-Image suchen, das wir benötigen. Unsere Suchergebnisse lauten beispielsweise wie folgt: Sie sehen, dass es hier viele Optionen gibt. Im Allgemeinen können wir das Container-Image mit dem höchsten Stern direkt zum Herunterladen und Verwenden auswählen: [dechin-root tex]# docker pull fbenz/pdflatex Standard-Tag verwenden: latest aktuell: Abrufen von fbenz/pdflatex f22ccc0b8772: Existiert bereits 3cf8fb62ba5f: Existiert bereits e80c964ece6a: Existiert bereits 9aa2583757a3: Ziehen abgeschlossen 2c3d7890d583: Ziehen abgeschlossen Zusammenfassung: sha256:6ecca11b1a203faed5c0a2ace2a13aac100dd19d7a4e0db0474283bcded3c041 Status: Neueres Bild für fbenz/pdflatex:latest heruntergeladen docker.io/fbenz/pdflatex:latest Der Download wird einige Zeit in Anspruch nehmen. Nachdem der Download abgeschlossen ist, finden Sie die soeben heruntergeladene Bilddatei im lokalen Bild-Repository: [dechin-root tex]# Docker-Bilder REPOSITORY TAG BILD ID ERSTELLT GRÖSSE fbenz/pdflatex latest 8e7742722956 vor 3 Monaten 24GB Wir können testen, ob die pdflatex-Funktion in diesem Container-Image normal ist: [dechin-root tex]# docker run -it fbenz/pdflatex pdflatex --help Verwendung: pdftex [OPTION]... [TEXNAME[.tex]] [BEFEHLE] oder: pdftex [OPTION]... \FIRST-LINE oder: pdftex [OPTION]... &FMT ARGS Führen Sie pdfTeX auf TEXNAME aus. Normalerweise wird TEXNAME.pdf erstellt. Alle verbleibenden BEFEHLE werden als pdfTeX-Eingabe verarbeitet, nachdem TEXNAME gelesen wurde. Wenn die erste Zeile von TEXNAME %&FMT ist und FMT eine vorhandene .fmt-Datei ist, benutze es. Sonst benutze `NAME.fmt', wobei NAME der Name des Programmaufrufs ist, am häufigsten „pdftex“. Alternativ, wenn das erste Argument ohne Option mit einem Backslash beginnt, Interpretieren Sie alle Argumente ohne Option als eine Zeile der pdfTeX-Eingabe. Wenn das erste Argument ohne Option mit einem & beginnt, Das nächste Wort wird als FMT verwendet, das gelesen werden soll, und überschreibt alles andere. Die restlichen Argumente werden wie oben verarbeitet. Wenn keine Argumente oder Optionen angegeben sind, werden Sie zur Eingabe aufgefordert. -draftmode Entwurfsmodus einschalten (erzeugt kein Ausgabe-PDF) -enc aktiviert encTeX-Erweiterungen wie \mubyte -etex aktiviert e-TeX-Erweiterungen [-no]-file-line-error Nachrichten im Datei:Zeile:Fehlerstil deaktivieren/aktivieren -fmt=FMTNAME verwendet FMTNAME anstelle des Programmnamens oder einer %&-Zeile -halt-on-error stoppt die Verarbeitung beim ersten Fehler -ini be pdfinitex, für Dumpingformate; dies ist implizit Wahr, wenn der Programmname „pdfinitex“ ist. -interaction=STRING setzt den Interaktionsmodus (STRING=Batchmode/Nonstopmode/ Scrollmodus/Fehlerstoppmodus) -ipc sendet DVI-Ausgabe an eine Buchse sowie die üblichen Ausgabedatei -ipc-start als -ipc, und starten Sie auch den Server am anderen Ende -jobname=STRING setzt den Jobnamen auf STRING -kpathsea-debug=NUMBER setzt Debugging-Flags für die Pfadsuche gemäß die Bits von NUMBER [-no]-mktex=FMT mktexFMT-Generierung deaktivieren/aktivieren (FMT=tex/tfm/pk) -mltex aktiviert MLTeX-Erweiterungen wie \charsubdef -output-comment=STRING verwendet STRING für DVI-Dateikommentare statt Datum (keine Auswirkung auf PDF) -output-directory=DIR, vorhandenes DIR als Verzeichnis zum Schreiben von Dateien verwenden -output-format=FORMAT, FORMAT für Auftragsausgabe verwenden; FORMAT ist „dvi“ oder „pdf“ [-no]-parse-first-line deaktiviert/aktiviert das Parsen der ersten Zeile der Eingabedatei -progname=STRING setzt den Programmnamen (und fmt-Namen) auf STRING -recorder aktiviert den Dateinamenrekorder [-no]-shell-escape deaktivieren/aktivieren \write18{SHELL-BEFEHL} -shell-restricted aktiviert eingeschränktes \write18 -src-specials fügt Quell-Specials in die DVI-Datei ein -src-specials=WHERE fügt Quellcode-Specials an bestimmten Stellen ein die DVI-Datei. WHERE ist ein durch Kommas getrennter Wert Liste: cr Anzeige hbox math par parend vbox -synctex=NUMBER generiert SyncTeX-Daten für Previewer gemäß Bits von NUMBER (`man synctex' für Details) -translate-file=TCXNAME verwendet die TCX-Datei TCXNAME -8bit macht alle Zeichen standardmäßig druckbar -help zeigt diese Hilfe an und beendet das Programm -version gibt Versionsinformationen aus und beendet das Programm pdfTeX-Homepage: <http://pdftex.org> Senden Sie Fehlerberichte per E-Mail an [email protected]. Wenn wir sehen, dass TeX-Datei kompilierenNachdem wir die Bereitstellung der auf Docker basierenden PDFLatex-Umgebung im obigen Kapitel abgeschlossen haben, können wir mit dem Schreiben einiger einfacher Tex-Dateien beginnen, um die Umgebung zu testen. Hallo Welt Lassen Sie uns zunächst einen einfachen Fall von „Hallo Welt“ testen, bei dem im PDF-Dokument nur die Wörter „ [dechin@dechin-manjaro tex]$ cat hallo_welt.tex \documentclass{Artikel} \begin{document} Hallo Welt! \end{document} Die Verwendung ist nicht schwierig. Zuerst führen wir den Docker-Container aus, beachten, dass wir einen lokalen Pfad anbinden müssen und geben dann das entsprechende Verzeichnis im Container ein: [dechin-root tex]# docker run -it -v /home/dechin/projects/2021-python/tex/:/home/fbenz/pdflatex root@d7ed2229a244:/#ll insgesamt 72 drwxr-xr-x 1 root root 4096 28. März 11:07 ./ drwxr-xr-x 1 root root 4096 28. März 11:07 ../ -rwxr-xr-x 1 root root 0 28. März 11:07 .dockerenv* drwxr-xr-x 2 root root 4096 Nov 19 13:09 bin/ drwxr-xr-x 2 root root 4096 24. April 2018 boot/ drwxr-xr-x 5 root root 360 28. März 11:07 dev/ drwxr-xr-x 1 root root 4096 28. März 11:07 usw./ drwxr-xr-x 2 1000 1000 4096 28. März 04:43 Startseite/ drwxr-xr-x 1 root root 4096 23. Mai 2017 lib/ drwxr-xr-x 2 root root 4096 Nov 19 13:09 lib64/ drwxr-xr-x 2 root root 4096 Nov 19 13:07 Medien/ drwxr-xr-x 2 root root 4096 19. Nov. 13:07 mnt/ drwxr-xr-x 2 root root 4096 Nov 19 13:07 opt/ dr-xr-xr-x 323 root root 0 28. März 11:07 proc/ drwx------ 2 root root 4096 Nov 19 13:09 root/ drwxr-xr-x 1 root root 4096 Nov 25 22:25 laufen/ drwxr-xr-x 1 root root 4096 25. Nov. 22:25 sbin/ drwxr-xr-x 2 root root 4096 Nov 19 13:07 srv/ dr-xr-xr-x 13 root root 0 28. März 11:07 sys/ drwxrwxrwt 1 root root 4096 28. Nov. 18:34 tmp/ drwxr-xr-x 1 root root 4096 Nov 19 13:07 usr/ drwxr-xr-x 1 root root 4096 19. Nov. 13:09 var/ root@d7ed2229a244:/# cd home/ root@d7ed2229a244:/home#ll insgesamt 12 drwxr-xr-x 2 1000 1000 4096 28. März 04:43 ./ drwxr-xr-x 1 root root 4096 28. März 11:07 ../ -rw-r--r-- 1 1000 1000 69 28. März 04:43 hallo_welt.tex Wir können sehen, dass diese Tex-Datei auch im Verzeichnis innerhalb des Containers zu sehen ist, was darauf hinweist, dass die Pfadbindung erfolgreich ausgeführt wurde. Die Ausführungsanweisung ist sehr einfach. Führen Sie einfach root@d7ed2229a244:/home# pdflatex hallo_welt.tex Dies ist pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (vorinstalliertes Format=pdflatex) eingeschränktes \write18 aktiviert. Erweiterten Modus aktivieren (./hallo_welt.tex LaTeX2e <2017-04-15> Babel <3.18> und Silbentrennungsmuster für 84 Sprache(n) geladen. (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Dokumentklasse: Artikel 29.09.2014 v1.4h Standard-LaTeX-Dokumentenklasse (/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo)) Keine Datei hello_world.aux. [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./hello_world.aux) ) sr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb> Ausgabe geschrieben in hello_world.pdf (1 Seite, 11916 Bytes). Transkript geschrieben im hello_world.log. root@d7ed2229a244:/home#ll insgesamt 32 drwxr-xr-x 2 1000 1000 4096 28. März 11:08 ./ drwxr-xr-x 1 root root 4096 28. März 11:07 ../ -rw-r--r-- 1 root root 8 Mär 28 11:08 hello_world.aux -rw-r--r-- 1 root root 2408 28. März 11:08 hello_world.log -rw-r--r-- 1 root root 11916 Mär 28 11:08 hallo_welt.pdf -rw-r--r-- 1 1000 1000 69 28. März 04:43 hallo_welt.tex root@d7ed2229a244:/home# chmod -R 777 . root@d7ed2229a244:/home#ll insgesamt 32 drwxrwxrwx 2 1000 1000 4096 28. März 11:08 ./ drwxr-xr-x 1 root root 4096 28. März 11:07 ../ -rwxrwxrwx 1 root root 8 28. März 11:08 hallo_welt.aux* -rwxrwxrwx 1 root root 2408 28. März 11:08 hello_world.log* -rwxrwxrwx 1 root root 11916 Mär 28 11:08 hallo_welt.pdf* -rwxrwxrwx 1 1000 1000 69 28. März 04:43 hallo_welt.tex* Nach Abschluss des Laufs können wir mehrere neu generierte Dateien im Verzeichnis sehen. Wenn die Berechtigungen von root Sie können sehen, dass die PDF-Datei erfolgreich erstellt wurde. TestformelDas obige „Hallo Welt“-Beispiel ist relativ einfach. Lassen Sie uns testen, ob es ein Problem mit den am häufigsten verwendeten mathematischen Formeln gibt: [dechin@dechin-manjaro tex]$ Katze Gleichung_Test.tex \documentclass{Artikel} \begin{document} Hallo Welt! \begin{Gleichung} e^{iHt}\left|\psi\right> \end{Gleichung} \end{document} Ähnlich wie im vorherigen Abschnitt müssen wir auch den Container aufrufen, um die entsprechenden Anweisungen auszuführen, und schließlich eine PDF-Datei wie unten gezeigt erhalten: Wir können sehen, dass die Formelanzeige auch normal ist. QuantenschaltplanZum Schluss testen wir noch einen schwierigeren Test. Ich habe zuvor einen Blog über die Verwendung von ProjectQ zur Generierung von Quantenschaltkreisdiagrammen im Latex-Format geschrieben, der eine Tex-Datei wie unten gezeigt generierte: [dechin@dechin-manjaro Quantenschaltkreis]$ cat circuit.tex \documentclass{eigenständig} \usepackage[margin=1in]{Geometrie} \usepackage[hang,small,bf]{caption} \usepackage{tikz} \usepackage{braket} \usetikzlibrary{Hintergründe, Schatten.Unschärfe,Anpassen,Dekorationen.Pfadaustausch,Formen} \begin{document} \begin{tikzpicture}[Maßstab=0,8, Form transformieren] \tikzstyle{basicshadow}=[Schatten verwischen={Schattenunschärfeschritte=8, Schatten x-Verschiebung=0,7pt, Schatten y-Verschiebung=-0,7pt, Schattenskala=1,02}]\tikzstyle{basic}=[Zeichnen,Füllen=weiß,basicshadow] \tikzstyle{Operator}=[Grundlegend, Mindestgröße=1,5em] \tikzstyle{phase}=[Füllung=schwarz, Form=Kreis, Mindestgröße=0,1 cm, innerer Abstand=0 pt, äußerer Abstand=0 pt, Zeichnen=schwarz] \tikzstyle{none}=[innere Trennung=0pt,äußere Trennung=-.5pt,Mindesthöhe=0.5cm+1pt] \tikzstyle{Maß}=[Operator,innere Trennlinie=0pt,Mindesthöhe=0,5cm, Mindestbreite=0,75cm] \tikzstyle{xstyle}=[Kreis, einfach, Mindesthöhe=0,35 cm, Mindestbreite=0,35 cm, innerer Abstand=-1pt, sehr dünn] \tikzset{ schattiert/.style={preaction={transform canvas={shift={(0.5pt,-0.5pt)}}, zeichnen=grau, Deckkraft=0.4}}, } \tikzstyle{swapstyle}=[innere Trennung=-1pt, äußere Trennung=-1pt, Mindestbreite=0pt] \tikzstyle{edgestyle}=[sehr dünn] \node[none] (line0_gate0) bei (0,1,-0) {$\Ket{0}$}; \node[none] (line0_gate1) bei (0,5,-0) {}; \node[keine,Mindesthöhe=0,5cm,äußere Trennung=0] (line0_gate2) bei (0,75,-0) {}; \node[none] (line0_gate3) bei (1.0,-0) {}; \draw[Operator, Kantenstil, äußerer Abstand=0,5cm] ([y-Verschiebung=0,25cm]Linie0_Tor1) Rechteck ([y-Verschiebung=-0,25cm]Linie0_Tor3) Knoten[Pos.=0,5] {H}; \draw (Zeile0_Tor0) Kante[Kantenstil] (Zeile0_Tor1); \node[none] (line1_gate0) bei (0,1,-1) {$\Ket{0}$}; \node[none] (line1_gate1) bei (0,5,-1) {}; \node[keine,Mindesthöhe=0,5cm,äußerer Abstand=0] (Zeile1_Tor2) bei (0,75,-1) {}; \node[none] (line1_gate3) bei (1.0,-1) {}; \draw[Operator, Kantenstil, äußerer Abstand=0,5cm] ([y-Verschiebung=0,25cm]Linie1_Tor1) Rechteck ([y-Verschiebung=-0,25cm]Linie1_Tor3) Knoten[Pos.=0,5] {H}; \draw (Zeile1_Tor0) Kante[Kantenstil] (Zeile1_Tor1); \node[none] (line2_gate0) bei (0,1,-2) {$\Ket{0}$}; \node[none] (line2_gate1) bei (0,5,-2) {}; \node[keine,Mindesthöhe=0,5cm,äußerer Abstand=0] (line2_gate2) bei (0,75,-2) {}; \node[none] (line2_gate3) bei (1.0,-2) {}; \draw[Operator, Kantenstil, äußerer Abstand=0,5cm] ([y-Verschiebung=0,25cm]Zeile2_Tor1) Rechteck ([y-Verschiebung=-0,25cm]Zeile2_Tor3) Knoten[Pos.=0,5] {H}; \draw (Zeile2_Tor0) Kante[Kantenstil] (Zeile2_Tor1); \node[xstyle] (line1_gate4) bei (1,4000000000000001,-1) {}; \draw[Kantenstil] (Linie1_Tor4.Norden)--(Linie1_Tor4.Süden); \draw[Kantenstil] (Zeile1_Tor4.West)--(Zeile1_Tor4.Ost); \node[phase] (line2_gate4) bei (1,4000000000000001,-2) {}; \draw (Zeile2_Tor4) Kante[Kantenstil] (Zeile1_Tor4); \draw (Zeile1_Tor3) Kante[Kantenstil] (Zeile1_Tor4); \draw (Zeile2_Tor3) Kante[Kantenstil] (Zeile2_Tor4); \node[xstyle] (line0_gate4) bei (1,9500000000000002,-0) {}; \draw[edgestyle] (line0_gate4.north)--(line0_gate4.south); \draw[Kantenstil] (Zeile0_Tor4.West)--(Zeile0_Tor4.Ost); \node[phase] (line1_gate5) bei (1,9500000000000002,-1) {}; \draw (Zeile1_Tor5) Kante[Kantenstil] (Zeile0_Tor4); \draw (Zeile0_Tor3) Kante[Kantenstil] (Zeile0_Tor4); \draw (Zeile1_Tor4) Kante[Kantenstil] (Zeile1_Tor5); \node[Maß,Kantenstil] (Zeile0_Gate5) bei (2,6000000000000005,-0) {}; \draw[edgestyle] ([yshift=-0,18cm,xshift=0,075000000000000001cm]line0_gate5.west) nach [out=60,in=180] ([yshift=0,035cm]line0_gate5.center) nach [out=0, in=120] ([yshift=-0,18cm,xshift=-0,075000000000000001cm]line0_gate5.east); \draw[edgestyle] ([yshift=-0,18cm]line0_gate5.center) bis ([yshift=-0,075000000000000001cm,xshift=-0,18cm]line0_gate5.north east); \draw (Zeile0_Tor4) Kante[Kantenstil] (Zeile0_Tor5); \node[Maß,Kantenstil] (Zeile1_Gate6) bei (2,6000000000000005,-1) {}; \draw[edgestyle] ([yshift=-0,18cm,xshift=0,075000000000000001cm]line1_gate6.west) nach [out=60,in=180] ([yshift=0,035cm]line1_gate6.center) nach [out=0, in=120] ([yshift=-0,18cm,xshift=-0,075000000000000001cm]line1_gate6.east); \draw[edgestyle] ([yshift=-0,18cm]line1_gate6.center) bis ([yshift=-0,075000000000000001cm,xshift=-0,18cm]line1_gate6.north east); \draw (Zeile1_Tor5) Kante[Kantenstil] (Zeile1_Tor6); \node[Maß,Kantenstil] (Zeile2_Gate5) bei (2,0500000000000003,-2) {}; \draw[edgestyle] ([yshift=-0,18cm,xshift=0,075000000000000001cm]line2_gate5.west) nach [out=60,in=180] ([yshift=0,035cm]line2_gate5.center) nach [out=0, in=120] ([yshift=-0,18cm,xshift=-0,075000000000000001cm]line2_gate5.east); \draw[edgestyle] ([yshift=-0,18cm]line2_gate5.center) bis ([yshift=-0,075000000000000001cm,xshift=-0,18cm]line2_gate5.north east); \draw (Zeile2_Tor4) Kante[Kantenstil] (Zeile2_Tor5); \end{tikzpicture} \end{document} Diese Datei hat nicht nur eine komplexe Struktur, sondern hängt auch von vielen umgebenden Tex-Dateien ab. Bisher war es beim Testen der Kompilierung dieser Tex-Datei auf anderen Plattformen (Win10) erforderlich, viele abhängige Dateien manuell herunterzuladen und sie dann im selben Ordner abzulegen, um sie normal ausführen und verwenden zu können. Hier führen wir es direkt aus und stellen fest, dass wir auch diese PDF-Datei generieren können: Dies zeigt, dass die Umgebung viele notwendige Tools enthält, die der Overleaf-Umgebung ähneln sollten, sodass wir Tex-Dateien auf sehr benutzerfreundliche und einfache Weise lokal kompilieren können. ZusammenfassungUm lokal eine äußerst benutzerfreundliche und einfach bereitzustellende Umgebung zu erstellen, haben wir uns gegen die direkte Installation von pdflatex und die Online-Lösung von Overleaf entschieden. Diese Lösungen haben ihre eigenen Vor- und Nachteile, aber insgesamt ist es für den persönlichen Gebrauch am bequemsten und benutzerfreundlichsten, eine Tex-Kompilierungsumgebung direkt lokal mithilfe eines Docker-Image bereitzustellen. Urheberrechtshinweis Der Originallink dieses Artikels lautet: https://www.cnblogs.com/dechinphy/p/pdflatex.html Referenzlink: https://www.cnblogs.com/dechinphy/p/circuit.html Dies ist das Ende dieses Artikels über die Methoden und Schritte zum Konfigurieren der PDFLatex-Umgebung in Docker. Weitere Informationen zum Konfigurieren der PDFLatex-Umgebung in Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung der Beispiele für CSS-Gewichtswerte (Kaskadierung)
>>: Einführung in Javascript DOM, Knoten und Elementerfassung
Inhaltsverzeichnis Phänomen Ursachenanalyse Aufru...
Vorbereitung 1. Überprüfen Sie, ob die GPU CUDA u...
Vorwort Dieser Artikel verwendet die neuen Funkti...
Problembeschreibung html <iframe id="h5In...
1. Packen Sie das Java-Projekt in ein JAR-Paket H...
Inhaltsverzeichnis Überblick 1. Definieren Sie st...
Einführung react-i18next ist ein leistungsstarkes...
Inhaltsverzeichnis 1. Was ist eine doppelt verknü...
Inhaltsverzeichnis 1. Listendurchlauf 2. Die Roll...
Inhaltsverzeichnis Überblick 1. Die übergeordnete...
Inhaltsverzeichnis Was ist nginx 1. Laden Sie die...
Inhaltsverzeichnis Installieren Sie zuerst wget H...
Inhaltsverzeichnis MySQL-Client/Server-Protokoll ...
Die folgenden Informationen sind aus dem Internet ...
Dies soll an die 4 Fallstricke erinnern, in die i...