Browse Source

Oh my git

main
Dustin Frisch 3 years ago
commit
eb49f329f1
No known key found for this signature in database GPG Key ID: B4C3BF012D9B26BE
  1. 262
      .gitignore
  2. 33
      Makefile
  3. BIN
      figures/logos/Bitbucket.png
  4. BIN
      figures/logos/Codeberg.png
  5. BIN
      figures/logos/GitHub.png
  6. BIN
      figures/logos/GitLab.png
  7. BIN
      figures/logos/Gitea.png
  8. BIN
      figures/logos/SourceHut.png
  9. 0
      presi.bib
  10. 609
      presi.tex
  11. 32
      shell.nix
  12. 50
      tikzfig.sty

262
.gitignore

@ -0,0 +1,262 @@
presi.pdf
.envrc
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# comment
*.cut
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Comment the next line if you want to keep your tikz graphics files
#*.tikz
#*-tikzDictionary
# listings
*.lol
# makeidx
*.idx
*.ilg
*.ind
*.ist
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# tcolorbox
*.listing
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# todonotes
*.tdo
# vhistory
*.hst
*.ver
# easy-todo
*.lod
# xcolor
*.xcp
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices
*.xyc
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# KBibTeX
*~[0-9]*
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta

33
Makefile

@ -0,0 +1,33 @@
.PHONY: all watch check clean
src = \
presi.tex \
presi.bib \
$(wildcard *.tex) \
$(wildcard figures/*) \
$(wildcard listings/*)
latexmkopts = \
-pdflua \
-shell-escape \
-use-make \
-synctex=1 \
-interaction=nonstopmode \
-file-line-error
all: presi.pdf
presi.pdf: $(src)
latexmk $(latexmkopts) \
-Werror \
presi.tex
watch: $(src)
latexmk $(latexmkopts) \
-pvc \
-view=none \
presi.tex
clean:
latexmk -c presi.tex
rm -fR presi.pdf

BIN
figures/logos/Bitbucket.png

After

Width: 2552  |  Height: 364  |  Size: 70 KiB

BIN
figures/logos/Codeberg.png

After

Width: 914  |  Height: 207  |  Size: 35 KiB

BIN
figures/logos/GitHub.png

After

Width: 864  |  Height: 232  |  Size: 17 KiB

BIN
figures/logos/GitLab.png

After

Width: 2011  |  Height: 615  |  Size: 44 KiB

BIN
figures/logos/Gitea.png

After

Width: 556  |  Height: 134  |  Size: 22 KiB

BIN
figures/logos/SourceHut.png

After

Width: 993  |  Height: 239  |  Size: 15 KiB

0
presi.bib

609
presi.tex

@ -0,0 +1,609 @@
\year=2021
\month=9
\day=14
\documentclass[aspectratio=1610,xcolor=dvipsnames]{beamer}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage[font=scriptsize]{caption}
\usepackage{fontawesome}
\usepackage{graphicx}
\usepackage{tikzfig}
\usetikzlibrary{positioning}
\graphicspath{{./figures/}}
\usepackage{csquotes}
\usepackage{fancyvrb}
\usepackage[
backend=biber,
style=verbose-ibid,
block=ragged,
]{biblatex}
\addbibresource{presi.bib}
\usecolortheme{seahorse}
\setbeamerfont{footnote}{size=\tiny}
\usepackage{minted}
\usemintedstyle{friendly}
\setminted{
baselinestretch=1,
breaklines=true,
autogobble=true,
bgcolor=lightgray!50,
}
\newmintinline[x]{console}{}
\colorlet{bgl}{cyan!50!lightgray!50}
\colorlet{bgr}{orange!50!lightgray!50}
\title{Git SCM}
\subtitle{Crash-Course in Versionsverwaltung and kolaborativem bearbeiten von Textdateien}
\author{Dustin Frisch\\
Fachbereich Angewandte Informatik\\
Hochschule Fulda\\
Fulda, Deutschland\\
E-Mail: {\tt dustin.frisch@ai.hs-fulda.de}}
\begin{document}
\frame{\titlepage}
\begin{frame}{Agenda}
\tableofcontents
\end{frame}
\section{Was soll das alles?}
\begin{frame}{Was ist Versionverwaltung?}
\begin{columns}[t]
\begin{column}{0.5\textwidth}
\centering
\large{Ohne Versionverwaltung}
\begin{figure}[H]
\begin{tikzpicture}[]
\tikzstyle{state}+=[circle, draw=cyan!60, fill=cyan!5, very thick, minimum size=2.5em]
\tikzstyle{file}+=[rectangle, draw=green!60, fill=green!5, very thick, minimum size=2.5em]
\tikzstyle{update}+=[->, thick, dotted]
\tikzstyle{save}+=[->, thick]
\node[state](s1){+A};
\node[state](s2)[right=1em of s1]{+B};
\node[state](s3)[right=1em of s2]{-A};
\node[state](s4)[right=1em of s3]{+C};
\node[file](f) at (2,-3) {$doc$};
\draw[update] (s1.east) -- (s2.west);
\draw[update] (s2.east) -- (s3.west);
\draw[update] (s3.east) -- (s4.west);
\draw[save] (s1.south) -- ([xshift=-0.9em] f.north);
\draw[save] (s2.south) -- ([xshift=-0.3em] f.north);
\draw[save] (s3.south) -- ([xshift=0.3em] f.north);
\draw[save] (s4.south) -- ([xshift=0.9em] f.north);
\end{tikzpicture}
\end{figure}
\end{column}
\begin{column}{0.5\textwidth}
\centering
\large{Mit Versionverwaltung}
\begin{figure}[H]
\begin{tikzpicture}[]
\tikzstyle{state}+=[circle, draw=cyan!60, fill=cyan!5, very thick, minimum size=2.5em]
\tikzstyle{file}+=[rectangle, draw=green!60, fill=green!5, very thick, minimum size=2.5em]
\tikzstyle{update}+=[->, thick, dotted]
\tikzstyle{save}+=[->, thick]
\node[state](s1){+A};
\node[state](s2)[right=1em of s1]{+B};
\node[state](s3)[right=1em of s2]{-A};
\node[state](s4)[right=1em of s3]{+C};
\node[file](f1)[below=2 of s1]{$doc_1$};
\node[file](f2)[below=2 of s2]{$doc_2$};
\node[file](f3)[below=2 of s3]{$doc_3$};
\node[file](f4)[below=2 of s4]{$doc_4$};
\draw[update] (s1.east) -- (s2.west);
\draw[update] (s2.east) -- (s3.west);
\draw[update] (s3.east) -- (s4.west);
\draw[save] (s1.south) -- (f1.north);
\draw[save] (s2.south) -- (f2.north);
\draw[save] (s3.south) -- (f3.north);
\draw[save] (s4.south) -- (f4.north);
\end{tikzpicture}
\end{figure}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Wo kann ich das einsetzen?}
\begin{itemize}
\item Source-Code
\item Konfiguration
\item Dokumente
\item Daten
\end{itemize}
\vspace{1em}
Also alles, was \emph{Text} ist.
\end{frame}
\begin{frame}{Was bringt mir das?}
\centering
{
\fontsize{40}{48}\selectfont
Zeitmaschinen
}\\
\vspace{1em}
\small{und}\\
\vspace{1em}
{
\fontsize{40}{48}\selectfont
Paralleluniversen
}
\end{frame}
\section{Warum jetzt genau Git?}
\begin{frame}{Kurze Histore}
\begin{figure}[H]
\begin{tikzpicture}[]
\tikzstyle{kind}+=[rectangle, very thick, minimum size=3.5em]
\tikzstyle{prod}+=[]
\node[kind, draw=red!90!yellow!60, fill=red!90!yellow!5] (l) at(0,6) {Lokale Versionsverwaltung};
\node[kind, draw=red!60!yellow!60, fill=red!60!yellow!5] (c) at(0,3) {Zentrale Versionsverwaltung};
\node[kind, draw=red!30!yellow!60, fill=red!30!yellow!5] (d) at(0,0) {Verteilte Versionsverwaltung};
\draw[->,thick] (l.south) -- (c.north);
\draw[->,thick] (c.south) -- (d.north);
\node[prod] (l1) [right=of l, yshift=+1em] {SCCS};
\node[prod] (l2) [right=of l, yshift=-1em] {RCS};
\node[prod] (c1) [right=of c, yshift=+1em] {CSV};
\node[prod] (c2) [right=of c, yshift=-1em] {SVN};
\node[prod] (d1) [right=of d, yshift=+1em] {Git};
\node[prod] (d2) [right=of d, yshift= 0em] {Bazaar};
\node[prod] (d3) [right=of d, yshift=-1em] {Mercurial};
\draw[->] (l.east) -- (l1.west);
\draw[->] (l.east) -- (l2.west);
\draw[->] (c.east) -- (c1.west);
\draw[->] (c.east) -- (c2.west);
\draw[->] (d.east) -- (d1.west);
\draw[->] (d.east) -- (d2.west);
\draw[->] (d.east) -- (d3.west);
\end{tikzpicture}
\end{figure}
\end{frame}
\begin{frame}{Git is everywhere}
\begin{columns}[c]
\begin{column}{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth]{logos/GitHub.png}
\end{column}
\begin{column}{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth]{logos/Codeberg.png}
\end{column}
\end{columns}
\vspace{1em}
\begin{columns}[c]
\begin{column}{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth]{logos/GitLab.png}
\end{column}
\begin{column}{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth]{logos/SourceHut.png}
\end{column}
\end{columns}
\vspace{1em}
\begin{columns}[c]
\begin{column}{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth]{logos/Gitea.png}
\end{column}
\begin{column}{0.5\textwidth}
\centering
\includegraphics[width=0.9\textwidth]{logos/Bitbucket.png}
\end{column}
\end{columns}
\end{frame}
\section{Einrichtung und Installation}
\begin{frame}[fragile]{Installation}
\begin{description}
\item[Windows] https://gitforwindows.org/ oder \\
\x^# choco install git^
\item[Linux] \x^# sudo dnf install git-all^ oder \\
\x^# sudo apt install git-all^ oder ...
\item[macOS] \x^# git --version^
\end{description}
\end{frame}
\begin{frame}[fragile]{Einrichtung}
\begin{minted}{console}
# git config --global user.name "Dustin Frisch"
# git config --global user.email "dustin.frisch@ai.hs-fulda.de"
\end{minted}
\end{frame}
\begin{frame}
\centering
\LARGE
Pause
\end{frame}
\section{Aller Anfang ist schwer}
\begin{frame}[fragile]{Neues Projekt}
Neuen Ordner anlegen und in diesen wechseln.
\begin{minted}{console}
# git init
Initialized empty Git repository in /home/fooker/tmp/myproject/.git/
\end{minted}
\end{frame}
\begin{frame}[fragile]{Den überblick behalten}
Eine Datei in dem Ordner anlegen.
\begin{minted}{console}
# git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.c
nothing added to commit but untracked files present (use "git add" to track)
\end{minted}
\end{frame}
\begin{frame}[fragile]{Der Staging-Bereich}
\begin{minted}{console}
# git add test.c
# git status
On branch main
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test.c
\end{minted}
\end{frame}
\begin{frame}[fragile]{Mein erstes mal}
\begin{minted}{console}
# git commit
main (root-commit) 27cda20] A wonderful commit message
1 file changed, 6 insertions(+)
create mode 100644 test.c
# git status
On branch main
nothing to commit, working tree clean
\end{minted}
\end{frame}
\begin{frame}[fragile]{Oh, ein wie konnte das nur passieren}
Die Datei in dem Ordner wird geändert.
\begin{minted}{console}
# git add test.c
# git commit
\end{minted}
\end{frame}
\begin{frame}[fragile]{Was bisher geschah...}
\begin{minted}{console}
# git log
commit 7163f25b8e477a43accc28c30f3bd4351a2d72a2
Author: Dustin Frisch <fooker@lab.sh>
Date: Mon Oct 18 22:12:28 2021 +0200
Fixed dumb mistake
commit 27cda204ad4caae123b44f1fc8d3ac6645e66d3f
Author: Dustin Frisch <fooker@lab.sh>
Date: Mon Oct 18 22:07:31 2021 +0200
A wonderful commit message
\end{minted}
\end{frame}
\begin{frame}[fragile]{So langsam wird es}
Eine weitere Datei anlegen.
\begin{minted}{console}
# git add example.c
# git commit -m "Added example"
\end{minted}
\end{frame}
\begin{frame}[fragile]{Namesgebung ist schwierig}
Eine Datei umbenennen.
\begin{minted}{console}
# git status
On branch main
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: test.c
Untracked files:
(use "git add <file>..." to include in what will be committed)
main.c
no changes added to commit (use "git add" and/or "git commit -a")
\end{minted}
\end{frame}
\begin{frame}[fragile]{Namensgebung ist schwierig}
\begin{minted}{console}
# git add test.c main.c
# git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: test.c -> main.c
# git commit -m "Naming fixed"
\end{minted}
\end{frame}
\begin{frame}[fragile]{Und weg damit}
Eine Datei löschen.
\begin{minted}{console}
# git rm example.c
# git commit -m "This was a mistake"
\end{minted}
\end{frame}
\begin{frame}[fragile]{Was hab ich nur getan}
Eine Datei ändern.
\begin{minted}{console}
# git diff
\end{minted}
\end{frame}
\begin{frame}[fragile]{Keine Fehler}
\begin{minted}{console}
# git restore main.c
\end{minted}
\end{frame}
\begin{frame}[fragile]{Was werde ich nur getan haben}
Eine Datei ändern.
\begin{minted}{console}
# git add main.c
# git diff --staged
\end{minted}
\end{frame}
\begin{frame}[fragile]{Nee, doch nicht}
Datei nochmal ändern
\begin{minted}{console}
# git restore --staged main.c
\end{minted}
\end{frame}
\section{Ein Baum ist ein Baum ist ein Baum}
\begin{frame}[fragile]{Alles hat ein Ende}
\begin{minted}{console}
# git branch
* main
\end{minted}
\end{frame}
\begin{frame}[fragile]{Nur der Baum hat viele}
\begin{minted}{console}
# git branch feature-x
# git branch
feature-x
* main
\end{minted}
\end{frame}
\begin{frame}[fragile]{Wer die Wahl hat}
\begin{minted}{console}
# git checkout feature-x
Switched to branch 'feature-x'
# git branch
* feature-x
main
\end{minted}
\end{frame}
\begin{frame}[fragile]{Als währe nichts gewesen}
Ein paar Commits erzeugen.
\begin{minted}{console}
# git checkout main
Switched to branch 'main'
# git log
...
\end{minted}
\end{frame}
\begin{frame}[fragile]{Realität ist subjektiv}
Eine paar Commits erzeugen.
\begin{minted}{console}
# git checkout feature-x
Switched to branch 'feature-x'
# git log
...
\end{minted}
\end{frame}
\begin{frame}[fragile]{Zusammen was zusammen gehört}
\begin{minted}{console}
# git merge main
Merge made by the 'recursive' strategy.
...
# git log
...
\end{minted}
\end{frame}
\begin{frame}
\centering
\LARGE
Pause
\end{frame}
\section{Mein, dein. Das sind doch bürgerliche Kategorien}
\begin{frame}[fragile]{So klein und schon bei den Sturmtruppen?}
\begin{minted}[bgcolor=bgr]{console}
# git clone http://git.open-desk.net/git/_.git project
\end{minted}
\begin{minted}[bgcolor=bgr]{console}
# git remote -v
origin http://git.open-desk.net/git/_.git (fetch)
origin http://git.open-desk.net/git/_.git (push)
\end{minted}
\end{frame}
\begin{frame}[fragile]{Jeder fängt mal klein an}
\begin{minted}[bgcolor=bgl]{console}
# git remote add origin http://git.open-desk.net/git/_.git
# git push origin main
...
To http://git.open-desk.net/git/_.git
* [new branch] main -> main
\end{minted}
\end{frame}
\begin{frame}[fragile]{Zieh, zeih, zieh!}
\begin{minted}[bgcolor=bgr]{console}
# git pull
...
From http://git.open-desk.net/git/_
* [new branch] main -> origin/main
\end{minted}
\end{frame}
\begin{frame}[fragile]{Und jetzt alle zusammen}
In beiden Ordnern einen Commit erzeugen
\begin{minted}[bgcolor=bgl]{console}
# git push origin main
...
To http://git.open-desk.net/git/a.git
ba998dd..a5069cc main -> main
\end{minted}
\begin{minted}[bgcolor=bgr]{console}
# git push origin main
To http://git.open-desk.net/git/_.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'http://git.open-desk.net/git/_.git'
\end{minted}
\end{frame}
\begin{frame}[fragile]{Ständiges Hin und Her}
\begin{minted}[bgcolor=bgr]{console}
# git pull
...
From http://git.open-desk.net/git/a
+ 07493c7...a5069cc main -> origin/main (forced update)
Successfully rebased and updated refs/heads/main.
# git push
...
To http://git.open-desk.net/git/a.git
a5069cc..baf125b main -> main
\end{minted}
\end{frame}
\section{Alles immer bitte gleich richtig machen}
\begin{frame}[fragile]{Ich meine es nur gut}
\begin{itemize}
\item Nutzt SSH-Schlüssel mit einem SSH-Agent. \\
Tutorials gibt es von GitHub.
\item Signiert eure Commits. \\
Auch hier hilft GitHub weiter.
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Ja, wirklich}
\begin{itemize}
\item Konfiguriert euch einen Shell-Prompt für Git.
\item Macht kleine und strukturierte Commits. \\
\x{# git add -p -i .}
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Falls noch Zeit bleibt}
\begin{itemize}
\item \x{# git commit --amend}
\item \x{# git stash}
\item \x{# git blame}
\item \x{# git rebase -i}
\item \x{# git rebase --onto}
\end{itemize}
\end{frame}
\begin{frame}
\centering
\vspace{3em}
{
\LARGE
Danke
}
\vspace{3em}
https://ohmygit.org
\end{frame}
\end{document}

32
shell.nix

@ -0,0 +1,32 @@
{ pkgs ? import <nixpkgs> {} }:
let
pkgs = import (builtins.fetchTarball {
name = "nixos-21.05";
url = "https://github.com/nixos/nixpkgs/archive/21b696caf392ad6fa513caf3327d0aa0430ffb72.tar.gz";
sha256 = "1056r3383aaf5zhf7rbvka76gqxb8b7rwqxnmar29vxhs9h56m5k";
}) {};
in pkgs.mkShell {
buildInputs = with pkgs; [
(hunspellWithDicts [
hunspellDicts.en-us
hunspellDicts.de-de
])
(texlive.combine {
inherit (texlive) scheme-full;
})
python38Packages.pygments
(pkgs.vscode-with-extensions.override {
vscode = pkgs.vscodium;
vscodeExtensions = with pkgs.vscode-extensions; [
james-yu.latex-workshop
];
})
qtikz
];
}

50
tikzfig.sty

@ -0,0 +1,50 @@
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{trees}
\usetikzlibrary{topaths}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{fadings}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{matrix,backgrounds,folding}
\usetikzlibrary{chains,scopes,positioning,fit}
\usetikzlibrary{arrows,shadows}
\usetikzlibrary{calc}
\usetikzlibrary{chains}
\usetikzlibrary{shapes,shapes.geometric,shapes.misc}
\usetikzlibrary{circuits.ee.IEC}
\newcommand{\tikzfigg}[1]{\tikz[baseline=-0.5em]{\node[draw=red,font=\color{red},fill=red!10!white] {\textit{#1}};}}
\newcommand{\ctikzfigg}[1]{\begin{center}
\tikz[baseline=-0.5em]{\node[draw=red,font=\color{red},fill=red!10!white] {\textit{#1}};}
\end{center}}
\newcommand{\tikzfigTODO}[1]{\textbf{\color{red}(figure: #1)}}
\newcommand{\ctikzfigTODO}[1]{\begin{center}
\textbf{\color{red}(figure: #1)}
\end{center}}
\newcommand{\tikzfig}[1]{%
\IfFileExists{#1.tikz}
{\input{#1.tikz}}
{%
\IfFileExists{./figures/#1.tikz}
{\input{./figures/#1.tikz}}
{\tikz[baseline=-0.5em]{\node[draw=red,font=\color{red},fill=red!10!white] {\textit{#1}};}}%
}%
}
\newcommand{\ctikzfig}[1]{%
\begin{center}\rm
\tikzfig{#1}
\end{center}}
%\newcommand{\inlinetikzfig}[1]{\InputIfFileExists{#1.tikz}{}{\input{./figures/#1.tikz}}}
\pgfdeclarelayer{edgelayer}
\pgfdeclarelayer{nodelayer}
\pgfsetlayers{background,edgelayer,nodelayer,main}
\tikzstyle{none}=[inner sep=0mm]
\tikzstyle{every loop}=[]
\tikzstyle{mark coordinate}=[inner sep=0pt,outer sep=0pt,minimum size=3pt,fill=black,circle]
Loading…
Cancel
Save