Module:yy

Από Βικιλεξικό
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση
-- Ancient Greek declension of nouns. Also can be used for Mediaeval Greek and other polytonic versions of Greek.
-- by Flyax (2015-2018)
-- additions: 2021, Sarri.greek
-- INSTRUCTIONS for modules, at subpages
-- ΟΔΗΓΙΕΣ για συγγραφείς προτύπων στα υποσέλιδα
	-- check https://en.wiktionary.org/wiki/Module:grc-decl/decl/staticdata/paradigms
-- Instructions for editors, at [[:Κατηγορία:Πρότυπα κλίσης ουσιαστικών (αρχαία ελληνικά)]]
--   [[Template:grc-nouns-decl]]
--[=[
STRUCTURE: 
	1. required modules, stem production
	2. links and style
	3. the TABLE
	4. Categories
	5. line 1200: decl links to /param page (basic function for declensions in the functionpages)
	6. line 1230: free links to /param page (creates [[Template:grc-nouns-decl]])
	notes at bottom
PROBLEMS
	* ## DO NOT, DO NOT rewrite in submodules args['μείον'] = 2 for default stem. It creates problem with editor's params
		or any args['μείον'] (seet page /2)
	* FIX ετερογενή, NOT αθ κοινού γένους. Έχουμε α ή θ ΟΧΙ επίκοινα. Ή έχουμε θ ή α.
		Μορφές διπλές, ή και τριπλές με σπάνιους δεύτερους τύπους, δεν χρειάζεται να μπαίνουν στον πίνακα.
		Μπορεί να υπάρχει παρατήρηση.
	* PROBLEM για π.χ. [[:Κατηγορία:Ουσιαστικά αρσενικά (ελληνιστιή κοινή)]]
		Επειδή οι κλίσεις της κοινής είναι οι αρχαίες, δεν μαρκάρονται ως ελληνιστικές
		άρα, δεν διαμορφώνονται οι κατηγορίες [[:Κατηγορία:Ουσιαστικά κατά γένος (ελληνιστική κοινή)]]
]=]--

export = {} -- DO NOT write local export. It does not work, when there are required data involved.
--------------------------------------------------------------------------
-- 1. STEM PRODUCTION, REQUIRED MODULES / ΔΗΜΙΟΥΡΓΙΑ ΘΕΜΑΤΩΝ, MODULES   --
--------------------------------------------------------------------------
languages = mw.loadData("Module:Languages") -- to choose grc, gkm, kath, greek languages with same script
m_ww = require("Module:ww") 
-- USE at ARTICLES section: require ('Module:grc-articles').articles (args)
	-- DO NOT USE here,  m_art = require ('Module:grc-articles').articles (args)
	-- and DO NOT change at all any args for articles

module_path = 'Module:yy'
--m_all = require(module_path .. "/all") -- ?????????? how can I join yy/1, yy/2, yy/3 etc

m_1 = require(module_path .. "/1") 
-- cannot call them all directly from here. They call each other:
-- /functions calls: m_1 = require(module_path .. "/1") -- 1st declension functions
		-- m_1 calls: m_2 = require(module_path .. "/2") -- 2nd declension functions
			-- m_2 ....


-- do not name 'local': it does not work for Module:.../functions
m_stems = require("Module:grk-stems") -- stem production: 
	--functions:
		--word-3 substrats 3 letters from end, word-2, word-1 etc
		--word0 = no accent, word1 = accent on ultima,  word2 = accent on penultima
		--hasaccent = tells us if it has an accent
		
-- call the page /param (it has all parameters) at bottom of this page

--------------------------------------------------------------------------
--             2. links & styles / σύνδεσμοι & στυλ                     --
--------------------------------------------------------------------------

-- =========== standard colours for grc: LightSteelBlue =  #b0c4de 70%-75%-GREY-95%)  GREY c3
-- borders
c_border = '#c9d7e8' -- same as c3 or stronger: same as c_1
c_bord = '#f4f4f4' -- or '#eeeeee' -- inner lighter borders
c_bordR = '' -- right border: if there are more columns, it is soft c_bord. If it is the end, it is c_border
-- background colours
c_extra = '#b0c4de'
c_1 = '#93aed2' -- ROW title1 MAIN, number names, and border for title2 if it exists
c_2 = '#a5bcd9' -- title2 subtitles, genders of adjectives and border for title1
c_3 = '#e3e5e8' -- = from Grey --Ligthsteelblue was '#c9d7e8' -- title3, all the subtitles 
c_4 = '#edf2f7' -- background for notes 
-- also, see below, at languages, special colours for different lang iso

-- font colours
c_ending = '#eb0000'			-- is DeepPink. For wikitext, template [[Πρότυπο:χκ]], never bold
c_stem = '#002000'				-- For wikitext, template [[Πρότυπο:χθ]], never bold
c_black = '#000000'				-- for subtitles
c_cccccc = '#cccccc'			-- not used here (possible for dubious forms)
c_green = '#008000'				-- not used here (possibly for infix)

-- =============== styles
-- for table style, cf. the beginning of fulltable

font_cell = "font-family:; letter-spacing:1px;"				-- tested, rejected: Palatino linotype; font-family:Times; 
fontsize_cell = "font-size:110%;"		-- tested: font-size:130%; (too big)

--  ============== apply font colours - εφαρμογή χρωμάτων
ending_color = function(suffix)
    return '<span style="color:' .. c_ending ..'; font-weight:normal;">' .. suffix .. '</span>'
end

stem_color = function(thema)
    return '<span style="color:' .. c_stem ..'; font-weight:normal;">' .. thema .. '</span>'
end

infix_color = function(infix) -- this is not exactly an inifix. It is extra letters of a 2nd stem.
    return '<span style="color:' .. c_stem ..'; font-weight:normal;">' .. infix .. '</span>'
end

-- for subtitles:
black_color = function(black_thing)
    return '<span style="color:' .. c_black ..'; font-weight:normal;">' .. black_thing .. '</span>'
end

-- not used:
black_word = function(black_word)
    return '<span style="color:' .. c_black ..'; font-weight:;">' .. black_word .. '</span>'
end
cccccc_color = function(cccccc_thing)
    return '<span style="color:' .. c_cccccc ..'; font-weight:normal;">' .. cccccc_thing .. '</span>'
end
green_color = function(green_thing)
    return '<span style="color:' .. c_green ..'; font-weight:normal;">' .. green_thing .. '</span>'
end


	
-- ====================== Links
create_link = function(page, text)
-- language link  DOES NOT WORK from here -- see /param page
	if text then
		return '[[' .. page .. '#' .. languages[lang_iso]['link'] .. '|' .. text .. ']]'
	else
		return '[[' .. page .. '#' .. languages[lang_iso]['link'] .. '|' .. page .. ']]'
	end
end

-- it controls stem (thema) and ending (suffix)
linkcontrol2 = function(thema, suffix)
	thema = thema or ''
	suffix = suffix or ''
	return create_link(thema .. suffix, stem_color(thema) ..  ending_color(suffix))
end

-- it controls stem, infixed letters and ending
linkcontrol3 = function(thema, infix, suffix)
	thema = thema or ''
	return create_link(thema .. infix .. suffix, stem_color(thema) ..  infix_color(infix) .. ending_color(suffix))
end

-- =========== Errors -- use it with writing: if blahblah then return errorhere('xxxxxx') end
errorhere = function(errstring)
    return '<div class="error">' .. errstring .. '</div>[[Κατηγορία:Σελίδες με σφάλματα στο πρότυπο κλίσης ουσιαστικών (αρχαία ελληνικά)]]'
end

-- if ambiguous dichrona vowels are not specified as macron or as brachy or as ?
-- όταν τα δίχρονα δεν έχουν προσωδία δίχρ=μ ή δίχρ=β ή δίχρ=?
-- use it with: if blahblah then return error_dichr end
error_dichr = function(errordichrstring)
		page = mw.title.getCurrentTitle()
    	page.name = page.text:match( "^%s*(.-)%s*$" )
		if page.namespace == 0 then	-- Categories work only in MAIN namespace	
       	return '<div style="font-size:15px; color:red;">* Κλίση: Θα πρέπει να ορίσουμε το δίχρονο φωνήεν με |δίχρ=β (βραχύ) ή |δίχρ=μ (μακρό).<br>Αν δεν υπάρχουν πληροφορίες, |δίχρ=?</div>'
       	.. '[[Κατηγορία:Λήμματα χωρίς προσωδία σε δίχρονο φωνήεν (αρχαία ελληνικά)]]'	
		else
   		return '<div style="font-size:15px; color:red;">* Κλίση: Θα πρέπει να ορίσουμε το δίχρονο φωνήεν με |δίχρ=β (βραχύ) ή |δίχρ=μ (μακρό).<br>Αν δεν υπάρχουν πληροφορίες, |δίχρ=?</div>'
		end
end



--------------------------------------------------------------------------
--                        3. TABLE / ΠΙΝΑΚΑΣ                            --
--------------------------------------------------------------------------

fulltable = function(args)
-- table: -- note: in some browsers, border is not visible. Need border="1"
local float = args['float'] or ''
	if args['float'] == 'left' then
table_style1 = 'style="clear:left; float:left; position:relative; margin: 0px 1.5em 0.5em 0px; background:#ffffff; border:1px solid' .. c_border ..'; text-align:left;" rules="none" border="1" cellpadding="3" cellspacing="0"'
	elseif args['float'] == 'center' then
table_style1 = 'style="margin-left:auto; margin-right:auto; margin-bottom:0.5em; background:#ffffff; border:1px solid' .. c_border ..'; text-align:center;" rules="none" border="1" cellpadding="3" cellspacing="0"'	
	else
table_style1 = 'style="clear:right; float:right; margin-left:0.5em; margin-bottom:0.5em;background:#ffffff; border:1px solid' .. c_border ..'; text-align:right;" rules="none" border="1" cellpadding="3" cellspacing="0"'
	end

-- row for titles of dialects etc
	extratitle_str = args['τίτλος'] or '' 
	extratitle = ''	

-- languages
	lang_iso = lang_iso or 'grc' ---------------------------------- Check -κλῆς
	lang_link = languages[lang_iso]['link'] or ''
	lang_name = languages[lang_iso]['name'] or ''
	kathar = args['kath'] or args['καθ'] or ''
	med = args['gkm'] or args['μσν'] or ''		-- only testing
--	about = args['about'] or ''
-- withdrawn
	about = '' -- '<br>Οι κλιτικοί πίνακες (αρχαία ή ελληνιστική)<br>με όλους τους δυνατούς τύπους, μαρτυρημένους και αμάρτυρους.'
	about_kath = '' -- '<br>Κλιτικοί τύποι όπως στα αρχαία ελληνικά.'
	about_gkm = '' -- '<br>Κλιτικοί τύποι όπως στα αρχαία ελληνικά.'

-- also see /param page: no prosody for these languages
-- for mediaeval greek -- test [[Λεβαδία]] -- only testing: we have no Grammar. Included, only attested forms.
		if args['gkm']  == '1' or args['μσν'] == '1' then
			args['τίτλος'] = '[[:Κατηγορία:Μεσαιωνικά ελληνικά|μεσαιωνικά ελληνικά]]'
			lang_iso = 'gkm' -- this does not  work
			lang_link = languages['gkm']['link']
			lang_name = languages['gkm']['name']
			about = about_gkm
			c_extra= '#cfcfe2;'
			c_3 = '#dfdfec;' -- title3,	as in m2 at [[Πρότυπο:el-biblio/style.css]]
-- for Katharevousa -- test [[Ἀχλαδέα]] check categories
		elseif args['kath']  == '1' or args['καθ'] == '1' then
--		if kathar == '1' then -- this does not work
			args['τίτλος'] = '[[:Κατηγορία:Καθαρεύουσα|καθαρεύουσα]]'
			lang_iso = 'kath' -- this does not  work
			lang_link = languages['kath']['link']
			lang_name = languages['kath']['name']
			about = about_kath
			c_3 = '#d5e2f6' -- title3, all the subtitles as in Modern Greek table-colours
		else
--			args['τίτλος'] = ''	--no, otherwise all other titles vanish
			about = about
			lang_iso = 'grc'
			c_3 = c_3
		end
	
	local columns = args['cols'] or ''		-- number of columns: 1+2 if only one number, 1+4 if 2 numbers 1+6 if double plural or double singular, 1+8 double sing & double pl
	local dichr = args['δίχρ'] or ''		-- for dichronous (either macron or brachy δίχρ=β is brachy)


-- typos, klisi
	typos = args['τύπος'] or args['τύπος0'] or args['κατ'] or ''
	local klisi = args['κλίση'] or ''
		if args['κλίση'] == '1' then klisi = '1' end
		if args['κλίση'] == '2' then klisi = '2' end
		if args['κλίση'] == '2αττ' then klisi = '2αττ' end
		if args['κλίση'] == '3' then klisi = '3' end
		if args['κλίση'] == 'ανώμαλα' then klisi = 'ανώμαλα' end
		if args['κλίση'] == '0' then klisi = 'ανώμαλα' end

	local stem_line = ''
	local stem_cell = ''

	-- row for subtitles (dialects or gender of numbers if different) ἑτερογενῆ =  ὁ λύχνος - τὰ λύχνα, ὁ σῖτος - τὰ σῖτα , ὁ δεσμὸς - οἱ δεσμοὶ καὶ τὰ δεσμά, τὸ στάδιον - τὰ στάδια καὶ οἱ στάδιοι
	local subtitle = ''
	local subtitle_sg = '' 
	if args['υπότιτλος-εν'] ~= 'αρσ' and args['υπότιτλος-εν'] ~= 'θηλ' and args['υπότιτλος-εν'] ~= 'ουδ' and args['υπότιτλος-εν'] ~= 'αθ' then args['υπότιτλος-εν'] = args['υπότιτλος-εν'] or '' end
	if args['υπότιτλος-εν'] == 'αθ' then args['υπότιτλος-εν'] = 'κοινού γένους' end
	if args['υπότιτλος-εν'] == 'αρσ' then args['υπότιτλος-εν'] = '[[αρσενικό|' .. black_color('αρσενικό') .. ']]' end
	if args['υπότιτλος-εν'] == 'θηλ' then args['υπότιτλος-εν'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']]' end
	if args['υπότιτλος-εν'] == 'ουδ' then args['υπότιτλος-εν'] = '[[ουδέτερο|' .. black_color('ουδέτερο') .. ']]' end
	if args['υπότιτλος-εν'] == 'θο' then args['υπότιτλος-εν'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']] ή [[ουδέτερο' .. black_color('ουδέτερο') .. ']]' end
--  need subtitle_sg2 for ὁ [[ζυγός]] τό [[ζυγόν]]
	local subtitle_sg2 = '' -- δεύτερος ενικός
	-- and see ΚΑΤΗΓΟΡΙΕΣ for Κατηγορία:Ο με διαλεκτικούς τύπους
	if args['υπότιτλος-εν2'] ~= 'αρσ' and args['υπότιτλος-εν2'] ~= 'θηλ' and args['υπότιτλος-εν2'] ~= 'ουδ' and args['υπότιτλος-εν2'] ~= 'αθ' then args['υπότιτλος-εν2'] = args['υπότιτλος-εν2'] or '' end
	if args['υπότιτλος-εν2'] == 'αθ' then args['υπότιτλος-εν2'] = 'κοινού γένους' end
	if args['υπότιτλος-εν2'] == 'αρσ' then args['υπότιτλος-εν2'] = '[[αρσενικό|' .. black_color('αρσενικό') .. ']]' end
	if args['υπότιτλος-εν2'] == 'θηλ' then args['υπότιτλος-εν2'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']]' end
	if args['υπότιτλος-εν2'] == 'ουδ' then args['υπότιτλος-εν2'] = '[[ουδέτερο|' .. black_color('ουδέτερο') .. ']]' end
	if args['υπότιτλος-εν2'] == 'θο' then args['υπότιτλος-εν2'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']] ή [[ουδέτερο' .. black_color('ουδέτερο') .. ']]' end
	local subtitle_pl = ''
	if args['υπότιτλος-πλ'] ~= 'αρσ' and args['υπότιτλος-πλ'] ~= 'θηλ' and args['υπότιτλος-πλ'] ~= 'ουδ' and args['υπότιτλος-πλ'] ~= 'αθ' then args['υπότιτλος-πλ'] = args['υπότιτλος-πλ'] or '' end
	if args['υπότιτλος-πλ'] == 'αθ' then args['υπότιτλος-εν2'] = 'κοινού γένους' end
	if args['υπότιτλος-πλ'] == 'αρσ' then args['υπότιτλος-πλ'] = '[[αρσενικό|' .. black_color('αρσενικό') .. ']]' end
	if args['υπότιτλος-πλ'] == 'θηλ' then args['υπότιτλος-πλ'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']]' end
	if args['υπότιτλος-πλ'] == 'ουδ' then args['υπότιτλος-πλ'] = '[[ουδέτερο|' .. black_color('ουδέτερο') .. ']]' end
	if args['υπότιτλος-πλ'] == 'θο' then args['υπότιτλος-πλ'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']] ή [[ουδέτερο' .. black_color('ουδέτερο') .. ']]' end
	local subtitle_pl2 = ''	-- 2ος πληθυντικός
	-- and see ΚΑΤΗΓΟΡΙΕΣ for Κατηγορία:Ο με διαλεκτικούς τύπους
	if args['υπότιτλος-πλ2'] ~= 'αρσ' and args['υπότιτλος-πλ2'] ~= 'θηλ' and args['υπότιτλος-πλ2'] ~= 'ουδ' and args['υπότιτλος-πλ2'] ~= 'αθ' then args['υπότιτλος-πλ2'] = args['υπότιτλος-πλ2'] or '' end
	if args['υπότιτλος-πλ2'] == 'αθ' then args['υπότιτλος-εν2'] = 'κοινού γένους' end
	if args['υπότιτλος-πλ2'] == 'αρσ' then args['υπότιτλος-πλ2'] = '[[αρσενικό|' .. black_color('αρσενικό') .. ']]' end
	if args['υπότιτλος-πλ2'] == 'θηλ' then args['υπότιτλος-πλ2'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']]' end
	if args['υπότιτλος-πλ2'] == 'ουδ' then args['υπότιτλος-πλ2'] = '[[ουδέτερο|' .. black_color('ουδέτερο') .. ']]' end
	if args['υπότιτλος-πλ2'] == 'θο' then args['υπότιτλος-πλ2'] = '[[θηλυκό|' .. black_color('θηλυκό') .. ']] ή [[ουδέτερο' .. black_color('ουδέτερο') .. ']]' end

-- Σημείωση: οι παράμετροι .... = '' χρειάζονται αν ΔΕΝ υπάρχει το /param

	-- numbers
	local sg_title_str = ''			-- singularis title string / ἑνικός
	local sg2_title_str = ''		-- 2nd singualr title / 2ος ενικός αν υπάρχει
	local pl_title_str = ''			-- pluralis  title / πληθυντικός
	local pl2_title_str = ''		-- 2nd plural title / 2ος πληθυντικός αν υπάρχει
	local dualrow = ''				-- not always
	local du_title_str = ''			-- dualis title / δυϊκός
	-- cases
    local nom_sg_str = ''			-- nominativus singularis / ὀνομαστική ἑνικός
    local nom_sg2_str = ''
    local nom_pl_str = ''
    local nom_pl2_str = ''
    local nom_du_str = ''
    local gen_sg_str = ''			-- genitivus / γενική
    local gen_sg2_str = ''
    local gen_pl_str = ''
    local gen_pl2_str = ''
    local gen_du_str = ''
    local dat_sg_str = ''			-- dativus / δοτική
    local dat_sg2_str = ''
    local dat_pl_str = ''
    local dat_pl2_str = ''
    local dat_du_str = ''
    local acc_sg_str = ''			-- accusativus / αἰτιατική
    local acc_sg2_str = ''
    local acc_pl_str = ''
    local acc_pl2_str = ''
    local acc_du_str = ''
    local voc_sg_str = ''			-- vocativus / κλητική
    local voc_sg2_str = ''
    local voc_pl_str = ''
    local voc_pl2_str = ''
    local voc_du_str = ''
	-- articles / ἄρθρα (see [[Module:grc-articles]] (Also parameter άρθρα=0 to omit all articles)
    local a_nom_sg_str = ''
    local a_nom_sg2_str = ''
    local a_nom_pl_str = ''
    local a_nom_pl2_str = ''
    local a_nom_du_str = ''
    local a_gen_sg_str = ''
    local a_gen_sg2_str = ''
    local a_gen_pl_str = ''
    local a_gen_pl2_str = ''
    local a_gen_du_str = ''
    local a_dat_sg_str = ''
    local a_dat_sg2_str = ''
    local a_dat_pl_str = ''
    local a_dat_pl2_str = ''
    local a_dat_du_str = ''
    local a_acc_sg_str = ''
    local a_acc_sg2_str = ''
    local a_acc_pl_str = ''
    local a_acc_pl2_str = ''
    local a_acc_du_str = ''
    local a_voc_sg_str = ''
    local a_voc_sg2_str = ''
    local a_voc_pl_str = ''
    local a_voc_pl2_str = ''
    local a_voc_du_str = ''

-- ARTICLES ===========================================================
require ('Module:grc-articles').articles (args)

-- NUMBERS ================================================================
    local hassingular = true		-- (args['εν'] ~= nil)
    local hasplural = true			-- (args['πλ'] ~= nil)
    local hasdual = true			-- (args['δυ'] ~= '-')

    -- α = Ουσιαστικά ΧΩΡΙΣ τον άλλο αριθμό / the other number does not exist. For pluralia and singularia tantum
    -- α2 = Υπάρχει γραμματικά και ο άλλος αριθμός / The other number grammatically exists (not used)
    -- ενδ = yes dual together with singular
    -- πλδ = yes dual together with plural
    if args['α'] == "πλδ" or args['α2'] == "πλδ" then hassingular = false end	-- get plural and dual
    if args['α'] == "πλ" or args['α2'] == "πλ" then								-- get plural only
    	hassingular = false
    	hasdual = false
    end

    if args['α'] == "ενδ" or args['α2'] == "ενδ" then hasplural = false end	-- get singular and dual
    if args['α'] == "εν" or args['α2'] == "εν" then							-- get singular only
    	hasplural = false
    	hasdual = false
    end
  
-- number of columns for full rows ?????? may write e.g. columns = '10' and it is ok
	-- 1+2 (only one number)
	if (args['α'] == 'εν' or args['α2'] == 'εν' or args['α'] == 'ενδ' or args['α2'] == 'ενδ') or (args['α'] == 'πλ' or args['α2'] == 'πλ' or args['α'] == 'πλδ' or args['α2'] == 'πλδ')
	and (args['υπότιτλος-εν2'] == '' or args['υπότιτλος-εν2'] == nil) and (args['υπότιτλος-πλ2'] == '' or args['υπότιτλος-πλ2'] == nil)
		then columns = '3'
	
	-- 1+6 en-en2-pl
	elseif (args['α'] ~= 'εν' and args['α2'] ~= 'εν') and (args['α'] ~= 'ενδ' and args['α2'] ~= 'ενδ') and (args['α'] ~= 'πλ' and args['α2'] ~= 'πλ') and (args['α'] ~= 'πλδ' and args['α2'] ~= 'πλδ')
	and	(args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil) 
	and (args['υπότιτλος-πλ2'] == '' or args['υπότιτλος-πλ2'] == nil)
		then columns = '7'
	
	-- 1+6 en-pl-pl2
	elseif (args['α'] ~= 'εν' and args['α2'] ~= 'εν') and (args['α'] ~= 'ενδ' and args['α2'] ~= 'ενδ') and (args['α'] ~= 'πλ' and args['α2'] ~= 'πλ') and (args['α'] ~= 'πλδ' and args['α2'] ~= 'πλδ')
	and	(args['υπότιτλος-εν2'] == '' or args['υπότιτλος-εν2'] == nil) 
	and (args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil)
		then columns = '7'	
    
    -- 1+8 --en-en2-pl-pl2
	elseif (args['α'] ~= 'εν' and args['α2'] ~= 'εν') and (args['α'] ~= 'ενδ' and args['α2'] ~= 'ενδ') and (args['α'] ~= 'πλ' and args['α2'] ~= 'πλ') and (args['α'] ~= 'πλδ' and args['α2'] ~= 'πλδ')
	and args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil and args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil
		then columns = '9'
--[=[
	-- 1+4 for en-en2 --??????? does not work
	elseif (args['α'] == 'εν' or args['α2'] == 'εν') or (args['α'] == 'ενδ' or args['α2'] == 'ενδ')
	and (args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil)
	and (args['υπότιτλος-πλ2'] == '' or args['υπότιτλος-πλ2'] == nil)
		then columns = '5'

	-- 1+4 for pl-pl2
	elseif (args['α'] == 'πλ' or args['α2'] == 'πλ') or (args['α'] == 'πλδ' or args['α2'] == 'πλδ')
	and (args['υπότιτλος-εν2'] == '' or args['υπότιτλος-εν2'] == nil)
	and (args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil)
		then columns = '5'
]=]--			
	-- 1+4 sg + pl, normal ... hope it covers all other combinations
	else
        columns = '5'
     
	end


-- NOTES & whole LINES ================================================================
    local paratirisi = ''			-- notes by editor
    local note = args['σημ'] or  ''	-- standard notes by Template
    local appendix = ''				-- standard link for [[Παράρτημα:Ουσιαστικά (αρχαία ελληνικά)]]
    local append = ''				-- link to Appendix at specific paradigm
    local as_in = args['όπως'] or ''    	-- editor must add at function: e.g. όπως= 'σοφία'
    local group = args['ομάδα']	or ''    	-- editor must add at function: e.g. ομάδα= 'χώρα'
    	if group ~= '' and group ~= nil then
    		group = "[[:Κατηγορία:Ουσιαστικά που κλίνονται όπως η ομάδα '" .. group .. "' (" .. lang_name .. ")|ομάδα '" .. group .. "']]," 
    		--  if MAINSPACE see ομάδα added at ΚΑΤΗΓΟΡΙΕΣ
    	end
    	if as_in == '' or as_in == nil then append = '' else
    		cat_decl = args['κατηγορία κλίσης'] or 'Ουσιαστικά'
    		if args['κλίση'] == 'ανώμαλα' or args['κλίση'] == '0' then
    		append = '[[Παράρτημα:Ουσιαστικά (αρχαία ελληνικά)/ανώμαλα|ανώμαλη κλίση]], ' .. group 
    		.. ' [[:Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ')|Κατηγορία]] όπως «[[Παράρτημα:Ουσιαστικά (αρχαία ελληνικά)/ανώμαλα#' .. as_in .. '|' .. as_in .. ']]» - '
    		elseif args['κλίση'] == '2αττ' then
    		append = '[[Παράρτημα:Ουσιαστικά (αρχαία ελληνικά)/2#αττικόκλιτα|2η κλίση - αττικόκλιτα]], ' .. group 
    		.. ' [[:Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ')|Κατηγορία]] όπως «[[Παράρτημα:Ουσιαστικά (αρχαία ελληνικά)/2#' .. as_in .. '|' .. as_in .. ']]» - '
    		else -- klisi 1, 2, 3
    		append = '[[Παράρτημα:Ουσιαστικά (αρχαία ελληνικά)/' .. klisi .. '|' .. klisi .. 'η κλίση]], ' .. group 
    		.. ' [[:Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ')|Κατηγορία]] όπως «[[Παράρτημα:Ουσιαστικά (αρχαία ελληνικά)/' .. klisi .. '#' .. as_in .. '|' .. as_in .. ']]» - '
    		end
    	end
-- stem line MUST be placed at Section Rows
    
-- ============== note lines / σημείωση παρατήρηση

-- ### adding this, BECAUSE en-en2 does not work for notes
	if (args['α'] == 'εν' or args['α2'] == 'εν') or (args['α'] == 'ενδ' or args['α2'] == 'ενδ')
	and (args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil)
	and (args['υπότιτλος-πλ2'] == '' or args['υπότιτλος-πλ2'] == nil)
		then
			
	if args['σημ'] ~= '' or args['σημ'] ~= nil then
    	if not (args['παρατήρηση'] == nil or mw.ustring.len(args['παρατήρηση']) < 1) then
        paratirisi = '|-' .. "\n" .. [=[| colspan="]=] .. columns .. [=[" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. note .. '<br>' .. args['παρατήρηση'] .. "\n"
    	else
        paratirisi = '|-' .. "\n" .. [=[| colspan="]=] .. columns .. [=[" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. note .. "\n"
    	end
    end
	if args['σημ'] == '' or args['σημ'] == nil then
    	if not (args['παρατήρηση'] == nil or mw.ustring.len(args['παρατήρηση']) < 1) then
        paratirisi = '|-' .. "\n" .. [=[| colspan="]=] .. 5 .. [=[" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. args['παρατήρηση'] .. "\n"
    	else
    	paratirisi = ''
    	end
    end
	-- appendix
	if args['παράρτημα'] == '-' then appendix = ''
	elseif args['παράρτημα'] ~= '-'  and args['παράρτημα'] ~= '' and args['παράρτημα'] ~= nil  then
        appendix = '|-' .. "\n" .. [=[| colspan="]=] .. 5 .. [=[" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. append .. args['παράρτημα'] .. about .. "\n"
	else
        appendix = '|-' .. "\n" .. [=[| colspan="]=] .. 5 .. [=[" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. append .. '[[Παράρτημα:Ουσιαστικά (αρχαία ελληνικά)|<span title="Παράρτημα:Ουσιαστικά (αρχαία)">Παράρτημα:Ουσιαστικά</span>]]' 
        .. about .. "\n"
	end
			
-- ##end of addition !!!!!!!! I have no idea why...			
else 			
	if args['σημ'] ~= '' or args['σημ'] ~= nil then
    	if not (args['παρατήρηση'] == nil or mw.ustring.len(args['παρατήρηση']) < 1) then
        paratirisi = '|-' .. "\n" .. [=[| colspan="]=] .. columns .. [=[" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. note .. '<br>' .. args['παρατήρηση'] .. "\n"
    	else
        paratirisi = '|-' .. "\n" .. [=[| colspan="]=] .. columns .. [=[" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. note .. "\n"
    	end
    end
	if args['σημ'] == '' or args['σημ'] == nil then
    	if not (args['παρατήρηση'] == nil or mw.ustring.len(args['παρατήρηση']) < 1) then
        paratirisi = '|-' .. "\n" .. [=[| colspan="]=] .. columns .. [=[" align="left" style="background:]=] .. c_4 .. [=[; font-size:80%; line-height:100%;" | ]=]
        paratirisi = paratirisi .. args['παρατήρηση'] .. "\n"
    	else
    	paratirisi = ''
    	end
    end
	-- appendix
	if args['παράρτημα'] == '-' then appendix = ''
	elseif args['παράρτημα'] ~= '-'  and args['παράρτημα'] ~= '' and args['παράρτημα'] ~= nil  then
        appendix = '|-' .. "\n" .. [=[| colspan="]=] .. columns .. [=[" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. append .. args['παράρτημα'] .. about .. "\n"
	else
        appendix = '|-' .. "\n" .. [=[| colspan="]=] .. columns .. [=[" align="right" style="text-align:right; background:]=] .. c_4 .. [=[; font-size:70%; line-height:100%;" | ]=]
        appendix = appendix .. append .. '[[Παράρτημα:Ουσιαστικά (αρχαία ελληνικά)|<span title="Παράρτημα:Ουσιαστικά (αρχαία)">Παράρτημα:Ουσιαστικά</span>]]'
        .. about .. "\n"
	end
end -- close ## addition
    
    
-- ========== CELLS  ===============================================    
-- extra title string
   	if args['τίτλος'] ~= '' and args['τίτλος'] ~= nil then
   		extratitle_str =  args['τίτλος'] .. "\n"
    end
    
-- stem_cell --this is a full row, but it does not come first, it goes UNDER last row
   	if args['θέματα'] ~= '' and args['θέματα'] ~= nil then
   		-- colspan as in columms

        	stem_cell = [=[| style="background:]=] .. c_3 .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        	[=["  colspan="]=] .. columns .. [=[" align="left" | ]=] .. args['θέματα'] .. "\n"
 
    end -- close stem_cell


-- (spaces added for good copy-paste result)
if hassingular then
    	-- for 2 columns only (table_style1's border does not apply)
    if args['α'] == 'εν' or args['α2'] == 'εν' or args['α'] == 'ενδ' or args['α2'] == 'ενδ' then
    	c_bordR = c_border
    	
        sg_title_str = [=[! style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ενικός|<span title="ἑνικός ἀριθμός" style="color:black;">'''''ενικός'''''</span>]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]=] .. "\n"

        subtitle_sg = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['υπότιτλος-εν'] .. "\n"
	else -- different right border
		c_bordR = c_bord -- soft right border if more columns follow
		
        sg_title_str =  [=[! style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_2 ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[ενικός|<span title="ἑνικός ἀριθμός" style="color:black;">'''''ενικός'''''</span>]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]=] .. "\n"
 
        subtitle_sg = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
        [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['υπότιτλος-εν'] .. "\n"	
	end	
        a_nom_sg_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αοε'] ..  "\n" --DO NOT TEST m_art(args['αοε'])
        nom_sg_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bordR .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['οεΛ'] ..  "\n"
        a_gen_sg_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αγε'] ..  "\n"
        gen_sg_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bordR .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['γεΛ'] ..  "\n"
        a_dat_sg_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αδε'] ..  "\n"
        dat_sg_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bordR .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['δεΛ'] ..  "\n"
        a_acc_sg_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['ααε'] ..  "\n"
        acc_sg_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bordR .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['αεΛ'] ..  "\n"
        a_voc_sg_str = [=[| style="]=] .. font_cell .. fontsize_cell ..  [=[" align="center" | ]=] .. args['ακε'] ..  "\n"
        voc_sg_str = [=[| style="border-right:1px solid ]=] .. c_bordR .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['κεΛ'] ..  "\n"

end -- close hassingular
    
    
if hasplural then
        if args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil then	-- if 2nd plural follows, right borders are soft	
        	
        pl_title_str = [=[! style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_2 ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;[[πληθυντικός|<span title="πληθυντικός ἀριθμός" style="color:black;">'''''πληθυντικός'''''</span>]]&nbsp;&nbsp;]=] .. "\n"

        subtitle_pl = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 .. 
        [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['υπότιτλος-πλ'] .. "\n"
        
        a_nom_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αοπ'] ..  "\n"
        nom_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['οπΛ'] ..  "\n"
        a_gen_pl_str =  [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αγπ'] ..  "\n"
        gen_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['γπΛ'] ..  "\n"
        a_dat_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αδπ'] ..  "\n"
        dat_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['δπΛ'] ..  "\n"
        a_acc_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['ααπ'] ..  "\n"
        acc_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['απΛ'] ..  "\n"
        a_voc_pl_str = [=[| style="]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['ακπ'] ..  "\n"
        voc_pl_str = [=[| style="border-right:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['κπΛ'] ..  "\n"
        
        else -- if 2nd plural does not follow we need strong right borders
        	
        pl_title_str = [=[! style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;[[πληθυντικός|<span title="πληθυντικός ἀριθμός" style="color:black;">'''''πληθυντικός'''''</span>]]&nbsp;&nbsp;]=] .. "\n"

        subtitle_pl = [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border .. 
        [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['υπότιτλος-πλ'] .. "\n"
        
        a_nom_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αοπ'] ..  "\n"
        nom_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['οπΛ'] ..  "\n"
        a_gen_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αγπ'] ..  "\n"
        gen_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['γπΛ'] ..  "\n"
        a_dat_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αδπ'] ..  "\n"
        dat_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['δπΛ'] ..  "\n"
        a_acc_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['ααπ'] ..  "\n"
        acc_pl_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['απΛ'] ..  "\n"
        a_voc_pl_str = [=[| style="]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['ακπ'] ..  "\n"
        voc_pl_str = [=[| style="border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['κπΛ'] ..  "\n"
        
        end -- close if 2nd plural
        
end -- close hasplural

-- 2nd singular - 2ος ενικός
    if args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil then	-- write free text
		args['αοε2'] = args['αοε2'] or ''
		args['αγε2'] = args['αγε2'] or ''
		args['αδε2'] = args['αδε2'] or ''
		args['ααε2'] = args['ααε2'] or ''
		args['οεΛ2'] = args['οεΛ2'] or ''
		args['γεΛ2'] = args['γεΛ2'] or ''
		args['δεΛ2'] = args['δεΛ2'] or ''
		args['αεΛ2'] = args['αεΛ2'] or ''
		args['κεΛ2'] = args['κεΛ2'] or ''

        sg2_title_str = [=[! style="background:]=] .. c_1 ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;[[ενικός|<span title="ἑνικός ἀριθμός" style="color:black;">'''''ενικός'''''</span>]]&nbsp;&nbsp;]=] .. "\n"

        subtitle_sg2 = [=[| style="background:]=] .. c_2 ..
        [=[; border-right:1px solid ]=] .. c_1 .. [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['υπότιτλος-εν2'] .. "\n"
        
        a_nom_sg2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αοε2'] ..  "\n"
        nom_sg2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['οεΛ2'] ..  "\n"
        a_gen_sg2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αγε2'] ..  "\n"
        gen_sg2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord  .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['γεΛ2'] ..  "\n"
        a_dat_sg2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αδε2'] ..  "\n"
        dat_sg2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['δεΛ2'] ..  "\n"
        a_acc_sg2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['ααε2'] ..  "\n"
        acc_sg2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord  .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['αεΛ2'] ..  "\n"
        a_voc_sg2_str = [=[| style="]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['ακε2'] ..  "\n"
        voc_sg2_str = [=[| style="border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['κεΛ2'] ..  "\n"
    end	-- close sg2 exists


-- 2nd plural - 2ος πληθυντικός
    if args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil then	-- write free text
		args['αοπ2'] = args['αοπ2'] or ''
		args['αγπ2'] = args['αγπ2'] or ''
		args['αδπ2'] = args['αδπ2'] or ''
		args['ααπ2'] = args['ααπ2'] or ''
		args['οπΛ2'] = args['οπΛ2'] or ''
		args['γπΛ2'] = args['γπΛ2'] or ''
		args['δπΛ2'] = args['δπΛ2'] or ''
		args['απΛ2'] = args['απΛ2'] or ''
		args['κπΛ2'] = args['κπΛ2'] or ''

        pl2_title_str = [=[! style="background:]=] .. c_1 ..
        [=[;" colspan="2" align="center"| &nbsp;&nbsp;[[πληθυντικός|<span title="πληθυντικός ἀριθμός" style="color:black;">'''''πληθυντικός'''''</span>]]&nbsp;&nbsp;]=] .. "\n"

        subtitle_pl2 = [=[| style="background:]=] .. c_2 ..
        [=[; border-right:1px solid ]=] .. c_1 .. [=[; font-size:70%; font-style:italic; line-height:100%;" colspan="2" align="center"| ]=] .. args['υπότιτλος-πλ2'] .. "\n"
        
        a_nom_pl2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αοπ2'] ..  "\n"
        nom_pl2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['οπΛ2'] ..  "\n"
        a_gen_pl2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αγπ2'] ..  "\n"
        gen_pl2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord  .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['γπΛ2'] ..  "\n"
        a_dat_pl2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['αδπ2'] ..  "\n"
        dat_pl2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['δπΛ2'] ..  "\n"
        a_acc_pl2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['ααπ2'] ..  "\n"
        acc_pl2_str = [=[| style="border-bottom:1px solid ]=] .. c_bord  .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['απΛ2'] ..  "\n"
        a_voc_pl2_str = [=[| style="]=] .. font_cell .. fontsize_cell ..
        [=[" align="center" | ]=] .. args['ακπ2'] ..  "\n"
        voc_pl2_str = [=[| style="border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell .. fontsize_cell ..
        [=[" align="left" | ]=] .. args['κπΛ2'] ..  "\n"
    end	-- close pl2 exists

if hasdual then -- need lines only for nom, gen
-- yes dual

-- 2 cols	ενδ ΟΡ πλδ	
	if (args['α'] == 'ενδ' or args['α2'] == 'ενδ' or args['α'] == 'πλδ' or args['α2'] == 'πλδ') and args['δυ'] ~= '-'
	and (args['υπότιτλος-εν2'] == '' or args['υπότιτλος-εν2'] == nil)
	and (args['υπότιτλος-πλ2'] == '' or args['υπότιτλος-πλ2'] == nil)
	then
    	
        du_title_str =  [=[! style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; font-size:80%; line-height:100%;" colspan="2" align="center" | [[δυϊκός|<span title="δυϊκός ἀριθμός" style="color:black;">'''''δυϊκός'''''</span>]]]=] .. "\n"
        
        a_nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%;" align="center" colspan="1" | ]=] .. args['αοδ'] .. "\n"
        nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="1" | ]=] .. args['οδΛ'] .. "\n"
        a_gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%;" align="center" colspan="1" | ]=] .. args['αγδ'] .. "\n"
        gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="1" | ]=] .. args['γδΛ'] .. "\n"
    
-- 4 cols 
	elseif (args['α'] ~= 'ενδ' and args['α2'] ~= 'ενδ' and args['α'] ~= 'πλδ' and args['α2'] ~= 'πλδ') and args['δυ'] ~= '-'
	and (args['υπότιτλος-εν2'] == '' or args['υπότιτλος-εν2'] == nil)
	and (args['υπότιτλος-πλ2'] == '' or args['υπότιτλος-πλ2'] == nil)
	then
        du_title_str =  [=[! style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; font-size:80%; line-height:100%;" colspan="4" align="center" | [[δυϊκός|<span title="δυϊκός ἀριθμός" style="color:black;">'''''δυϊκός'''''</span>]]]=] .. "\n"
        
        a_nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="2" | ]=] .. args['αοδ'] .. '&nbsp;' .. "\n"
        nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="2" | ]=] .. args['οδΛ'] .. "\n"
        a_gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="2" | ]=] .. args['αγδ'] .. '&nbsp;' .. "\n"
        gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="2" | ]=] .. args['γδΛ'] .. "\n"
        
-- 6 cols for  en en2 pl
	elseif (args['α'] ~= 'ενδ' and args['α2'] ~= 'ενδ' and args['α'] ~= 'πλδ' and args['α2'] ~= 'πλδ') and args['δυ'] ~= '-'
	and (args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil)
	and (args['υπότιτλος-πλ2'] == '' or args['υπότιτλος-πλ2'] == nil)
	then
        du_title_str =  [=[! style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; font-size:80%; line-height:100%;" colspan="6" align="center" | [[δυϊκός|<span title="δυϊκός ἀριθμός" style="color:black;">'''''δυϊκός'''''</span>]]]=] .. "\n"
        
        a_nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="3" | ]=] .. args['αοδ'] .. '&nbsp;' .. "\n"
        nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="3" | ]=] .. args['οδΛ'] .. "\n"
        a_gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="3" | ]=] .. args['αγδ'] .. '&nbsp;' .. "\n"
        gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="3" | ]=] .. args['γδΛ'] .. "\n"
        
       
-- 6 cols for  en pl pl2
	elseif (args['α'] ~= 'ενδ' and args['α2'] ~= 'ενδ' and args['α'] ~= 'πλδ' and args['α2'] ~= 'πλδ') and args['δυ'] ~= '-'
	and (args['υπότιτλος-εν2'] == '' or args['υπότιτλος-εν2'] == nil)
	and (args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil)
	then
        du_title_str =  [=[! style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; font-size:80%; line-height:100%;" colspan="6" align="center" | [[δυϊκός|<span title="δυϊκός ἀριθμός" style="color:black;">'''''δυϊκός'''''</span>]]]=] .. "\n"
        
        a_nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="3" | ]=] .. args['αοδ'] .. '&nbsp;' .. "\n"
        nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="3" | ]=] .. args['οδΛ'] .. "\n"
        a_gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="3" | ]=] .. args['αγδ'] .. '&nbsp;' .. "\n"
        gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="3" | ]=] .. args['γδΛ'] .. "\n"
        
       
-- 8 cols for  en en2 pl pl2
	elseif (args['α'] ~= 'ενδ' and args['α2'] ~= 'ενδ' and args['α'] ~= 'πλδ' and args['α2'] ~= 'πλδ') and args['δυ'] ~= '-'
	and (args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil)
	and (args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil)
	then
        du_title_str =  [=[! style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; font-size:80%; line-height:100%;" colspan="8" align="center" | [[δυϊκός|<span title="δυϊκός ἀριθμός" style="color:black;">'''''δυϊκός'''''</span>]]]=] .. "\n"
        
        a_nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="4" | ]=] .. args['αοδ'] .. '&nbsp;' .. "\n"
        nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="4" | ]=] .. args['οδΛ'] .. "\n"
        a_gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="4" | ]=] .. args['αγδ'] .. '&nbsp;' .. "\n"
        gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="4" | ]=] .. args['γδΛ'] .. "\n"

-- 4 cols  for other combinations........ hope it is ok
	else
        du_title_str =  [=[! style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_border ..
        [=[; font-size:80%; line-height:100%;" colspan="4" align="center" | [[δυϊκός|<span title="δυϊκός ἀριθμός" style="color:black;">'''''δυϊκός'''''</span>]]]=] .. "\n"
        
        a_nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="2" | ]=] .. args['αοδ'] .. '&nbsp;' .. "\n"
        nom_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="2" | ]=] .. args['οδΛ'] .. "\n"
        a_gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord ..
        [=[; font-size:90%; line-height:100%; text-align:right;" align="right" colspan="2" | ]=] .. args['αγδ'] .. '&nbsp;' .. "\n"
        gen_du_str = [=[| style="border-bottom:1px solid ]=] .. c_bord .. [=[; border-right:1px solid ]=] .. c_border .. [=[; ]=] .. font_cell ..
        [=[; font-size:90%; line-height:100%;" align="left" colspan="2" | ]=] .. args['γδΛ'] .. "\n"

	end -- close if ... numbers exist
end -- close dual


-- ============================= ROWS
-- extra title
	if args['τίτλος'] ~= '' and args['τίτλος'] ~= nil then extratitle =
'|-' .. extratitle_str .. "\n" ..   [=[|-]=]
	end

-- stem_line
	if args['θέματα'] ~= '' and args['θέματα'] ~= nil then stem_line =
'|-' .. "\n" .. [=[| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 .. [=[; line-height:100%;" align="left"|  ]=] .. "\n" .. stem_cell .. [=[|-]=]
	end


-- subtitle line
	-- sg, pl have different number
	if (args['υπότιτλος-εν'] ~= '' or args['υπότιτλος-πλ'] ~= '') then subtitle =
'|-' .. "\n" .. [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
[=[; text-align:center; font-size:70%; line-height:100%;" align="center"|  ]=] .. "\n" .. subtitle_sg .. subtitle_pl .. [=[|-]=]
end
	-- 2 singulars, pl
	if args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil then subtitle =
'|-' .. "\n" .. [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
[=[; text-align:center; font-size:70%; line-height:100%;" align="center"|  ]=] .. "\n" .. subtitle_sg .. subtitle_sg2 .. subtitle_pl .. [=[|-]=]
	end
	-- sg, 2 plurals
	if args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil then subtitle =
'|-' .. "\n" .. [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
[=[; text-align:center; font-size:70%; line-height:100%;" align="center"|  ]=] .. "\n" .. subtitle_sg .. subtitle_pl .. subtitle_pl2 .. [=[|-]=]
	end
	-- 2 singulars + 2 plurasl
	if args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil and args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil then subtitle =
'|-' .. "\n" .. [=[| style="background:]=] .. c_2 .. [=[; border-right:1px solid ]=] .. c_1 ..
[=[; text-align:center; font-size:70%; line-height:100%;" align="center"|  ]=] .. "\n" .. subtitle_sg .. subtitle_sg2 .. subtitle_pl .. subtitle_pl2 .. [=[|-]=]
	end	
	
	
	-- ouput WIHTOUT dual
	if args['α'] == 'εν' or args['α2'] == 'εν' or args['α'] == 'πλ' or args['α2'] == 'πλ' or args['δυ'] == '-' or args['καθ'] == '1' or args['kath'] == '1' then
	
	-- + extratitle_str	
	if args['τίτλος'] ~= '' and args['τίτλος'] ~= nil then
		
    output = [=[{| ]=] .. table_style1 .. [=[
|-
| style="background:]=] .. c_extra .. [=[; border-right:1px solid ]=] .. c_extra ..
	[=[; text-align:center; line-height:100%;" align="center" colspan="9" |  ]=] .. extratitle_str ..
	   [=[|-
| style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_2 ..
	[=[; text-align:center; font-size:90%;" align="center"| &darr;&nbsp;''πτώσεις'' ]=] ..
	"\n" .. sg_title_str.. sg2_title_str .. pl_title_str .. pl2_title_str .. stem_line .. subtitle .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| [[ονομαστική|<span title="πτῶσις ὀνομαστική" style="color:black;">'''''ονομαστική'''''</span>]]]=] ..
	"\n" .. a_nom_sg_str .. nom_sg_str .. a_nom_sg2_str .. nom_sg2_str .. a_nom_pl_str .. nom_pl_str .. a_nom_pl2_str .. nom_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[γενική|<span title="πτῶσις γενική" style="color:black;">'''''γενική'''''</span>]]]=] ..
	"\n" .. a_gen_sg_str .. gen_sg_str .. a_gen_sg2_str .. gen_sg2_str .. a_gen_pl_str .. gen_pl_str .. a_gen_pl2_str .. gen_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[δοτική|<span title="πτῶσις δοτική" style="color:black;">'''''δοτική'''''</span>]]]=] ..
	"\n" .. a_dat_sg_str .. dat_sg_str .. a_dat_sg2_str .. dat_sg2_str .. a_dat_pl_str .. dat_pl_str .. a_dat_pl2_str .. dat_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;[[αιτιατική|<span title="πτῶσις αἰτιατική" style="color:black;">'''''αιτιατική'''''</span>]]]=] ..
	"\n" .. a_acc_sg_str .. acc_sg_str .. a_acc_sg2_str .. acc_sg2_str .. a_acc_pl_str .. acc_pl_str .. a_acc_pl2_str .. acc_pl2_str .. [=[|-
| style="background:]=] .. c_3 ..
	[=[; text-align:right;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[κλητική|<span title="πτῶσις κλητική" style="color:black; font-size:90%;">'''''κλητική'''''</span>]] [[ὦ|<span style="color:black;">ὦ</span>]]!]=] ..
	"\n" .. a_voc_sg_str .. voc_sg_str .. a_voc_sg2_str .. voc_sg2_str .. a_voc_pl_str .. voc_pl_str .. a_voc_pl2_str .. voc_pl2_str .. paratirisi .. appendix .. [=[|}]=]
	
	else -- no extratitle_str
		
    output = [=[{| ]=] .. table_style1 .. [=[
|-
| style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_2 ..
	[=[; text-align:center; font-size:90%;" align="center"| &darr;&nbsp;''πτώσεις'' ]=] ..
	"\n" .. sg_title_str.. sg2_title_str .. pl_title_str .. pl2_title_str .. stem_line .. subtitle .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| [[ονομαστική|<span title="πτῶσις ὀνομαστική" style="color:black;">'''''ονομαστική'''''</span>]]]=] ..
	"\n" .. a_nom_sg_str .. nom_sg_str .. a_nom_sg2_str .. nom_sg2_str .. a_nom_pl_str .. nom_pl_str .. a_nom_pl2_str .. nom_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[γενική|<span title="πτῶσις γενική" style="color:black;">'''''γενική'''''</span>]]]=] ..
	"\n" .. a_gen_sg_str .. gen_sg_str .. a_gen_sg2_str .. gen_sg2_str .. a_gen_pl_str .. gen_pl_str .. a_gen_pl2_str .. gen_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[δοτική|<span title="πτῶσις δοτική" style="color:black;">'''''δοτική'''''</span>]]]=] ..
	"\n" .. a_dat_sg_str .. dat_sg_str .. a_dat_sg2_str .. dat_sg2_str .. a_dat_pl_str .. dat_pl_str .. a_dat_pl2_str .. dat_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;[[αιτιατική|<span title="πτῶσις αἰτιατική" style="color:black;">'''''αιτιατική'''''</span>]]]=] ..
	"\n" .. a_acc_sg_str .. acc_sg_str .. a_acc_sg2_str .. acc_sg2_str .. a_acc_pl_str .. acc_pl_str .. a_acc_pl2_str .. acc_pl2_str .. [=[|-
| style="background:]=] .. c_3 ..
	[=[; text-align:right;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[κλητική|<span title="πτῶσις κλητική" style="color:black; font-size:90%;">'''''κλητική'''''</span>]] [[ὦ|<span style="color:black;">ὦ</span>]]!]=] ..
	"\n" .. a_voc_sg_str .. voc_sg_str .. a_voc_sg2_str .. voc_sg2_str .. a_voc_pl_str .. voc_pl_str .. a_voc_pl2_str .. voc_pl2_str .. paratirisi .. appendix .. [=[|}]=]
	end -- close extratitle_str
		
		
	else -- WITH dual
	
	-- + extratitle_str	
	if args['τίτλος'] ~= '' and args['τίτλος'] ~= nil then
		
    output = [=[{| ]=] .. table_style1 .. [=[
|-
| style="background:]=] .. c_extra .. [=[; border-right:1px solid ]=] .. c_extra ..
	[=[; text-align:center; line-height:100%;" align="center" colspan="9" |  ]=] .. extratitle_str ..
	   [=[|-
| style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_2 ..
	[=[; text-align:center; font-size:90%;" align="center"| &darr;&nbsp;''πτώσεις'' ]=] ..
	"\n" .. sg_title_str .. sg2_title_str .. pl_title_str .. pl2_title_str .. stem_line .. subtitle .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| [[ονομαστική|<span title="πτῶσις ὀνομαστική" style="color:black;">'''''ονομαστική'''''</span>]]]=] ..
	"\n" .. a_nom_sg_str .. nom_sg_str .. a_nom_sg2_str .. nom_sg2_str .. a_nom_pl_str .. nom_pl_str .. a_nom_pl2_str .. nom_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[γενική|<span title="πτῶσις γενική" style="color:black;">'''''γενική'''''</span>]]]=] ..
	"\n" .. a_gen_sg_str .. gen_sg_str .. a_gen_sg2_str .. gen_sg2_str .. a_gen_pl_str .. gen_pl_str .. a_gen_pl2_str .. gen_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[δοτική|<span title="πτῶσις δοτική" style="color:black;">'''''δοτική'''''</span>]]]=] ..
	"\n" .. a_dat_sg_str .. dat_sg_str .. a_dat_sg2_str .. dat_sg2_str .. a_dat_pl_str .. dat_pl_str .. a_dat_pl2_str .. dat_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;[[αιτιατική|<span title="πτῶσις αἰτιατική" style="color:black;">'''''αιτιατική'''''</span>]]]=] ..
	"\n" .. a_acc_sg_str .. acc_sg_str .. a_acc_sg2_str .. acc_sg2_str .. a_acc_pl_str .. acc_pl_str .. a_acc_pl2_str .. acc_pl2_str .. [=[|-
| style="background:]=] .. c_3 ..
	[=[; text-align:right;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[κλητική|<span title="πτῶσις κλητική" style="color:black; font-size:90%;">'''''κλητική'''''</span>]] [[ὦ|<span style="color:black;">ὦ</span>]]!]=] ..
	"\n" .. a_voc_sg_str .. voc_sg_str .. a_voc_sg2_str .. voc_sg2_str .. a_voc_pl_str .. voc_pl_str .. a_voc_pl2_str .. voc_pl2_str .. [=[|-
! style="background:]=] .. c_3 .. [=[; border-top:1px solid ]=] .. c_4 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:center; font-size:90%; line-height:100%;" align="center"| &nbsp; ]=] ..
	"\n" .. du_title_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:85%; line-height:100%;"|  <span title="πτώσεις ὀνομαστικὴ, αἰτιατική καὶ κλητική" style="color:black;">''ονομ-αιτ-κλ''</span>]=] ..
	"\n" .. a_nom_du_str .. nom_du_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:85%; line-height:100%;"| <span title="πτώσεις γενικὴ καὶ δοτική" style="color:black;">''γεν-δοτ''</span>]=] ..
	"\n" .. a_gen_du_str .. gen_du_str .. paratirisi .. appendix .. [=[|}]=]
	
	else -- no extratitle_str
		
    output = [=[{| ]=] .. table_style1 .. [=[
|-
| style="background:]=] .. c_1 .. [=[; border-right:1px solid ]=] .. c_2 ..
	[=[; text-align:center; font-size:90%;" align="center"| &darr;&nbsp;''πτώσεις'' ]=] ..
	"\n" .. sg_title_str .. sg2_title_str .. pl_title_str .. pl2_title_str .. stem_line .. subtitle .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| [[ονομαστική|<span title="πτῶσις ὀνομαστική" style="color:black;">'''''ονομαστική'''''</span>]]]=] ..
	"\n" .. a_nom_sg_str .. nom_sg_str .. a_nom_sg2_str .. nom_sg2_str .. a_nom_pl_str .. nom_pl_str .. a_nom_pl2_str .. nom_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[γενική|<span title="πτῶσις γενική" style="color:black;">'''''γενική'''''</span>]]]=] ..
	"\n" .. a_gen_sg_str .. gen_sg_str .. a_gen_sg2_str .. gen_sg2_str .. a_gen_pl_str .. gen_pl_str .. a_gen_pl2_str .. gen_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[δοτική|<span title="πτῶσις δοτική" style="color:black;">'''''δοτική'''''</span>]]]=] ..
	"\n" .. a_dat_sg_str .. dat_sg_str .. a_dat_sg2_str .. dat_sg2_str .. a_dat_pl_str .. dat_pl_str .. a_dat_pl2_str .. dat_pl2_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:90%;"| &nbsp;&nbsp;&nbsp;&nbsp;[[αιτιατική|<span title="πτῶσις αἰτιατική" style="color:black;">'''''αιτιατική'''''</span>]]]=] ..
	"\n" .. a_acc_sg_str .. acc_sg_str .. a_acc_sg2_str .. acc_sg2_str .. a_acc_pl_str .. acc_pl_str .. a_acc_pl2_str .. acc_pl2_str .. [=[|-
| style="background:]=] .. c_3 ..
	[=[; text-align:right;"| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[κλητική|<span title="πτῶσις κλητική" style="color:black; font-size:90%;">'''''κλητική'''''</span>]] [[ὦ|<span style="color:black;">ὦ</span>]]!]=] ..
	"\n" .. a_voc_sg_str .. voc_sg_str .. a_voc_sg2_str .. voc_sg2_str .. a_voc_pl_str .. voc_pl_str .. a_voc_pl2_str .. voc_pl2_str .. [=[|-
! style="background:]=] .. c_3 .. [=[; border-top:1px solid ]=] .. c_4 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:center; font-size:90%; line-height:100%;" align="center"| &nbsp; ]=] ..
	"\n" .. du_title_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:85%; line-height:100%;"|  <span title="πτώσεις ὀνομαστικὴ, αἰτιατική καὶ κλητική" style="color:black;">''ονομ-αιτ-κλ''</span>]=] ..
	"\n" .. a_nom_du_str .. nom_du_str .. [=[|-
| style="background:]=] .. c_3 .. [=[; border-bottom:1px solid ]=] .. c_4 ..
	[=[; text-align:right; font-size:85%; line-height:100%;"| <span title="πτώσεις γενικὴ καὶ δοτική" style="color:black;">''γεν-δοτ''</span>]=] ..
	"\n" .. a_gen_du_str .. gen_du_str .. paratirisi .. appendix .. [=[|}]=]
	end -- close extratitle_str

	end -- close output if dual exists
	
--------------------------------------------------------------------------
--                   4. Categories / Κατηγορίες                         --
--------------------------------------------------------------------------
-- κατηγορία κλίσης = the PartOfSpeech (plus as ProperNouns, Surnames etc)
-- τύπος = the catchword of the category in quotation marks
	-- may be τύπος=-
-- κατ = overrides τύπος
-- υποκατ = (subcatetory) plus another general category added
-- ? lang=kath??
	local page = mw.title.getCurrentTitle()
    page.name = page.text:match( "^%s*(.-)%s*$" )
if page.namespace == 0 then	-- Categories work only in MAIN namespace
	
-- nocat= 
if (args['nocat'] ~= '' and args['nocat'] ~= nil) or (args['00'] ~= '' and args['00'] ~= nil) then
	output = output
else

    	if args['κατηγορία'] ~= '' and args['κατηγορία'] ~= nil then -- free text for Category
    		output = output .. '[[Κατηγορία:' .. args['κατηγορία'] .. ']]'
    	else
			-- special categories (irregulars) --perhaps not needed
			if args['ανώμ'] == '1' then -- βλ. και ανώμ+
				output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα (' .. lang_name ..')]]'
				if args['αρσ'] == '1' and args['ανώμ'] == '1' then
					output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα αρσενικά (' .. lang_name ..')]]'
				elseif args['θηλ'] == '1' and args['ανώμ'] == '1' then
					output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα θηλυκά (' .. lang_name ..')]]'
				elseif args['ουδ'] == '1' and args['ανώμ'] == '1' then
					output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα ουδέτερα (' .. lang_name ..')]]'
				elseif args['αθ'] == '1' and args['ανώμ'] == '1' then
					output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα κοινού γένους (' .. lang_name ..')]]'			
				end
			else
    			-- param κατ= για δημιουργία κατηγοριών που συμπληρώνει ο συντάκτης - editor creates Categories ad libitum
    			-- Υπερισχύει του 'τύπος' - It overrides 'τύπος'
    			cat_decl = args['κατηγορία κλίσης'] or 'Ουσιαστικά'
    			typos = args['τύπος'] or args['τύπος0'] or args['κατ'] or ''
    			if args['τύπος'] == '-' then output = output -- control category:  [[:Κατηγορία:Ουσιαστικά που κλίνονται όπως το '' (' .. lang_name ..')]]'
    			else
    	-- ############### change this to override			
    			if args['κατ'] ~= '' and args ['κατ'] ~= nil then
    				typos = args['κατ']		-- check [[ἀντίκοιλον]]
					output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ")]]"
   				-- ο τύπος0 ΧΩΡΙΣ αποστρόφους (χρειάζεται όταν η φράση συνεχίζεται. παράδειγμα: ??
   				-- αν χρειαστούν ΔΥΟ παρόμοια, μπορούμε να χρησιμοποιήσουμε το args['υποκατ']
   				elseif args['τύπος0'] ~= '' and args['τύπος0'] ~= nil then
   					typos = args['τύπος0']
   					output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το " .. typos .. "' (" .. lang_name .. ")]]"
   					else
   					typos = args['τύπος']
-- ΥποΚατηγορίες για α, α2 / make subcategories for numbers
cat_decl = args['κατηγορία κλίσης'] or 'Ουσιαστικά'
	if args['α'] == 'εν' or args['α'] == 'ενδ' and (args['κατ'] == '' or args['κατ'] == nil) then
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' χωρίς πληθυντικό (" .. lang_name .. ")]]"
	elseif args['α'] == 'πλ' or args['α'] == 'πλδ' and (args['κατ'] == '' or args['κατ'] == nil)  then
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' χωρίς ενικό (" .. lang_name .. ")]]"
	elseif args['α2'] == 'εν' or args['α2'] == 'ενδ'  and (args['κατ'] == '' or args['κατ'] == nil)  then
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' στον ενικό (" .. lang_name .. ")]]"
	elseif args['α2'] == 'πλ' or args['α2'] == 'πλδ'  and (args['κατ'] == '' or args['κατ'] == nil)  then
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' στον πληθυντικό (" .. lang_name .. ")]]"
	else
        --η γλώσσα στην κατηγορία είναι απαραίτητη αν υπάρχουν ίδιοι "τύποι" σε διαφορετικές γλώσσες.
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' (" .. lang_name .. ")]]"

	end -- close typos=-
	-- plus exceptions
		if args['εξ'] == '1' or args['εξαίρεση'] == '1' then -- check [[δεσπότης]] [[Σουσάννα]]
		output = output .. '[[Κατηγορία:' .. cat_decl .. " που κλίνονται όπως το '" .. typos .. "' εξαιρέσεις (" .. lang_name .. ")]]"
		end
end -- close subcategories

    			end -- close 'κατ'
        	
-- κλίσεις 1, 2, 3 & βλ. ανώμ=1 & ανώμ+
	if args['κλίση'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2αττ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αττικόκλιτα (' .. lang_name .. ')]]' end
	if args['κλίση'] == '3' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης (' .. lang_name .. ')]]' end
-- κλίσεις + αριθμός-- check [[ἐτησίαι]]
	if args['κλίση'] == '1' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '1' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2αττ' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αττικόκλιτα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2αττ' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αττικόκλιτα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2αττ' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αττικόκλιτα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '3' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '3' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '3' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης χωρίς πληθυντικό (' .. lang_name .. ')]]' end

	if args['κλίση'] == '1' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '1' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2αττ' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αττικόκλιτα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2αττ' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αττικόκλιτα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '2αττ' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αττικόκλιτα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '3' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '3' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['κλίση'] == '3' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης χωρίς ενικό (' .. lang_name .. ')]]' end	
-- γένος + κλίση  //  και κοινού γένους (τα διπλού γένους ο/η άνθρωπος)
	if args['αρσ'] == '1' and args['κλίση'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης αρσενικά (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης θηλυκά (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and args['κλίση'] == '2' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αρσενικά (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '2' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης θηλυκά (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and args['κλίση'] == '2' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης ουδέτερα (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and args['κλίση'] == '2' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης κοινού γένους (' .. lang_name .. ')]]' end
	if args['θο'] == '1' and args['κλίση'] == '2' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης θηλυκά ή ουδέτερα (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and args['κλίση'] == '2αττ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αρσενικά αττικόκλιτα (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '2αττ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης θηλυκά αττικόκλιτα (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and args['κλίση'] == '2αττ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης ουδέτερα αττικόκλιτα (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and args['κλίση'] == '2αττ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης κοινού γένους αττικόκλιτα (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and args['κλίση'] == '3' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης αρσενικά (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '3' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης θηλυκά (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and args['κλίση'] == '3' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης ουδέτερα (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and args['κλίση'] == '3' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης κοινού γένους (' .. lang_name .. ')]]' end
-- γένος + κλίση + αριθμός -- check [[ἐτησίαι]]
	if args['αρσ'] == '1' and args['κλίση'] == '1' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης αρσενικά χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '1' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης θηλυκά χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and args['κλίση'] == '2' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αρσενικά χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '2' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης θηλυκά χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and args['κλίση'] == '2' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης ουδέτερα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and args['κλίση'] == '2' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης κοινού γένους χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['θο'] == '1' and args['κλίση'] == '2' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης θηλυκά ή ουδέτερα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and args['κλίση'] == '2αττ' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αρσενικά αττικόκλιτα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '2αττ' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης θηλυκά αττικόκλιτα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and args['κλίση'] == '2αττ' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης ουδέτερα αττικόκλιτα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and args['κλίση'] == '2αττ' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης κοινού γένους αττικόκλιτα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and args['κλίση'] == '3' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης αρσενικά χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '3' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης θηλυκά χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and args['κλίση'] == '3' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης ουδέτερα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and args['κλίση'] == '3' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης κοινού γένους χωρίς πληθυντικό (' .. lang_name .. ')]]' end

	if args['αρσ'] == '1' and args['κλίση'] == '1' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης αρσενικά χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '1' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 1ης κλίσης θηλυκά χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and args['κλίση'] == '2' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αρσενικά χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '2' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης θηλυκά χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and args['κλίση'] == '2' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης ουδέτερα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and args['κλίση'] == '2' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης κοινού γένους χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['θο'] == '1' and args['κλίση'] == '2' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης θηλυκά ή ουδέτερα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and args['κλίση'] == '2αττ' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης αρσενικά αττικόκλιτα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '2αττ' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης θηλυκά αττικόκλιτα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and args['κλίση'] == '2αττ' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης ουδέτερα αττικόκλιτα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and args['κλίση'] == '2αττ' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 2ης κλίσης κοινού γένους αττικόκλιτα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and args['κλίση'] == '3' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης αρσενικά χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and args['κλίση'] == '3' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης θηλυκά χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and args['κλίση'] == '3' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης ουδέτερα χωρίς ενικό (' .. lang_name .. ')]]' end	
	if args['αθ'] == '1' and args['κλίση'] == '3' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' 3ης κλίσης κοινού γένους χωρίς ενικό (' .. lang_name .. ')]]' end	

    		end -- close irregulars
    	end -- close free text κατηγορία
    	
		-- param υποκατ (subcategory) για δημιουργία συνοδευτικών γενικών κατηγοριών (όπως:... χωρίς πληθυντικό)
		-- ΔΕΝ υπερισχύει. Προστίθεται στις υπάρχουσες Κατηγορίες. - it does NOT override 'τύπος' (Παράδειγμα: [[πλούτος]]: προσθέτει την Κατ.Ουσιαστικά αρσενικά + Κατ.που κλίνονται όπως 'πλούτος')
		cat_decl = args['κατηγορία κλίσης'] or 'Ουσιαστικά'
		if args['υποκατ'] ~= '' and args ['υποκατ'] ~= nil then
			output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ'] .. ' (' .. lang_name .. ')]]'
		end
		if args['υποκατ2'] ~= '' and args ['υποκατ2'] ~= nil then
			output = output .. '[[Κατηγορία:' .. cat_decl .. ' ' .. args['υποκατ2'] .. ' (' .. lang_name .. ')]]'
		end

-- subtitles / Κατηγορίες για γένη
	if args['αρσ'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' αρσενικά (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' θηλυκά (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' ουδέτερα (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' κοινού γένους (' .. lang_name .. ')]]' end
	if args['θο'] == '1' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' θηλυκά ή ουδέτερα (' .. lang_name .. ')]]' end
-- γένος + αριθμός -- check [[ἐτησίαι]]
	if args['αρσ'] == '1' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' αρσενικά χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' θηλυκά χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' ουδέτερα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' κοινού γένους χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['θο'] == '1' and (args['α'] == 'εν' or args['α'] == 'ενδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' θηλυκά ή ουδέτερα χωρίς πληθυντικό (' .. lang_name .. ')]]' end
	if args['αρσ'] == '1' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' αρσενικά χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['θηλ'] == '1' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' θηλυκά χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['ουδ'] == '1' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' ουδέτερα χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['αθ'] == '1' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' κοινού γένους χωρίς ενικό (' .. lang_name .. ')]]' end
	if args['θο'] == '1' and (args['α'] == 'πλ' or args['α'] == 'πλδ') then output = output .. '[[Κατηγορία:' .. cat_decl .. ' θηλυκά ή ουδέτερα χωρίς ενικό (' .. lang_name .. ')]]' end

-- έξτρα: υποθετικό 
-- + and args['υποκατ'] == ''
	if args['αρσ'] ~= '1' and args['θηλ'] ~= '1' and args['αθ'] ~= '1' and args['ουδ'] ~= '1' and args['υποκατ'] == '' then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς γένος (' .. lang_name .. ')]]'
	end

-- numbers / Κατηγορίες για τον αριθμό
	if args['α'] == 'εν' or args['α'] == 'ενδ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς πληθυντικό (' .. lang_name .. ')]]' end		-- singularia tanutm
	if args['α'] == 'πλ' or args['α'] == 'πλδ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς ενικό (' .. lang_name .. ')]]' end			-- pluralia tantum
	if args['α2'] == 'εν' or args['α2'] == 'ενδ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' στον ενικό (' .. lang_name .. ')]]' end			-- mostly in the singular
	if args['α2'] == 'πλ' or args['α2'] == 'πλδ' then output = output .. '[[Κατηγορία:' .. cat_decl .. ' στον πληθυντικό (' .. lang_name .. ')]]' end		-- mostly in the plural

-- γενικές: αν εμφανίζεται ΜΟΝΟ στον αντίθετο αριθμό, να μην εισάγεται στην Κατηγορία
-- βλ. και επιμέρους functions όπου υπάρχει αυτή η σύμβαση
-- όπως (...) ΜΑΛΛΟΝ μόνον για νέα ελληνικά
	if args['γε'] == '-' then
		if args['α'] ~= 'πλ' and args['α2'] ~= 'πλ' then
			output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς γενική ενικού (' .. lang_name .. ')]]'
		end
	end
-- όταν υπάρχουν 2 πληθυντικοί αλλά λείπει η πρώτη ΜΑΛΛΟΝ μόνον για νέ αλληνικά
	if args['γπ'] == '-' and args['γπ2'] == nil then 
		if args['α'] ~= 'εν' and args['α2'] ~= 'εν' then
			output = output .. '[[Κατηγορία:' .. cat_decl .. ' χωρίς γενική πληθυντικού (' .. lang_name .. ')]]'
		end
	end

-- see param group Section:NOTES, args['ομάδα'] Adding here, its Category
	local group = args['ομάδα']	or ''	-- need to write it AGAIN HERE
	if group ~= '' and group ~= nil then
		output = output .. "[[Κατηγορία:Ουσιαστικά που κλίνονται όπως η ομάδα '" .. group .. "' (" .. lang_name .. ')]]'
	end
	
	
-- plus, see above,  args['εξ'] == '1' creates Κατηγορία:..... εξαιρέσεις

-- plus, if second column is added for a) second declension or b) for dialectal forms
	if args['υπότιτλος-εν2'] ~= '' and args['υπότιτλος-εν2'] ~= nil then 
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' με διαλεκτικούς τύπους στον πίνακα κλίσης (' .. lang_name .. ')]]'
	end
	if args['υπότιτλος-πλ2'] ~= '' and args['υπότιτλος-πλ2'] ~= nil then
		output = output .. '[[Κατηγορία:' .. cat_decl .. ' με διαλεκτικούς τύπους στον πίνακα κλίσης (' .. lang_name .. ')]]'
	end
	
-- free EXTRA category for nouns of other groups which are also irregular
	if args['ανώμ+'] == '1' then -- βλ. και ανώμ -- [[αἶρα]]
			output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα (' .. lang_name ..')]]'
			if args['αρσ'] == '1' and args['ανώμ+'] == '1' then
				output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα αρσενικά (' .. lang_name ..')]]'
			elseif args['θηλ'] == '1' and args['ανώμ+'] == '1' then
				output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα θηλυκά (' .. lang_name ..')]]'
			elseif args['ουδ'] == '1' and args['ανώμ+'] == '1' then
				output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα ουδέτερα (' .. lang_name ..')]]'
			elseif args['αθ'] == '1' and args['ανώμ+'] == '1' then
				output = output .. '[[Κατηγορία:Ουσιαστικά ανώμαλα κοινού γένους (' .. lang_name ..')]]'	
			end
	end
	
-- ======= EXTRA CATEGORIES: zero is preserved for the module ONLY, not for editor
-- free category, ελεύθερη κατηγορία
	if args['κατηγ0'] ~= '' and args['κατηγ0'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ0'] .. ' (' .. lang_name .. ')]]'
	end

	if args['κατηγ'] ~= '' and args['κατηγ'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ'] .. ' (' .. lang_name .. ')]]'
	end
	if args['κατηγ2'] ~= '' and args['κατηγ2'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['κατηγ2'] .. ' (' .. lang_name .. ')]]'
	end
	
-- free extra category, NO LANGUAGE HERE no restrictions, write free text -- -- test Template [[λύσας]]
	if args['cat-extra0'] ~= '' and args['cat-extra0'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra0'] .. ']]'
	end
	if args['cat-extra'] ~= '' and args['cat-extra'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra'] .. ']]'
	end
	if args['cat-extra2'] ~= '' and args['cat-extra2'] ~= nil then
			output = output .. '[[Κατηγορία:' .. args['cat-extra2'] .. ']]'
	end

	
end -- close nocat	
end -- close 'if namespace'


return output -- close fulltable

end




----------------------------------------------------------------------------------------
--    GENERAL PATTERNS of DECLENSIONS  / ΜΗΤΡΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΚΛΙΣΕΩΝ
-----------------------------------------------------------------------------------------

--------------------------------5. DECL--------------------------------------
-- decl - it creates functions for specific declensions at the function pages
-- otherwise, it is EXACTLY like free
-----------------------------------------------------------------------------
decl = function(args)	-- creates functions at the /function page

-- all the declension parameters & functions: ======================
require ('Module:yy/param').param (args)

------------
return fulltable(args)
end




--------------------------------------------------------------------------
--                   CREATE TEMPLATE with all parameters             --
--------------------------------------------------------------------------
-- [[Πρότυπο:grc-nouns-decl]]

export.free = function(frame)
--local args = frame:getParent().args	-- for Templates
local args = frame.args		-- invoke

-- all the declension parameters & functions: ======================
require ('Module:yy/param').param (args)

------------
return fulltable(args)
end


--------------------------------------------------------------------------
--           SPECIFIC TEMPLAGES / ΕΠΙΜΕΡΟΥΣ ΠΡΟΤΥΠΑ                     --
--------------------------------------------------------------------------
-- =================== α...ω ======================= --

-- see pages /1, /2 etc

return export