Ulam Spiralen mit TikZ und Lualatex
Hier der preprint meines neuen Artikels für die TeXnische Komödie.
Textsatz mit \LaTeX, Programmieren, Zahlen, etc.
Hier der preprint meines neuen Artikels für die TeXnische Komödie.
Mit dem folgenden Skript kann man alle PDFs eines Verzeichnisses nach PNG wandeln. Poppler muss dazu installiert und im Pfad sein.
@echo off
setlocal enabledelayedexpansion
REM Set the output image format (e.g., png, jpeg, or ppm)
set FORMAT=png
REM Loop through all PDF files in the current directory
for %%F in (pg*.pdf) do (
echo Converting %%F...
pdftoppm -%FORMAT% "%%F" "%%~nF"
)
echo Done!
pause
Mit dem listofitems
-Paket lassen sich recht einfach „for jeden Eintrag in Liste“ Schleifen in LaTeX umsetzen. Hier ein Beispiel für das Setzen einer 10m Zielscheibe für Luftpistolen mit TikZ.
\documentclass[tikz,border=0.5cm]{standalone} \usetikzlibrary{positioning} \renewcommand\familydefault{\sfdefault} \usepackage{listofitems} \setsepchar{;} \begin{document} \begin{tikzpicture}[font=\bfseries,thick] %\draw[step=0.5cm,lightgray,thin] (0,0) grid (16,16); \coordinate (o) at (8,8); \draw[black,thick,fill=lightgray] (8,8) circle (29.75mm); \readlist\distances{77.5;69.75;61.75;53.75;45.75;37.75;21.75;13.75;5.75} \foreachitem\distance\in\distances{ \draw[black] (8,8) circle (\distance mm); } \readlist\distances{7.1;6.3;5.5;4.7;3.9;3.1;2.3;1.5;0.7} \readlist\directions{right;above;left;below} \foreachitem\direction\in\directions{ \foreachitem\distance\in\distances{ \node[\direction=\distance cm of o] {\distancecnt}; } } \end{tikzpicture} \end{document} |
Hier ein einfacher Code-Schnipsel, um aus CSV-Dateien Excel-Dateien zu machen.
Es empfiehlt sich auch, die Engine explizit zu setzen, mit der die Excel-Datei geschrieben wird. Standardmäßig nutzt pandas openpyxl, xlsxwriter scheint nach meinen Tests aber um ca. 30% schneller zu sein.
import pandas as pd from openpyxl import Workbook from openpyxl.utils.dataframe import dataframe_to_rows # output control files = [''] wb = Workbook() wb.remove(wb['Sheet']) for index, file in enumerate(files,0): temp = pd.read_csv(file + '.csv',sep='\t') ws1 = wb.create_sheet() ws1.title = file rows = dataframe_to_rows(temp, index=False, header=True) for r_idx, row in enumerate(rows, 1): for c_idx, value in enumerate(row, 1): ws1.cell(row=r_idx, column=c_idx, value=value) wb.save('files45646.xlsx') wb.close() |
Aus aktuellem Anlass hier ein einfaches Beispiel, wie man Werte in pandas Dataframes ersetzen kann:
import pandas as pd # initialize data of lists. data = {'Hersteller': ['VW', 'BMW', 'VW', 'Porsche'], 'Modell': ['Golf', '1er', 'Polo', '911']} df = pd.DataFrame(data) print(df,'\n') df['Hersteller'] = df['Hersteller'].replace( {"VW": "Volkswagen", "Horch": "Audi"}) print(df) |
Hier ein Code-Beispiel für die wichtigsten Funktionen von DuckDB.
import duckdb as ddb import pandas as pd con = ddb.connect(':memory:') con_p = ddb.connect('my_database.db') con_p.execute('CREATE OR REPLACE TABLE telefonnummern(fullname VARCHAR,phone VARCHAR);') con_p.execute("INSERT INTO telefonnummern VALUES ('Max Mustermann', '0123-4567890')") print(con_p.sql('SHOW ALL TABLES')) print(con_p.sql('SELECT * FROM telefonnummern;')) ddb_object = con_p.sql('SELECT * FROM telefonnummern;') df = ddb_object.to_df() ddb_tuple = ddb_object.fetchall() print(df) print(ddb_tuple) |
Hier ein paar Beispiele, wie man mit icecream print() Ausgaben ersetzen kann.
""" icecream examples """ from icecream import ic # define some function def addiere(x, y): return x + y # call ice ic(addiere(1, 2)) # Output: # ic| addiere(1, 2): 3 d = {'i': 2, 'j': 3, 'k': 4711} ic(d['k']) struct = { "hersteller": "VW", "modell": "Golf", "Farben": ["gelb", "rot"] } ic(struct) ic.disable() ic(struct) # no output ic.enable() def logstuff(text): # log to output file print(text) ic.configureOutput(prefix="Hallo| ", outputFunction=logstuff) ic(addiere(7, 7)) ic.configureOutput(prefix="Welt| ", outputFunction=logstuff) ic(addiere(7, 7)) |
Hier ein Beispiel aus der gridpapers
Doku, wie man mit LaTeX isometrische Papiere gestalten kann.
\documentclass{article} \usepackage[pattern=iso, %tri für senkrecht patternsize=0.5cm, textarea, bgcolor=white, %majorcolor={green}, minorcolor={lightgray}, geometry={a4paper, margin=1cm}]{gridpapers} \begin{document} \thispagestyle{empty} ~ \end{document} |
Hier ein erster Entwurf, wie man mit LaTeX Drum Patters setzen kann.
\documentclass[12pt,ngerman]{scrartcl} \usepackage[margin=1cm]{geometry} \usepackage[T1]{fontenc} \usepackage{babel} \usepackage{graphicx} \usepackage{xcolor} \usepackage{tikz} \begin{document} \begin{tikzpicture} % Define the pattern as a comma-separated list \def\pattern{x,-,-,-,-,x,x,-,-,-,x,x,-,-,-,x} \def\cellsizex{1cm} \def\cellsizey{0.5cm} \node[draw, rectangle,minimum width = \cellsizex, align=left,minimum height=\cellsizey] (a) at (\cellsizex/2,\cellsizey/2){\tiny 1}; % Loop through each character in the pattern \foreach \cell [count=\index from 1] in \pattern { % If 'x' fill the cell, otherwise leave it empty \if\cell x \fill[gray,draw=black] ({\index*\cellsizex}, 0) rectangle ++(\cellsizex, \cellsizey); \else \draw ({\index*\cellsizex}, 0) rectangle ++(\cellsizex, \cellsizey); \fi } \end{tikzpicture} |
Ich bin vor einigen Tagen gefragt worden, ob ich nicht das passende Equipment hätte, um eine VHS Kassette zu digitalisieren. Recht blauäugig hab ich sofort „klar“ gesagt, denn einiges habe ich in der Tat:
Theoretisch war also alles vorhanden, doch grau ist alle Theorie!
Versuch Nummer 1
Meine Idee war, einfach den geborgten Video-Recorder an den OSSC anzuschließen, um von dort das Bild mit der Capture-Karte und OBS aufzunehmen. Es tat sich genau nichts, es gab kein Bild. Des Rätsels Lösung war, dass der Video-Recorder ein Composite-Videosignal ausgibt, mit dem der OSSC Konverter leider nichts anfangen kann. Das Ding ist nur für alte Konsolen und Heim-PCs gemacht, aber nicht für VHS.
Versuch Nummer 2
Weg mit dem Kaico, her mit einem SCART-auf-HDMI Adapter vom großen A, Kostenpunkt knapp 7 (!) Euro. Audio kam an, aber das Bild war meist kaputt: „No Signal“. Des Rätsels Lösung war, dass das Video-Signal leider zu schlecht war und immer wieder zusammenbrach. Damit kam der günstige Adapter leider nicht klar.
Versuch Nummer 3
Versuch Nummer 3 brachte dann den Erfolg. Zusammen mit dem Video-Recorder hatte ich auch noch einen „Canopus ADVC-300 Advanced Digital Video Converter“ in die Hand gedrückt bekommen, den ich erst komplett ignoriert hatte. Damit lassen sich analoge Videos per FireWire auf den Rechner sichern. FireWire Hardware hab ich zwar vielleicht noch rumliegen, aber nicht mehr aktiv im Einsatz. Jedoch ist FireWire nicht die einzige Schnittstelle, das Ding nimmt analoge Videos nicht nur an sondern kann diese auch wieder analog ausgeben. Dabei wird das Videosignal so weit stabilisiert, dass der Scart-auf-HDMI Adapter nichts zu nörgeln hatte.
Der finale Prozess sah daher so aus: