import pathlib import streamlit as st import streamlit.components.v1 as components from bs4 import BeautifulSoup with open("static/header.html", 'r', encoding='utf-8') as f: header_html = f.read() with open("static/header_style.css", 'r', encoding='utf-8') as f: header_style_css = f.read() with open("static/header_animate.js") as f: header_animate_js = f.read() with open("static/content_style.css", 'r', encoding='utf-8') as f: content_style_css = f.read() with open("static/meta.html", 'r', encoding='utf-8') as f: meta_html = f.read() GA_JS = """alert("Hello world!")""" # Insert the script in the head tag of the static template inside your virtual environement index_path = pathlib.Path(st.__file__).parent / "static" / "index.html" soup = BeautifulSoup(index_path.read_text(), features="lxml") if not soup.find(id='custom-js'): script_tag = soup.new_tag("script", id='custom-js') script_tag.string = GA_JS soup.head.append(script_tag) index_path.write_text(str(soup)) def make_header(): components.html(f"{header_html}", height=260) st.markdown(meta_html, unsafe_allow_html=True) st.markdown(f"", unsafe_allow_html=True) # apply css to the rest of the document st.markdown('''''', unsafe_allow_html=True) def content_title(title: str, vspace_before: int = 0, vspace_after: int = 0): st.markdown(f'
' f'{title}
', unsafe_allow_html=True) def content_text(text: str, vspace_before: int = 0, vspace_after: int = 0): st.markdown(f'
' f'{text}
', unsafe_allow_html=True) CITATIONS = {} def cite(tag): CITATIONS[tag] = len(CITATIONS) + 1 return f" [{CITATIONS[tag]}]"