Update app.py
Browse files
app.py
CHANGED
@@ -213,7 +213,7 @@ def create_pdf(markdown_text, base_font_size, num_columns, add_space_before_numb
|
|
213 |
usable_width = page_width - 72
|
214 |
avg_line_chars = total_chars / total_lines if total_lines > 0 else 50
|
215 |
ideal_lines_per_col = 20
|
216 |
-
suggested_columns = max(
|
217 |
num_columns = num_columns if num_columns != 0 else suggested_columns
|
218 |
col_width = usable_width / num_columns
|
219 |
min_font_size = 6
|
@@ -492,33 +492,37 @@ with st.sidebar:
|
|
492 |
)
|
493 |
auto_columns = st.checkbox("AutoColumns", value=True)
|
494 |
|
495 |
-
|
|
|
|
|
|
|
496 |
current_markdown = st.session_state.markdown_content
|
497 |
lines = current_markdown.strip().split('\n')
|
498 |
-
|
499 |
for line in lines:
|
500 |
if line.strip():
|
501 |
word_count = len(line.split())
|
502 |
longest_line_words = max(longest_line_words, word_count)
|
503 |
-
if
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
|
|
509 |
else:
|
510 |
-
recommended_columns =
|
511 |
-
st.
|
512 |
-
|
513 |
-
|
|
|
514 |
|
515 |
-
column_options = [
|
516 |
num_columns = st.selectbox(
|
517 |
"Number of Columns",
|
518 |
options=column_options,
|
519 |
-
index=
|
520 |
)
|
521 |
-
num_columns = 0 if num_columns == "Auto" else int(num_columns)
|
522 |
st.info("Font size and columns adjust to fit one page.")
|
523 |
|
524 |
st.markdown("### ✍️ Edit Markdown")
|
|
|
213 |
usable_width = page_width - 72
|
214 |
avg_line_chars = total_chars / total_lines if total_lines > 0 else 50
|
215 |
ideal_lines_per_col = 20
|
216 |
+
suggested_columns = max(2, min(4, int(total_lines / ideal_lines_per_col) + 1))
|
217 |
num_columns = num_columns if num_columns != 0 else suggested_columns
|
218 |
col_width = usable_width / num_columns
|
219 |
min_font_size = 6
|
|
|
492 |
)
|
493 |
auto_columns = st.checkbox("AutoColumns", value=True)
|
494 |
|
495 |
+
# Calculate document stats
|
496 |
+
longest_line_words = 0
|
497 |
+
total_lines = 0
|
498 |
+
if 'markdown_content' in st.session_state:
|
499 |
current_markdown = st.session_state.markdown_content
|
500 |
lines = current_markdown.strip().split('\n')
|
501 |
+
total_lines = len([line for line in lines if line.strip()])
|
502 |
for line in lines:
|
503 |
if line.strip():
|
504 |
word_count = len(line.split())
|
505 |
longest_line_words = max(longest_line_words, word_count)
|
506 |
+
if auto_columns:
|
507 |
+
if longest_line_words > 38:
|
508 |
+
recommended_columns = 2
|
509 |
+
elif longest_line_words < 18 and total_lines < 20:
|
510 |
+
recommended_columns = 4
|
511 |
+
else:
|
512 |
+
recommended_columns = 3
|
513 |
else:
|
514 |
+
recommended_columns = 3
|
515 |
+
st.markdown(f"**Document Stats**")
|
516 |
+
st.write(f"- Longest Line: {longest_line_words} words")
|
517 |
+
st.write(f"- Total Lines: {total_lines}")
|
518 |
+
st.write(f"- Recommended Columns: {recommended_columns}")
|
519 |
|
520 |
+
column_options = [2, 3, 4]
|
521 |
num_columns = st.selectbox(
|
522 |
"Number of Columns",
|
523 |
options=column_options,
|
524 |
+
index=column_options.index(recommended_columns)
|
525 |
)
|
|
|
526 |
st.info("Font size and columns adjust to fit one page.")
|
527 |
|
528 |
st.markdown("### ✍️ Edit Markdown")
|