diff --git a/home/src/main/resources/rdf/tbox/filegraph/text_structures.owl b/home/src/main/resources/rdf/tbox/filegraph/text_structures.owl
index b9e9fa5db..56294bb31 100644
--- a/home/src/main/resources/rdf/tbox/filegraph/text_structures.owl
+++ b/home/src/main/resources/rdf/tbox/filegraph/text_structures.owl
@@ -128,7 +128,7 @@
- elenphAritcle.ftl
+ compilation.ftl
Compilation
edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.CompilationGenerator
diff --git a/webapp/src/main/webapp/js/toc.js b/webapp/src/main/webapp/js/toc.js
new file mode 100644
index 000000000..3d46e7c75
--- /dev/null
+++ b/webapp/src/main/webapp/js/toc.js
@@ -0,0 +1,18 @@
+{
+ let content = document.getElementById("wrapper-content");
+ let toc = document.getElementById("TOC");
+ createTOC(content, toc);
+
+ function createTOC(content, toc){
+ if (toc === null){
+ alert("no TOC element found");
+ return;
+ }
+ if (content === null){
+ alert("no content element found");
+ return;
+ }
+
+ }
+
+}
diff --git a/webapp/src/main/webapp/templates/freemarker/compilation.ftl b/webapp/src/main/webapp/templates/freemarker/compilation.ftl
new file mode 100644
index 000000000..0bd10b6dd
--- /dev/null
+++ b/webapp/src/main/webapp/templates/freemarker/compilation.ftl
@@ -0,0 +1,353 @@
+<#-- $This file is distributed under the terms of the license in LICENSE$ -->
+
+<#-- Individual profile page template for foaf:Person individuals -->
+
+<#include "individual-setup.ftl">
+${scripts.add('')}
+${scripts.add('')}
+${scripts.add('')}
+<#import "individual-qrCodeGenerator.ftl" as qr>
+<#import "lib-vivo-properties.ftl" as vp>
+<#include "text-lib.ftl">
+
+<#--Number of labels present-->
+<#if !labelCount??>
+ <#assign labelCount = 0 >
+#if>
+<#--Number of available locales-->
+<#if !localesCount??>
+ <#assign localesCount = 1>
+#if>
+<#--Number of distinct languages represented, with no language tag counting as a language, across labels-->
+<#if !languageCount??>
+ <#assign languageCount = 1>
+#if>
+<#assign qrCodeIcon = "qr-code-icon.png">
+<#assign visRequestingTemplate = "foaf-person-2column">
+<#--add the VIVO-ORCID interface -->
+<#include "individual-orcidInterface.ftl">
+
+
+ <#include "individual-adminPanel.ftl">
+
+
+ <#include "individual-positions.ftl">
+
+
+ <#if !editable>
+
+ #if>
+ <#include "individual-overview.ftl">
+
+
+ <#include "individual-researchAreas.ftl">
+
+
+ <#include "individual-geographicFocus.ftl">
+
+ <#include "individual-openSocial.ftl">
+
+
+
+<#assign nameForOtherGroup = "${i18n().other}">
+<#if !editable>
+ <#-- We don't want to see the first name and last name unless we might edit them. -->
+ <#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/firstName")!>
+ <#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/lastName")!>
+#if>
+
+ Раскрыть статью
+
+
+
+
+<#assign firstPub = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#firstPublication")!>
+ <#if firstPub.statements?has_content && firstPub.type == "data">
+
+
Первая публикация статьи
+
+ <@p.dataPropertyList firstPub editable />
+
+#if>
+
+<#if authors??>
+ <#list authors as author>
+
+ <#if author.authorFamily??>${author.authorFamily} #if><#if author.authorGivenName??>${author.authorGivenName}#if>
+ <#if author.orgName??>
+ ${author.orgName}
+ #if>
+ <#if author.orgAddress??>
+
+ Адрес организации: <#if author.orgPostalCode??>${author.orgPostalCode}, #if>${author.orgAddress}
+ #if>
+
+
+ #list>
+#if>
+
+<@showRubrics />
+
+
+ <#list paths as order>
+ <#-- ${order.path} -->
+ <#list excerpts as excerptProperties>
+ <#if order.elenphExcerpt?has_content && excerptProperties.elenphExcerpt == order.elenphExcerpt>
+ <#assign excerptText = excerptProperties.htmlContent >
+ <#assign excerptTextName = excerptProperties.htmlLabel >
+ <#assign worksCounter = excerptProperties.worksCounter >
+ <#assign bibliographyCounter = excerptProperties.bibliographyCounter >
+ #if>
+ #list>
+
+ <#if excerptText?? && excerptTextName?? && excerptTextName?has_content && excerptText?has_content>
+
${excerptTextName}
+
+ ${excerptText}
+ <#if works?? && works?has_content && worksCounter?number > 0 >
+
+
Работы
+
+ <#list works as work>
+ <#if work.elenphExcerpt == order.elenphExcerpt >
+
+ #if>
+ #list>
+
+
+ #if>
+
+ <#if bibliography?? && bibliography?has_content && bibliographyCounter?number > 0>
+
+
Литература
+
+ <#list bibliography as one_bibliography>
+ <#if one_bibliography.elenphExcerpt == order.elenphExcerpt >
+
+
${one_bibliography.bibliography}
+
+ #if>
+ #list>
+
+
+ #if>
+
+ #if>
+
<#-- articleExcerpt -->
+ #list>
+
+ <#if works?? && works?has_content>
+
+
Работы
+
+ <#list works as work>
+
+ #list>
+
+
+ #if>
+
+ <#if bibliography?? && bibliography?has_content>
+
+
Литература
+
+ <#list bibliography as one_bibliography>
+
+
${one_bibliography.bibliography}
+
+ #list>
+
+
+ #if>
+
+
+<#if authors??>
+ <#list authors as author>
+
+ <#if author.authorFamily??>${author.authorFamily}#if> <#if author.authorInitials??>${author.authorInitials}#if>
+
+ #list>
+#if>
+
+
+ <#-- <@dumpAll /> -->
+
+ <#assign selectedTemplate = "individual--foaf-person-2column.ftl" >
+
+<#if profilePageTypesEnabled >
+ <#assign profilePageType = profileType >
+
+ <#-- targetedView takes precedence over the profilePageType. -->
+
+ <#if targetedView?has_content>
+ <#if targetedView != "standardView">
+ <#assign selectedTemplate = "individual--foaf-person-quickview.ftl" >
+ #if>
+ <#elseif profilePageType == "quickView" >
+ <#assign selectedTemplate = "individual--foaf-person-quickview.ftl" >
+ #if>
+#if>
+<#-- <#include "individual-property-group-tabs.ftl"> -->
+
+<#if profilePageTypesEnabled && (targetedView?has_content || user.loggedIn) >
+
+
+
+
+
+#if>
+
+
+
+<#if !editable>
+
+#if>
+
+<#assign rdfUrl = individual.rdfUrl>
+
+<#if rdfUrl??>
+
+#if>
+
+
+${stylesheets.add(' ',
+ ' ',
+ ' ',
+ ' ',
+ ' ')}
+
+${headScripts.add('',
+ '',
+ '',
+ '')}
+
+${scripts.add('',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '',
+ '')}
+
+
diff --git a/webapp/src/main/webapp/templates/freemarker/text-lib.ftl b/webapp/src/main/webapp/templates/freemarker/text-lib.ftl
new file mode 100644
index 000000000..f88a661d4
--- /dev/null
+++ b/webapp/src/main/webapp/templates/freemarker/text-lib.ftl
@@ -0,0 +1,38 @@
+
+<#macro showRubrics>
+ <#assign currentRubrics = propertyGroups.pullProperty("https://iph.ras.ru/relationships#belongsTo")!>
+ <#if currentRubrics?? && currentRubrics?has_content>
+ Относится к рубрикам: <@p.addLink currentRubrics editable /> <@p.verboseDisplay currentRubrics />
+ <#if rubrics?? && rubrics?has_content>
+ <#list rubrics as rubric>
+
+ ${rubric.rubricName}
+
+ #list>
+ #if>
+
+ #if>
+#macro>
+
+<#macro showIssue>
+ <#assign issue = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#issue")!>
+ <#if issue.statements?has_content && issue.type == "data">
+
+
Входит в выпуск
+ <@p.dataPropertyList issue editable />
+
+ #if>
+#macro>
+
+<#macro showYear>
+ <#assign year = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#year")!>
+ <#if year.statements?has_content && year.type == "data">
+
+
Год
+ <@p.dataPropertyList year editable />
+
+ #if>
+#macro>
+<#macro showWorks works >
+
+#macro>
\ No newline at end of file