FANDOM


50px The following page is under construction.

Please do not edit or alter this article in any way while this template is active. All unauthorized edits may be reverted on the admin's discretion. Propose any changes to the talk page.

Alternate history, also known as alternative history, sometimes abbreviated AH, is a genre of fiction consisting of stories that are set in worlds in which one or more historical events unfolds differently from how it did in reality. It can be variously seen as a subgenre of literary fiction, science fiction, and historical fiction; different alternate history works may use tropes from any or all of these genres. Becoming popular in the late twentieth century, numerous novels and other works have been produced exploring different topics within the genre.

Notable ExamplesEdit

What If? EssaysEdit

What If? Is a collection of essays by eminent historians prospecting over how history may have diverged due to a change in time. It was published by Rupert Cohen in 1999.

Michael StirlingEdit

Michael Stirling is a British author best known for his alternate history scenarios. Stirling's 1993 novel, Short Visits to Different Worlds was acclaimed as one of the genre's first major works, and included such scenarios as:

  • Without Westminster - Focusing on a world where the Treaty of Westminster is never signed, and the Empire of Hispania is greatly weakened. The War of the Grand Coalition never happens, and instead the balance of power in Europe fluctuates between many different nations throughout the modern period.
    • Henry IV, son of John of Gaunt, doesn’t die heirless. Instead he is succeeded by his son as Henry V, leading to civil war between the so called “House of Lancaster” and the OTL ruling family, the House of York, led by Edward III.
    • The Acts of Union of 1425, which in OTL sought to unify the nations of England (and Wales), and the Irish states of Munster and Ulster with the English Royal Crown Dependency of Dublin, are stalled due to the civil war. The civil war also prevents the vassalization of Scotland by the English, and the spread of the Western Church.
    • The Norman Rebellions end in a Roman Catholic victory at the Battle of South Hampton, leading to the widespread suppression of the Western Church.
    • The nations of Munster and Ulster form the Kingdom of Eire, independent of the Kingdom of England, now unified under the Yorkist claimant to the throne.
    • The North Sea Trade Alliance (NSTA) is never founded, due in part to weaker relations with Prussia, the Netherlands, and other OTL allies.
    • The Treaty of Westminster is never signed. War would break out between France and England throughout the late fifteenth century, leading to the loss of English Calais, Guyenne, and all other continental possessions, as well as French vassalization of the Duchy of Brittany.
  • Habsburg Empire - Discusses the possibility of a strong Habsburg alliance between nations such as Austria and Spain, leading to Austria’s continued growth in Europe. Austria is never fully defeated, and goes on to dominate German politics.
  • Great Rhineland War - Discusses the possibility of a Second “Grand Coalition” following the fall of Spain, this time targeting the Empire of France, which managed to seize control over a vast empire in the wake of Hispania’s collapse. Leopold II von Habsburg, King of Westphalia, Lombardy, and the Netherlands emerges as the dominant force in central Europe, after defeating the French and uniting his empire in the Rhineland. Although Austria had fallen to Bavaria and Croatia much earlier, Leopold’s gamble leads to Habsburg dominance once more, and the eventual unification of Germany under Habsburg rule.

Luís BragaEdit

Luís Braga is a Brazilian author specializing in alternate history. He is often credited for coining the term "morcegos espaciais alienígenas” (Alien Space Bats), after his 1994 novel, Without Pskov, featured the term in a major alternate history novel or publication.

  • Without Pskov (1994) - A series of essays discussing possible collapses of the Pskov Republic, leading in most cases to a stronger Moscow, and subsequent Russia, as well as different outcomes for many of Pskov’s neighbors. The fall of Pskov also leads to slower development of technology, literacy, and science in the east, leaving Russia a European “backwater” until the eighteenth century. Braga structures this novel into a series of different examples, each changing Europe in different ways.
    • No Muscovian Crusade - The coalition of the Golden Horde, Scandinavia, and Poland-Lithuania never unites against Moscow. The outcome is Moscow’s eventual dominance of Novgorod diplomatically and the joint conquest of Pskov after a failed rebellion in the early fifteenth century. Due to the lack of “crusade” against Poland, instigated OTL by Prussia and the Teutonic Order, there is less so a feud between Austria and Scandinavia. Austria’s Albert II of Germany is not elected Holy Roman Emperor, however Austria does eventually become one of the dominant states in the empire. Poland and Prussia continue to war throughout the subsequent century, leading to Russia’s eventual destruction of the Poland-Lithuania state, and its growth eastward.
    • Rusan the Burned - Pskov is crushed during the 1547 invasion by Moscow, Novgorod, Poland, and others.
    • Liberation of Livonia - In 1610 the Pskov Republic launches an ill-fated invasion of the Duchy of Livonia, and is subsequently defeated by a coalition of German allies, including Hamburg, Austria, and Prussia. Livonia annexes Pskov and flourishes into a major power in eastern Europe.
    • Pskovian Aggression - Believed to be the first major example of “morcegos espaciais alienígenas” (Alien Space Bats) in a popular alternate history novel or publication, this scenario explores a world in which the accusations by Iosef Mendeleev against Pskov in his 1908 novel, A Complete History of the Pskovian Aggression, are grounded completely in fact.

Marcos Alo AlbaEdit

Tba

José SiqueiraEdit

José Siqueira is a Brazilian novelist and former military officer best known for his technically detailed espionage and military science storylines set in the twentieth century. Additionally Siqueira has also written numerous novels that fit within the genre of alternate history, mostly exploring the outcomes of different wars and conflicts within the last two centuries.

  • The Hunt for Black Havana (1984) - Siqueira's first published novel. ABIN analyst João Gilberto assists in the defection of a respected German naval captain, along with the most advanced ballistic missile submarine of the German fleet.
  • Estado Novo (1995) - Pedro I of Brazil dies unexpectedly in 1890, with no surviving male heirs (the future Pedro II and Prince Fernando and Afonso do not survive into adulthood, or are never born).
    • With no male heir the throne falls to Pedro's daughter Maria and her husband Gaston d'Valois-Arc.
    • Manuel Deodoro da Fonseca (OTL fifth prime minster of Brazil) seizes control of the parliament but is assassinated.
    • Pinheiro Machado, leader of the Republican Party, declares the Second Republic (Estado Novo).
    • A revolt by the nation's navy (Revolta da Armada) is crushed by Floriano Peixoto, propelling the young conservative into politics, and leading to a weakened Brazilian navy around the turn of the twentieth century.
    • The Restoration War begins with the return of Gaston d'Valois-Arc to Brazil, supported by an Emeraldie-based invasion. The Second Brazilian Empire is declared in opposition to Machado's government in Sao Sebastião.
    • The ascension of a Frenchman to the Brazilian throne leads to a split in diplomatic relations between Emeraldie and Andea, splitting Hesperia in two.
  • Vargas' Theory (1996) - A sequel to the popular Estado Novo timeline, documenting Brazil's actions during World War II, including an invasion of Andea.
    • In 1930 Getúlio Vargas is declared dictator of Brazil, during the reign of Pedro II, beginning a period of heavy industrialization and militarization.
    • Formal withdraw of Brazil, Emeraldie, Guiana, Reme, and Mexaca from the Second Hesperian League, and the formation of the Western Axis Powers.
    • The OTL Brazilian-Spanish Alliance is replaced with an alliance with the Republic of Britannia.

Hilarion FarisEdit

Hilarion Faris is one of the more prolific Roman alternate history authors. Faris is known for his broad field in alternate history, covering a wide field of potential timelines. Faris' first novel, The Third Rome, was published in 1994 and was met with acclaim, despite criticism from far-right nationalists.

  • The Third Rome - Instead of Temür-Hachiun's Christian son Theodore succeeding him, his Muslim son Jalal al-Din took the throne instead. Theodore launches a Roman-sponsored rebellion in response, which is swiftly crushed. Angered at Roman involvement in Tartar affairs, Jalal al-Din aligns the Tartary away from the Roman Empire and towards the Ottoman Turks. With the Ottomans in disarray and the Timurids collapsing, nothing is able to prevent Jalal al-Din from bringing the Ottomans into his Empire. Vlachia and Bulgaria fall soon after, and eventually Constantinople is besieged. The city falls, and without the capital, the Roman Empire falls. Jalal al-Din declares himself Roman Emperor of a new Empire centered around the city of Sarai.
  • The Icy North
  • The Great Genocide 

Unknown Quechua AuthorEdit

An Unknown Quechua author wrote a book called The Children of the Mountains,in the mid to late 1500s,which detalied a world in which the Inca Empire collapses at the hand of Spain and flees into the Amazon Rainforest, establishing a new state in the Area known as the Third Inca Empire. The book circulated around Spanish South America and the Inca Empire, serving as a popular read among the upper classes. Many Spanish provinces banned the book, beliving it to be used as a rallying call for rebellings against the Spanish Crown. The Author, who remains namless to this day, is belived to have been executed in Buenos Aires. -- -- This module will implement Template loop detected: Template:Navbox --

local p = {}

local HtmlBuilder = require('Module:HtmlBuilder') local navbar = require('Module:Navbar')._navbar local getArgs -- lazily initialized

local args local tableRowAdded = false local border local listnums = {}

local function trim(s)

   return (mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1"))

end

local function addNewline(s)

   if s:match('^[*:;#]') or s:match('^{|') then
       return '\n' .. s ..'\n'
   else
       return s
   end

end

local function addTableRow(tbl)

   -- If any other rows have already been added, then we add a 2px gutter row.
   if tableRowAdded then
       tbl
           .tag('tr')
               .css('height', '2px')
               .tag('td')
               	.attr('colspan',2)
   end

   tableRowAdded = true

   return tbl.tag('tr')

end

local function renderNavBar(titleCell)

   -- Depending on the presence of the navbar and/or show/hide link, we may need to add a spacer div on the left
   -- or right to keep the title centered.
   local spacerSide = nil

   if args.navbar == 'off' then
       -- No navbar, and client wants no spacer, i.e. wants the title to be shifted to the left. If there's
       -- also no show/hide link, then we need a spacer on the right to achieve the left shift.
       if args.state == 'plain' then spacerSide = 'right' end
   elseif args.navbar == 'plain' or (not args.name and mw.getCurrentFrame():getParent():getTitle() == 'Template:Navbox' and (border == 'subgroup' or border == 'child' or border == 'none')) then
       -- No navbar. Need a spacer on the left to balance out the width of the show/hide link.
       if args.state ~= 'plain' then spacerSide = 'left' end
   else
       -- Will render navbar (or error message). If there's no show/hide link, need a spacer on the right
       -- to balance out the width of the navbar.
       if args.state == 'plain' then spacerSide = 'right' end

       titleCell.wikitext(navbar{ 
           args.name, 
           mini = 1, 
           fontstyle = (args.basestyle or ) .. ';' .. (args.titlestyle or ) ..  ';background:none transparent;border:none;'
       })
   end

   -- Render the spacer div.
   if spacerSide then
       titleCell
           .tag('span')
               .css('float', spacerSide)
               .css('width', '6em')
               .wikitext(' ')
   end

end

-- -- Title row -- local function renderTitleRow(tbl)

   if not args.title then return end

   local titleRow = addTableRow(tbl)

   if args.titlegroup then
       titleRow
           .tag('th')
               .attr('scope', 'row')
               .addClass('navbox-group')
               .addClass(args.titlegroupclass)
               .cssText(args.basestyle)
               .cssText(args.groupstyle)
               .cssText(args.titlegroupstyle)
               .wikitext(args.titlegroup)
   end

   local titleCell = titleRow.tag('th').attr('scope', 'col')

   if args.titlegroup then
       titleCell
           .css('border-left', '2px solid #fdfdfd')
           .css('width', '100%')
   end

   local titleColspan = 2
   if args.imageleft then titleColspan = titleColspan + 1 end
   if args.image then titleColspan = titleColspan + 1 end
   if args.titlegroup then titleColspan = titleColspan - 1 end

   titleCell
       .cssText(args.basestyle)
       .cssText(args.titlestyle)
       .addClass('navbox-title')
       .attr('colspan', titleColspan)

   renderNavBar(titleCell)

   titleCell
        .tag('div')
            .addClass(args.titleclass)
            .css('font-size', '110%')
            .wikitext(addNewline(args.title))

end

-- -- Above/Below rows --

local function getAboveBelowColspan()

   local ret = 2
   if args.imageleft then ret = ret + 1 end
   if args.image then ret = ret + 1 end
   return ret

end

local function renderAboveRow(tbl)

   if not args.above then return end

   addTableRow(tbl)
       .tag('td')
           .addClass('navbox-abovebelow')
           .addClass(args.aboveclass)
           .cssText(args.basestyle)
           .cssText(args.abovestyle)
           .attr('colspan', getAboveBelowColspan())
           .tag('div')
               .wikitext(addNewline(args.above))

end

local function renderBelowRow(tbl)

   if not args.below then return end

   addTableRow(tbl)
       .tag('td')
           .addClass('navbox-abovebelow')
           .addClass(args.belowclass)
           .cssText(args.basestyle)
           .cssText(args.belowstyle)
           .attr('colspan', getAboveBelowColspan())
           .tag('div')
               .wikitext(addNewline(args.below))

end

-- -- List rows -- local function renderListRow(tbl, listnum)

   local row = addTableRow(tbl)

   if listnum == 1 and args.imageleft then
       row
           .tag('td')
               .addClass('navbox-image')
               .addClass(args.imageclass)
               .css('width', '0%')
               .css('padding', '0px 2px 0px 0px')
               .cssText(args.imageleftstyle)
               .attr('rowspan', 2 * #listnums - 1)
               .tag('div')
                   .wikitext(addNewline(args.imageleft))
   end

   if args['group' .. listnum] then
       local groupCell = row.tag('th')

       groupCell
              .attr('scope', 'row')
              .addClass('navbox-group')
              .addClass(args.groupclass)
              .cssText(args.basestyle)

       if args.groupwidth then
           groupCell.css('width', args.groupwidth)
       end

       groupCell
           .cssText(args.groupstyle)
           .cssText(args['group' .. listnum .. 'style'])
           .wikitext(args['group' .. listnum])
   end

   local listCell = row.tag('td')

   if args['group' .. listnum] then
       listCell
           .css('text-align', 'left')
           .css('border-left-width', '2px')
           .css('border-left-style', 'solid')
   else
       listCell.attr('colspan', 2)
   end

   if not args.groupwidth then 
       listCell.css('width', '100%')
   end

   local isOdd = (listnum % 2) == 1
   local rowstyle = args.evenstyle
   if isOdd then rowstyle = args.oddstyle end

   local evenOdd
   if args.evenodd == 'swap' then
       if isOdd then evenOdd = 'even' else evenOdd = 'odd' end
   else
       if isOdd then evenOdd = args.evenodd or 'odd' else evenOdd = args.evenodd or 'even' end
   end

   listCell
       .css('padding', '0px')
       .cssText(args.liststyle)
       .cssText(rowstyle)
       .cssText(args['list' .. listnum .. 'style'])
       .addClass('navbox-list')
       .addClass('navbox-' .. evenOdd)
       .addClass(args.listclass)
       .tag('div')
           .css('padding', (listnum == 1 and args.list1padding) or args.listpadding or '0em 0.25em')
           .wikitext(addNewline(args['list' .. listnum]))

   if listnum == 1 and args.image then
       row
           .tag('td')
               .addClass('navbox-image')
               .addClass(args.imageclass)
               .css('width', '0%')
               .css('padding', '0px 0px 0px 2px')
               .cssText(args.imagestyle)
               .attr('rowspan', 2 * #listnums - 1)
               .tag('div')
                   .wikitext(addNewline(args.image))
   end

end


-- -- Tracking categories --

local function needsHorizontalLists()

   if border == 'child' or border == 'subgroup'  or args.tracking == 'no' then return false end

   local listClasses = {'plainlist', 'hlist', 'hlist hnum', 'hlist hwrap', 'hlist vcard', 'vcard hlist', 'hlist vevent'}
   for i, cls in ipairs(listClasses) do
       if args.listclass == cls or args.bodyclass == cls then
           return false
       end
   end

   return true

end

local function hasBackgroundColors()

   return mw.ustring.match(args.titlestyle or ,'background') or mw.ustring.match(args.groupstyle or ,'background') or mw.ustring.match(args.basestyle or ,'background')

end

local function getTrackingCategories()

   local cats = {}
   if needsHorizontalLists() then table.insert(cats, 'Navigational boxes without horizontal lists') end
   if hasBackgroundColors() then table.insert(cats, 'Navboxes using background colours') end
   return cats

end

local function renderTrackingCategories(builder)

   local title = mw.title.getCurrentTitle()
   if title.namespace ~= 10 then return end -- not in template space
   local subpage = title.subpageText
   if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end

   for i, cat in ipairs(getTrackingCategories()) do
       builder.wikitext() 
   end

end

-- -- Main navbox tables -- local function renderMainTable()

   local tbl = HtmlBuilder.create('table')
       .attr('cellspacing', 0)
       .addClass('nowraplinks')
       .addClass(args.bodyclass)

   if args.title and (args.state ~= 'plain' and args.state ~= 'off') then
       tbl
           .addClass('collapsible')
           .addClass(args.state or 'autocollapse')
   end

   tbl.css('border-spacing', 0)
   if border == 'subgroup' or border == 'child' or border == 'none' then
       tbl
           .addClass('navbox-subgroup')
           .cssText(args.bodystyle)
           .cssText(args.style)
   else -- regular navobx - bodystyle and style will be applied to the wrapper table
       tbl
           .addClass('navbox-inner')
           .css('background', 'transparent')
           .css('color', 'inherit')
   end
   tbl.cssText(args.innerstyle)

   renderTitleRow(tbl)
   renderAboveRow(tbl)
   for i, listnum in ipairs(listnums) do
       renderListRow(tbl, listnum) 
   end
   renderBelowRow(tbl)

   return tbl

end

function p._navbox(navboxArgs)

   args = navboxArgs

   for k, v in pairs(args) do
       local listnum = ( .. k):match('^list(%d+)$')
       if listnum then table.insert(listnums, tonumber(listnum)) end
   end
   table.sort(listnums)

   border = trim(args.border or args[1] or )

   -- render the main body of the navbox
   local tbl = renderMainTable()

   -- render the appropriate wrapper around the navbox, depending on the border param
   local res = HtmlBuilder.create()
   if border == 'none' then
       res.node(tbl)
   elseif border == 'subgroup' or border == 'child' then
       -- We assume that this navbox is being rendered in a list cell of a parent navbox, and is
       -- therefore inside a div with padding:0em 0.25em. We start with a </div> to avoid the
-- padding being applied, and at the end add a
to balance out the parent's
       res
           .tag('/div', {unclosed = true})
               .done()
           .node(tbl)
           .tag('div', {unclosed = true})
   else
       res
           .tag('table')
               .attr('cellspacing', 0)
               .addClass('navbox')
               .css('border-spacing', 0)
               .cssText(args.bodystyle)
               .cssText(args.style)
               .tag('tr')
                   .tag('td')
                       .css('padding', '2px')
                       .node(tbl)
   end

   renderTrackingCategories(res)

   return tostring(res)

end

function p.navbox(frame)

   if not getArgs then
   	getArgs = require('Module:Arguments').getArgs
   end
   args = getArgs(frame)

   -- Read the arguments in the order they'll be output in, to make references number in the right order.
   local _
   _ = args.title
   _ = args.above
   for i = 1, 20 do
       _ = args["group" .. tostring(i)]
       _ = args["list" .. tostring(i)]
   end    
   _ = args.below

   return p._navbox(args)

end

return p

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.