Fix newlines

This commit is contained in:
Boris Verkhovskiy 2024-05-14 17:51:24 -06:00
parent 8c3acb8fb2
commit 717d099842
2 changed files with 306 additions and 261 deletions

View File

@ -1,260 +1,260 @@
---
category: tool
tool: make
filename: Makefile
contributors:
- ["Robert Steed", "https://github.com/robochat"]
- ["Stephan Fuhrmann", "https://github.com/sfuhrm"]
translators:
- ["Andrés Perdomo", "https://github.com/andres7293"]
lang: es-es
---
Un archivo Makefile define un conjunto de reglas para crear un objetivo (o
varios objetivos). Su propósito es hacer la mínima cantidad de trabajo necesaria
para actualizar un objetivo a la versión más reciente de la fuente. Escrito
famosamente en un fin de semana por Stuart Feldman en 1976, todavía se utiliza
ampliamente (especialmente en Unix y Linux) a pesar de muchos competidores y
críticas.
Existen muchas variedades de Make en existencia, no obstante, este artículo
asume que estamos utilizando GNU Make, que es el estándar en Linux.
```make
# Los comentarios se pueden escribir de esta forma.
# El fichero debe tener el nombre de Makefile y luego puede ser ejecutado
# como `make <objetivo>`.
# De lo contrario, se utiliza `make -f "nombre_archivo" <objetivo>`
# Advertencia: ¡solo use TABULACIONES para la identación en Makefiles, nunca
# espacios!
#-----------------------------------------------------------------------
# Fundamentos
#-----------------------------------------------------------------------
# Las reglas tienen el formato
# objetivo: <prerrequisito>
# donde prerrequisito es opcional.
# Una regla - esta regla solamente se ejecutará si file0.txt no existe.
file0.txt:
echo "foo" > file0.txt
# Incluso los comandos en esta sección de 'receta' se pasan a la shell.
# Prueba `make file0.txt` o simplemente 'make' - La primera regla es la
# predeterminada.
# Esta regla se ejecutará solo si file0.txt es más reciente que file1.txt.
file1.txt: file0.txt
cat file0.txt > file1.txt
# Use las mismas reglas de comillas que en la shell.
@cat file0.txt >> file1.txt
# @ evita que el comando se muestre en stdout.
-@echo 'hello'
# - Quiere decir que make continuará en caso de error.
# Pruebe 'make file1.txt` en la línea de comandos.
# Una regla puede tener múltiples objetivos y múltiples prerrequisitos
file2.txt file3.txt: file0.txt file1.txt
touch file2.txt
touch file3.txt
# Make se quejará de múltiples recetas para la misma regla. Sin embargo,
# las reglas vacías no cuentan y se pueden utilizar para agregar nuevas
# dependencias
#-----------------------------------------------------------------------
# Objetivos ficticios (Phony Targets)
#-----------------------------------------------------------------------
# Un objetivo ficticio (phony target). Cualquier objetivo que no sea un archivo.
# Nunca estará actualizado, por lo que make siempre tratará de ejecutarlo.
all: make process
# Podemos declarar cosas sin orden.
maker:
touch ex0.txt ex1.txt
# Se puede evitar que las reglas ficticias (phony) se rompan cuando un archivo
# real tiene el mismo nombre usando:
.PHONY: all maker process
# Esto es un objetivo especial. Hay varios otros.
# Una regla con una dependencia en un objetivo ficticio (phony target)
# se ejecutara siempre:
ex0.txt ex1.txt: maker
# Los objetivos ficticios (phony target) más comunes son:
# all make clean install...
#-----------------------------------------------------------------------
# Variables automáticas y Wildcards
#-----------------------------------------------------------------------
process: file*.txt # usa un wildcard para coincidir con los nombres de archivos.
@echo $^ # $^ es una variable que contiene una lista de todos los prerrequisitos
@echo $@ # imprime el nombre del objetivo
#(para reglas con múltiples objetivos, $@ es el que hizo que se ejecutara la regla)
@echo $< # el primer prerrequisito listado
@echo $? # solo las dependencias que están desactualizadas
@echo $+ # todas las dependencias incluyendo las duplicadas (a diferencia de lo normal)
#@echo $| # solo los 'prerrequisitos solicitados'
# Incluso si dividimos las definiciones de las dependencias, de las reglas, $^
# las encontrará
process: ex1.txt file0.txt
# ext1.xt se encontrará pero file0.txt se duplicará.
#-----------------------------------------------------------------------
# Patrones
#-----------------------------------------------------------------------
# Se puede instruir a make sobre como convertir ciertos tipos de archivos en
# otros archivos.
%.png: %.svg
inkscape --export-png $^
# Las reglas de patrones solo harán algo si make decide crear el objetivo.
# Los directorios no suelen tenerse en cuenta al coincidir con reglas de
# patrones.
# Pero make intentará usar la regla más apropiada disponible.
small/%.png: %.svg
inkscape --export-png --export-dpi 30 $^
# make usará la última versión de una regla de patrón que encuentre.
%.png: %.svg
@echo esta regla es elegida
# Sin embargo make usará la primera regla de patrón que pueda construir el
# objetivo.
%.png: %.ps
@echo esta regla no es elegida si *.svg y *.ps están ambas presentes
# Make ya tiene algunas reglas de patrón integradas.
# Por ejemplo, sabe cómo convertir archivos *.c en archivos *.o.
# En makefiles antiguos se solían utilizar las reglas de sufijo en lugar de las
# reglas de patrón
.png.ps:
@echo esta regla es similar a una regla de patrón.
# Instruye a make sobre una regla de sufijo
.SUFFIXES: .png
#-----------------------------------------------------------------------
# Variables
#-----------------------------------------------------------------------
# también conocidas como macros.
# Las variables son básicamente de tipo cadena (string)
name = Ted
name2="Sarah"
echo:
@echo $(name)
@echo ${name2}
@echo $name # Esto no funcionará, se tratará como $(n)name.
@echo $(name3) # Variables desconocidas se tratarán como cadenas vacías.
# Hay 4 lugares donde se pueden definir variables.
# En orden de prioridad de mayor a menor:
# 1: argumentos de línea de comando.
# 2: Makefile.
# 3: variables de entorno de la shell - make las importa automáticamente.
# 4: make tiene algunas variables predefinidas.
name4 ?= Jean
# Solo establece la variable si la variable de entorno no está aún definida.
override name5 = David
# Detiene que los argumentos de línea de comandos modifiquen esta variable.
name4 +=grey
# Añade valores a la variable (incluye un espacio).
# Valores de variables específicos de patrones (Extension de GNU).
echo: name2 = Sara # Verdadero dentro de la regla coincidente
# y también dentro de sus dependencias recursivas rehechas
# (¡excepto que puede romperse cuando el grafo se complica demasiado!)
# Algunas variables son definidas automáticamente por make.
echo_inbuilt:
echo $(CC)
echo ${CXX}
echo $(FC)
echo ${CFLAGS}
echo $(CPPFLAGS)
echo ${CXXFLAGS}
echo $(LDFLAGS)
echo ${LDLIBS}
#-----------------------------------------------------------------------
# Variables 2
#-----------------------------------------------------------------------
# El primer tipo de variables se evalúan cada vez que se usan.
# Esto puede ser costoso, por lo que existe un segundo tipo de variable que se
# evalúa solo una vez. (Esta es una extensión de GNU make)
var := hello
var2 ::= $(var) hello
#:= y ::= son equivalentes
# Estas variables se evalúan de manera procedimental (en el orden en que
# aparecen), ¡rompiendo así con el resto del lenguaje!
# Esto no funciona
var3 ::= $(var4) and good luck
var4 ::= good night
#-----------------------------------------------------------------------
# Funciones
#-----------------------------------------------------------------------
# make tiene muchas funciones disponibles.
sourcefiles = $(wildcard *.c */*.c)
objectfiles = $(patsubst %.c,%.o,$(sourcefiles))
# El formato es $(func arg0,arg1,arg2...)
# Algunos ejemplos
ls: * src/*
@echo $(filter %.txt, $^)
@echo $(notdir $^)
@echo $(join $(dir $^),$(notdir $^))
#-----------------------------------------------------------------------
# Directrices (Directives)
#-----------------------------------------------------------------------
# Incluye otros makefiles, útil para código de plataformas específicas
include foo.mk
sport = tennis
# Compilación condicional
report:
ifeq ($(sport),tennis)
@echo 'game, set, match'
else
@echo "They think it's all over; it is now"
endif
# También existe ifneq, ifdef, ifndef
foo = true
ifdef $(foo)
bar = 'hello'
endif
```
### Más recursos (en inglés)
+ [GNU Make documentation](https://www.gnu.org/software/make/manual/)
+ [Software carpentry tutorial](http://swcarpentry.github.io/make-novice/)
---
category: tool
tool: make
filename: Makefile
contributors:
- ["Robert Steed", "https://github.com/robochat"]
- ["Stephan Fuhrmann", "https://github.com/sfuhrm"]
translators:
- ["Andrés Perdomo", "https://github.com/andres7293"]
lang: es-es
---
Un archivo Makefile define un conjunto de reglas para crear un objetivo (o
varios objetivos). Su propósito es hacer la mínima cantidad de trabajo necesaria
para actualizar un objetivo a la versión más reciente de la fuente. Escrito
famosamente en un fin de semana por Stuart Feldman en 1976, todavía se utiliza
ampliamente (especialmente en Unix y Linux) a pesar de muchos competidores y
críticas.
Existen muchas variedades de Make en existencia, no obstante, este artículo
asume que estamos utilizando GNU Make, que es el estándar en Linux.
```make
# Los comentarios se pueden escribir de esta forma.
# El fichero debe tener el nombre de Makefile y luego puede ser ejecutado
# como `make <objetivo>`.
# De lo contrario, se utiliza `make -f "nombre_archivo" <objetivo>`
# Advertencia: ¡solo use TABULACIONES para la identación en Makefiles, nunca
# espacios!
#-----------------------------------------------------------------------
# Fundamentos
#-----------------------------------------------------------------------
# Las reglas tienen el formato
# objetivo: <prerrequisito>
# donde prerrequisito es opcional.
# Una regla - esta regla solamente se ejecutará si file0.txt no existe.
file0.txt:
echo "foo" > file0.txt
# Incluso los comandos en esta sección de 'receta' se pasan a la shell.
# Prueba `make file0.txt` o simplemente 'make' - La primera regla es la
# predeterminada.
# Esta regla se ejecutará solo si file0.txt es más reciente que file1.txt.
file1.txt: file0.txt
cat file0.txt > file1.txt
# Use las mismas reglas de comillas que en la shell.
@cat file0.txt >> file1.txt
# @ evita que el comando se muestre en stdout.
-@echo 'hello'
# - Quiere decir que make continuará en caso de error.
# Pruebe 'make file1.txt` en la línea de comandos.
# Una regla puede tener múltiples objetivos y múltiples prerrequisitos
file2.txt file3.txt: file0.txt file1.txt
touch file2.txt
touch file3.txt
# Make se quejará de múltiples recetas para la misma regla. Sin embargo,
# las reglas vacías no cuentan y se pueden utilizar para agregar nuevas
# dependencias
#-----------------------------------------------------------------------
# Objetivos ficticios (Phony Targets)
#-----------------------------------------------------------------------
# Un objetivo ficticio (phony target). Cualquier objetivo que no sea un archivo.
# Nunca estará actualizado, por lo que make siempre tratará de ejecutarlo.
all: make process
# Podemos declarar cosas sin orden.
maker:
touch ex0.txt ex1.txt
# Se puede evitar que las reglas ficticias (phony) se rompan cuando un archivo
# real tiene el mismo nombre usando:
.PHONY: all maker process
# Esto es un objetivo especial. Hay varios otros.
# Una regla con una dependencia en un objetivo ficticio (phony target)
# se ejecutara siempre:
ex0.txt ex1.txt: maker
# Los objetivos ficticios (phony target) más comunes son:
# all make clean install...
#-----------------------------------------------------------------------
# Variables automáticas y Wildcards
#-----------------------------------------------------------------------
process: file*.txt # usa un wildcard para coincidir con los nombres de archivos.
@echo $^ # $^ es una variable que contiene una lista de todos los prerrequisitos
@echo $@ # imprime el nombre del objetivo
#(para reglas con múltiples objetivos, $@ es el que hizo que se ejecutara la regla)
@echo $< # el primer prerrequisito listado
@echo $? # solo las dependencias que están desactualizadas
@echo $+ # todas las dependencias incluyendo las duplicadas (a diferencia de lo normal)
#@echo $| # solo los 'prerrequisitos solicitados'
# Incluso si dividimos las definiciones de las dependencias, de las reglas, $^
# las encontrará
process: ex1.txt file0.txt
# ext1.xt se encontrará pero file0.txt se duplicará.
#-----------------------------------------------------------------------
# Patrones
#-----------------------------------------------------------------------
# Se puede instruir a make sobre como convertir ciertos tipos de archivos en
# otros archivos.
%.png: %.svg
inkscape --export-png $^
# Las reglas de patrones solo harán algo si make decide crear el objetivo.
# Los directorios no suelen tenerse en cuenta al coincidir con reglas de
# patrones.
# Pero make intentará usar la regla más apropiada disponible.
small/%.png: %.svg
inkscape --export-png --export-dpi 30 $^
# make usará la última versión de una regla de patrón que encuentre.
%.png: %.svg
@echo esta regla es elegida
# Sin embargo make usará la primera regla de patrón que pueda construir el
# objetivo.
%.png: %.ps
@echo esta regla no es elegida si *.svg y *.ps están ambas presentes
# Make ya tiene algunas reglas de patrón integradas.
# Por ejemplo, sabe cómo convertir archivos *.c en archivos *.o.
# En makefiles antiguos se solían utilizar las reglas de sufijo en lugar de las
# reglas de patrón
.png.ps:
@echo esta regla es similar a una regla de patrón.
# Instruye a make sobre una regla de sufijo
.SUFFIXES: .png
#-----------------------------------------------------------------------
# Variables
#-----------------------------------------------------------------------
# también conocidas como macros.
# Las variables son básicamente de tipo cadena (string)
name = Ted
name2="Sarah"
echo:
@echo $(name)
@echo ${name2}
@echo $name # Esto no funcionará, se tratará como $(n)name.
@echo $(name3) # Variables desconocidas se tratarán como cadenas vacías.
# Hay 4 lugares donde se pueden definir variables.
# En orden de prioridad de mayor a menor:
# 1: argumentos de línea de comando.
# 2: Makefile.
# 3: variables de entorno de la shell - make las importa automáticamente.
# 4: make tiene algunas variables predefinidas.
name4 ?= Jean
# Solo establece la variable si la variable de entorno no está aún definida.
override name5 = David
# Detiene que los argumentos de línea de comandos modifiquen esta variable.
name4 +=grey
# Añade valores a la variable (incluye un espacio).
# Valores de variables específicos de patrones (Extension de GNU).
echo: name2 = Sara # Verdadero dentro de la regla coincidente
# y también dentro de sus dependencias recursivas rehechas
# (¡excepto que puede romperse cuando el grafo se complica demasiado!)
# Algunas variables son definidas automáticamente por make.
echo_inbuilt:
echo $(CC)
echo ${CXX}
echo $(FC)
echo ${CFLAGS}
echo $(CPPFLAGS)
echo ${CXXFLAGS}
echo $(LDFLAGS)
echo ${LDLIBS}
#-----------------------------------------------------------------------
# Variables 2
#-----------------------------------------------------------------------
# El primer tipo de variables se evalúan cada vez que se usan.
# Esto puede ser costoso, por lo que existe un segundo tipo de variable que se
# evalúa solo una vez. (Esta es una extensión de GNU make)
var := hello
var2 ::= $(var) hello
#:= y ::= son equivalentes
# Estas variables se evalúan de manera procedimental (en el orden en que
# aparecen), ¡rompiendo así con el resto del lenguaje!
# Esto no funciona
var3 ::= $(var4) and good luck
var4 ::= good night
#-----------------------------------------------------------------------
# Funciones
#-----------------------------------------------------------------------
# make tiene muchas funciones disponibles.
sourcefiles = $(wildcard *.c */*.c)
objectfiles = $(patsubst %.c,%.o,$(sourcefiles))
# El formato es $(func arg0,arg1,arg2...)
# Algunos ejemplos
ls: * src/*
@echo $(filter %.txt, $^)
@echo $(notdir $^)
@echo $(join $(dir $^),$(notdir $^))
#-----------------------------------------------------------------------
# Directrices (Directives)
#-----------------------------------------------------------------------
# Incluye otros makefiles, útil para código de plataformas específicas
include foo.mk
sport = tennis
# Compilación condicional
report:
ifeq ($(sport),tennis)
@echo 'game, set, match'
else
@echo "They think it's all over; it is now"
endif
# También existe ifneq, ifdef, ifndef
foo = true
ifdef $(foo)
bar = 'hello'
endif
```
### Más recursos (en inglés)
+ [GNU Make documentation](https://www.gnu.org/software/make/manual/)
+ [Software carpentry tutorial](http://swcarpentry.github.io/make-novice/)

47
hre.csv
View File

@ -1 +1,46 @@
Ix,Dynasty,Name,Birth,Death,Coronation 1,Coronation 2,Ceased to be Emperor N/A,Carolingian,Charles I,2 April 742,28 January 814,25 December 800,N/A,28 January 814 N/A,Carolingian,Louis I,778,20 June 840,11 September 813,5 October 816,20 June 840 N/A,Carolingian,Lothair I,795,29 September 855,5 April 823,N/A,29 September 855 N/A,Carolingian,Louis II,825,12 August 875,15 June 844,18 May 872,12 August 875 N/A,Carolingian,Charles II,13 June 823,6 October 877,29 December 875,N/A,6 October 877 N/A,Carolingian,Charles III,13 June 839,13 January 888,12 February 881,N/A,11 November 887 N/A,Widonid,Guy III,835,12 December 894,21 February 891,N/A,12 December 894 N/A,Widonid,Lambert I,880,15 October 898,30 April 892,N/A,15 October 898 N/A,Carolingian,Arnulph,850,8 December 899,22 February 896,N/A,8 December 899 N/A,Bosonid,Louis III,880,5 June 928,22 February 901,N/A,21 July 905 N/A,Unruoching,Berengar I,845,7 April 924,December 915,N/A,7 April 924 1,Ottonian,Otto I,23 November 912,7 May 973,2 February 962,N/A,7 May 973 2,Ottonian,Otto II,955,7 December 983,25 December 967,N/A,7 December 983 3,Ottonian,Otto III,980,23 January 1002,21 May 996,N/A,23 January 1002 4,Ottonian,Henry II,6 May 973,13 July 1024,14 February 1014,N/A,13 July 1024 5,Salian,Conrad II,990,4 June 1039,26 March 1027,N/A,4 June 1039 6,Salian,Henry III,29 October 1017,5 October 1056,25 December 1046,N/A,5 October 1056 7,Salian,Henry IV,11 November 1050,7 August 1106,31 March 1084,N/A,December 1105 8,Salian,Henry V,8 November 1086,23 May 1125,13 April 1111,N/A,23 May 1125 9,Supplinburg,Lothair III,9 June 1075,4 December 1137,4 June 1133,N/A,4 December 1137 10,Staufen,Frederick I,1122,10 June 1190,18 June 1155,N/A,10 June 1190 11,Staufen,Henry VI,November 1165,28 September 1197,14 April 1191,N/A,28 September 1197 12,Welf,Otto IV,1175,19 May 1218,4 October 1209,N/A,1215 13,Staufen,Frederick II,26 December 1194,13 December 1250,22 November 1220,N/A,13 December 1250 14,Luxembourg,Henry VII,1275,24 August 1313,29 June 1312,N/A,24 August 1313 15,Wittelsbach,Louis IV,1 April 1282,11 October 1347,17 January 1328,N/A,11 October 1347 16,Luxembourg,Charles IV,14 May 1316,29 November 1378,5 April 1355,N/A,29 November 1378 17,Luxembourg,Sigismund,14 February 1368,9 December 1437,31 May 1433,N/A,9 December 1437 18,Habsburg,Frederick III,21 September 1415,19 August 1493,19 March 1452,N/A,19 August 1493 19,Habsburg,Maximilian I,22 March 1459,12 January 1519,N/A,N/A,12 January 1519 20,Habsburg,Charles V,24 February 1500,21 September 1558,February 1530,N/A,16 January 1556 21,Habsburg,Ferdinand I,10 March 1503,25 July 1564,N/A,N/A,25 July 1564 22,Habsburg,Maximilian II,31 July 1527,12 October 1576,N/A,N/A,12 October 1576 23,Habsburg,Rudolph II,18 July 1552,20 January 1612,30 June 1575,N/A,20 January 1612 24,Habsburg,Matthias,24 February 1557,20 March 1619,23 January 1612,N/A,20 March 1619 25,Habsburg,Ferdinand II,9 July 1578,15 February 1637,10 March 1619,N/A,15 February 1637 26,Habsburg,Ferdinand III,13 July 1608,2 April 1657,18 November 1637,N/A,2 April 1657 27,Habsburg,Leopold I,9 June 1640,5 May 1705,6 March 1657,N/A,5 May 1705 28,Habsburg,Joseph I,26 July 1678,17 April 1711,1 May 1705,N/A,17 April 1711 29,Habsburg,Charles VI,1 October 1685,20 October 1740,22 December 1711,N/A,20 October 1740 30,Wittelsbach,Charles VII,6 August 1697,20 January 1745,12 February 1742,N/A,20 January 1745 31,Lorraine,Francis I,8 December 1708,18 August 1765,N/A,N/A,18 August 1765 32,Habsburg-Lorraine,Joseph II,13 March 1741,20 February 1790,19 August 1765,N/A,20 February 1790 33,Habsburg-Lorraine,Leopold II,5 May 1747,1 March 1792,N/A,N/A,1 March 1792 34,Habsburg-Lorraine,Francis II,12 February 1768,2 March 1835,4 March 1792,N/A,6 August 1806
Ix,Dynasty,Name,Birth,Death,Coronation 1,Coronation 2,Ceased to be Emperor
N/A,Carolingian,Charles I,2 April 742,28 January 814,25 December 800,N/A,28 January 814
N/A,Carolingian,Louis I,778,20 June 840,11 September 813,5 October 816,20 June 840
N/A,Carolingian,Lothair I,795,29 September 855,5 April 823,N/A,29 September 855
N/A,Carolingian,Louis II,825,12 August 875,15 June 844,18 May 872,12 August 875
N/A,Carolingian,Charles II,13 June 823,6 October 877,29 December 875,N/A,6 October 877
N/A,Carolingian,Charles III,13 June 839,13 January 888,12 February 881,N/A,11 November 887
N/A,Widonid,Guy III,835,12 December 894,21 February 891,N/A,12 December 894
N/A,Widonid,Lambert I,880,15 October 898,30 April 892,N/A,15 October 898
N/A,Carolingian,Arnulph,850,8 December 899,22 February 896,N/A,8 December 899
N/A,Bosonid,Louis III,880,5 June 928,22 February 901,N/A,21 July 905
N/A,Unruoching,Berengar I,845,7 April 924,December 915,N/A,7 April 924
1,Ottonian,Otto I,23 November 912,7 May 973,2 February 962,N/A,7 May 973
2,Ottonian,Otto II,955,7 December 983,25 December 967,N/A,7 December 983
3,Ottonian,Otto III,980,23 January 1002,21 May 996,N/A,23 January 1002
4,Ottonian,Henry II,6 May 973,13 July 1024,14 February 1014,N/A,13 July 1024
5,Salian,Conrad II,990,4 June 1039,26 March 1027,N/A,4 June 1039
6,Salian,Henry III,29 October 1017,5 October 1056,25 December 1046,N/A,5 October 1056
7,Salian,Henry IV,11 November 1050,7 August 1106,31 March 1084,N/A,December 1105
8,Salian,Henry V,8 November 1086,23 May 1125,13 April 1111,N/A,23 May 1125
9,Supplinburg,Lothair III,9 June 1075,4 December 1137,4 June 1133,N/A,4 December 1137
10,Staufen,Frederick I,1122,10 June 1190,18 June 1155,N/A,10 June 1190
11,Staufen,Henry VI,November 1165,28 September 1197,14 April 1191,N/A,28 September 1197
12,Welf,Otto IV,1175,19 May 1218,4 October 1209,N/A,1215
13,Staufen,Frederick II,26 December 1194,13 December 1250,22 November 1220,N/A,13 December 1250
14,Luxembourg,Henry VII,1275,24 August 1313,29 June 1312,N/A,24 August 1313
15,Wittelsbach,Louis IV,1 April 1282,11 October 1347,17 January 1328,N/A,11 October 1347
16,Luxembourg,Charles IV,14 May 1316,29 November 1378,5 April 1355,N/A,29 November 1378
17,Luxembourg,Sigismund,14 February 1368,9 December 1437,31 May 1433,N/A,9 December 1437
18,Habsburg,Frederick III,21 September 1415,19 August 1493,19 March 1452,N/A,19 August 1493
19,Habsburg,Maximilian I,22 March 1459,12 January 1519,N/A,N/A,12 January 1519
20,Habsburg,Charles V,24 February 1500,21 September 1558,February 1530,N/A,16 January 1556
21,Habsburg,Ferdinand I,10 March 1503,25 July 1564,N/A,N/A,25 July 1564
22,Habsburg,Maximilian II,31 July 1527,12 October 1576,N/A,N/A,12 October 1576
23,Habsburg,Rudolph II,18 July 1552,20 January 1612,30 June 1575,N/A,20 January 1612
24,Habsburg,Matthias,24 February 1557,20 March 1619,23 January 1612,N/A,20 March 1619
25,Habsburg,Ferdinand II,9 July 1578,15 February 1637,10 March 1619,N/A,15 February 1637
26,Habsburg,Ferdinand III,13 July 1608,2 April 1657,18 November 1637,N/A,2 April 1657
27,Habsburg,Leopold I,9 June 1640,5 May 1705,6 March 1657,N/A,5 May 1705
28,Habsburg,Joseph I,26 July 1678,17 April 1711,1 May 1705,N/A,17 April 1711
29,Habsburg,Charles VI,1 October 1685,20 October 1740,22 December 1711,N/A,20 October 1740
30,Wittelsbach,Charles VII,6 August 1697,20 January 1745,12 February 1742,N/A,20 January 1745
31,Lorraine,Francis I,8 December 1708,18 August 1765,N/A,N/A,18 August 1765
32,Habsburg-Lorraine,Joseph II,13 March 1741,20 February 1790,19 August 1765,N/A,20 February 1790
33,Habsburg-Lorraine,Leopold II,5 May 1747,1 March 1792,N/A,N/A,1 March 1792
34,Habsburg-Lorraine,Francis II,12 February 1768,2 March 1835,4 March 1792,N/A,6 August 1806

1 Ix Dynasty Name Birth Death Coronation 1 Coronation 2 Ceased to be Emperor N/A Ceased to be Emperor Carolingian Charles I 2 April 742 28 January 814 25 December 800 N/A 28 January 814 N/A Carolingian Louis I 778 20 June 840 11 September 813 5 October 816 20 June 840 N/A Carolingian Lothair I 795 29 September 855 5 April 823 N/A 29 September 855 N/A Carolingian Louis II 825 12 August 875 15 June 844 18 May 872 12 August 875 N/A Carolingian Charles II 13 June 823 6 October 877 29 December 875 N/A 6 October 877 N/A Carolingian Charles III 13 June 839 13 January 888 12 February 881 N/A 11 November 887 N/A Widonid Guy III 835 12 December 894 21 February 891 N/A 12 December 894 N/A Widonid Lambert I 880 15 October 898 30 April 892 N/A 15 October 898 N/A Carolingian Arnulph 850 8 December 899 22 February 896 N/A 8 December 899 N/A Bosonid Louis III 880 5 June 928 22 February 901 N/A 21 July 905 N/A Unruoching Berengar I 845 7 April 924 December 915 N/A 7 April 924 1 Ottonian Otto I 23 November 912 7 May 973 2 February 962 N/A 7 May 973 2 Ottonian Otto II 955 7 December 983 25 December 967 N/A 7 December 983 3 Ottonian Otto III 980 23 January 1002 21 May 996 N/A 23 January 1002 4 Ottonian Henry II 6 May 973 13 July 1024 14 February 1014 N/A 13 July 1024 5 Salian Conrad II 990 4 June 1039 26 March 1027 N/A 4 June 1039 6 Salian Henry III 29 October 1017 5 October 1056 25 December 1046 N/A 5 October 1056 7 Salian Henry IV 11 November 1050 7 August 1106 31 March 1084 N/A December 1105 8 Salian Henry V 8 November 1086 23 May 1125 13 April 1111 N/A 23 May 1125 9 Supplinburg Lothair III 9 June 1075 4 December 1137 4 June 1133 N/A 4 December 1137 10 Staufen Frederick I 1122 10 June 1190 18 June 1155 N/A 10 June 1190 11 Staufen Henry VI November 1165 28 September 1197 14 April 1191 N/A 28 September 1197 12 Welf Otto IV 1175 19 May 1218 4 October 1209 N/A 1215 13 Staufen Frederick II 26 December 1194 13 December 1250 22 November 1220 N/A 13 December 1250 14 Luxembourg Henry VII 1275 24 August 1313 29 June 1312 N/A 24 August 1313 15 Wittelsbach Louis IV 1 April 1282 11 October 1347 17 January 1328 N/A 11 October 1347 16 Luxembourg Charles IV 14 May 1316 29 November 1378 5 April 1355 N/A 29 November 1378 17 Luxembourg Sigismund 14 February 1368 9 December 1437 31 May 1433 N/A 9 December 1437 18 Habsburg Frederick III 21 September 1415 19 August 1493 19 March 1452 N/A 19 August 1493 19 Habsburg Maximilian I 22 March 1459 12 January 1519 N/A N/A 12 January 1519 20 Habsburg Charles V 24 February 1500 21 September 1558 February 1530 N/A 16 January 1556 21 Habsburg Ferdinand I 10 March 1503 25 July 1564 N/A N/A 25 July 1564 22 Habsburg Maximilian II 31 July 1527 12 October 1576 N/A N/A 12 October 1576 23 Habsburg Rudolph II 18 July 1552 20 January 1612 30 June 1575 N/A 20 January 1612 24 Habsburg Matthias 24 February 1557 20 March 1619 23 January 1612 N/A 20 March 1619 25 Habsburg Ferdinand II 9 July 1578 15 February 1637 10 March 1619 N/A 15 February 1637 26 Habsburg Ferdinand III 13 July 1608 2 April 1657 18 November 1637 N/A 2 April 1657 27 Habsburg Leopold I 9 June 1640 5 May 1705 6 March 1657 N/A 5 May 1705 28 Habsburg Joseph I 26 July 1678 17 April 1711 1 May 1705 N/A 17 April 1711 29 Habsburg Charles VI 1 October 1685 20 October 1740 22 December 1711 N/A 20 October 1740 30 Wittelsbach Charles VII 6 August 1697 20 January 1745 12 February 1742 N/A 20 January 1745 31 Lorraine Francis I 8 December 1708 18 August 1765 N/A N/A 18 August 1765 32 Habsburg-Lorraine Joseph II 13 March 1741 20 February 1790 19 August 1765 N/A 20 February 1790 33 Habsburg-Lorraine Leopold II 5 May 1747 1 March 1792 N/A N/A 1 March 1792 34 Habsburg-Lorraine Francis II 12 February 1768 2 March 1835 4 March 1792 N/A 6 August 1806
2 N/A Carolingian Charles I 2 April 742 28 January 814 25 December 800 N/A 28 January 814
3 N/A Carolingian Louis I 778 20 June 840 11 September 813 5 October 816 20 June 840
4 N/A Carolingian Lothair I 795 29 September 855 5 April 823 N/A 29 September 855
5 N/A Carolingian Louis II 825 12 August 875 15 June 844 18 May 872 12 August 875
6 N/A Carolingian Charles II 13 June 823 6 October 877 29 December 875 N/A 6 October 877
7 N/A Carolingian Charles III 13 June 839 13 January 888 12 February 881 N/A 11 November 887
8 N/A Widonid Guy III 835 12 December 894 21 February 891 N/A 12 December 894
9 N/A Widonid Lambert I 880 15 October 898 30 April 892 N/A 15 October 898
10 N/A Carolingian Arnulph 850 8 December 899 22 February 896 N/A 8 December 899
11 N/A Bosonid Louis III 880 5 June 928 22 February 901 N/A 21 July 905
12 N/A Unruoching Berengar I 845 7 April 924 December 915 N/A 7 April 924
13 1 Ottonian Otto I 23 November 912 7 May 973 2 February 962 N/A 7 May 973
14 2 Ottonian Otto II 955 7 December 983 25 December 967 N/A 7 December 983
15 3 Ottonian Otto III 980 23 January 1002 21 May 996 N/A 23 January 1002
16 4 Ottonian Henry II 6 May 973 13 July 1024 14 February 1014 N/A 13 July 1024
17 5 Salian Conrad II 990 4 June 1039 26 March 1027 N/A 4 June 1039
18 6 Salian Henry III 29 October 1017 5 October 1056 25 December 1046 N/A 5 October 1056
19 7 Salian Henry IV 11 November 1050 7 August 1106 31 March 1084 N/A December 1105
20 8 Salian Henry V 8 November 1086 23 May 1125 13 April 1111 N/A 23 May 1125
21 9 Supplinburg Lothair III 9 June 1075 4 December 1137 4 June 1133 N/A 4 December 1137
22 10 Staufen Frederick I 1122 10 June 1190 18 June 1155 N/A 10 June 1190
23 11 Staufen Henry VI November 1165 28 September 1197 14 April 1191 N/A 28 September 1197
24 12 Welf Otto IV 1175 19 May 1218 4 October 1209 N/A 1215
25 13 Staufen Frederick II 26 December 1194 13 December 1250 22 November 1220 N/A 13 December 1250
26 14 Luxembourg Henry VII 1275 24 August 1313 29 June 1312 N/A 24 August 1313
27 15 Wittelsbach Louis IV 1 April 1282 11 October 1347 17 January 1328 N/A 11 October 1347
28 16 Luxembourg Charles IV 14 May 1316 29 November 1378 5 April 1355 N/A 29 November 1378
29 17 Luxembourg Sigismund 14 February 1368 9 December 1437 31 May 1433 N/A 9 December 1437
30 18 Habsburg Frederick III 21 September 1415 19 August 1493 19 March 1452 N/A 19 August 1493
31 19 Habsburg Maximilian I 22 March 1459 12 January 1519 N/A N/A 12 January 1519
32 20 Habsburg Charles V 24 February 1500 21 September 1558 February 1530 N/A 16 January 1556
33 21 Habsburg Ferdinand I 10 March 1503 25 July 1564 N/A N/A 25 July 1564
34 22 Habsburg Maximilian II 31 July 1527 12 October 1576 N/A N/A 12 October 1576
35 23 Habsburg Rudolph II 18 July 1552 20 January 1612 30 June 1575 N/A 20 January 1612
36 24 Habsburg Matthias 24 February 1557 20 March 1619 23 January 1612 N/A 20 March 1619
37 25 Habsburg Ferdinand II 9 July 1578 15 February 1637 10 March 1619 N/A 15 February 1637
38 26 Habsburg Ferdinand III 13 July 1608 2 April 1657 18 November 1637 N/A 2 April 1657
39 27 Habsburg Leopold I 9 June 1640 5 May 1705 6 March 1657 N/A 5 May 1705
40 28 Habsburg Joseph I 26 July 1678 17 April 1711 1 May 1705 N/A 17 April 1711
41 29 Habsburg Charles VI 1 October 1685 20 October 1740 22 December 1711 N/A 20 October 1740
42 30 Wittelsbach Charles VII 6 August 1697 20 January 1745 12 February 1742 N/A 20 January 1745
43 31 Lorraine Francis I 8 December 1708 18 August 1765 N/A N/A 18 August 1765
44 32 Habsburg-Lorraine Joseph II 13 March 1741 20 February 1790 19 August 1765 N/A 20 February 1790
45 33 Habsburg-Lorraine Leopold II 5 May 1747 1 March 1792 N/A N/A 1 March 1792
46 34 Habsburg-Lorraine Francis II 12 February 1768 2 March 1835 4 March 1792 N/A 6 August 1806