euler314 commited on
Commit
f59c14c
·
verified ·
1 Parent(s): 5766149

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -29
app.py CHANGED
@@ -17,7 +17,13 @@ def is_pdflatex_installed():
17
  def latex_to_pdf(latex_code):
18
  # Check if pdflatex is installed
19
  if not is_pdflatex_installed():
20
- return None, "", "Error: pdflatex is not installed or not in PATH. Check Dockerfile configuration."
 
 
 
 
 
 
21
 
22
  with tempfile.TemporaryDirectory() as temp_dir:
23
  temp_path = Path(temp_dir)
@@ -29,13 +35,9 @@ def latex_to_pdf(latex_code):
29
  f.write(latex_code)
30
 
31
  try:
32
- # Print the command being run for debugging
33
- cmd = ["pdflatex", "-interaction=nonstopmode", "-output-directory", temp_dir, str(tex_file)]
34
- st.write(f"Running command: {' '.join(cmd)}")
35
-
36
- # Run pdflatex with full path if needed
37
  process = subprocess.run(
38
- cmd,
39
  capture_output=True,
40
  text=True
41
  )
@@ -48,8 +50,7 @@ def latex_to_pdf(latex_code):
48
  else:
49
  return None, process.stdout, process.stderr
50
  except Exception as e:
51
- return None, "", f"Error executing pdflatex: {str(e)}"
52
-
53
 
54
  # Function to display PDF
55
  def display_pdf(pdf_data):
@@ -301,28 +302,17 @@ st.markdown("""
301
  </style>
302
  """, unsafe_allow_html=True)
303
 
304
- # JavaScript for copying commands to editor
305
- st.markdown("""
306
- <script>
307
- function copyToEditor(text) {
308
- const textareas = document.getElementsByTagName('textarea');
309
- if (textareas.length > 0) {
310
- const editor = textareas[0];
311
- const start = editor.selectionStart;
312
- const end = editor.selectionEnd;
313
- const value = editor.value;
314
- editor.value = value.substring(0, start) + text + value.substring(end);
315
- editor.selectionStart = editor.selectionEnd = start + text.length;
316
- editor.focus();
317
- }
318
- }
319
- </script>
320
- """, unsafe_allow_html=True)
321
-
322
  # Main application
323
  def main():
324
  st.title("LaTeX Editor & PDF Compiler")
325
 
 
 
 
 
 
 
 
326
  # Create layout with sidebar
327
  col1, col2 = st.columns([3, 2])
328
 
@@ -431,13 +421,13 @@ def main():
431
  for category, commands in latex_commands.items():
432
  with st.expander(category):
433
  for cmd, desc in commands.items():
434
- st.markdown(f"<div class='latex-command' onclick=\"copyToEditor('{cmd}')\">{cmd}</div> - {desc}", unsafe_allow_html=True)
435
 
436
  with tabs[1]:
437
  for category, packages in latex_packages.items():
438
  with st.expander(category):
439
  for pkg, desc in packages.items():
440
- st.markdown(f"<div class='latex-command' onclick=\"copyToEditor('{pkg}')\">{pkg}</div> - {desc}", unsafe_allow_html=True)
441
 
442
  if __name__ == "__main__":
443
  main()
 
17
  def latex_to_pdf(latex_code):
18
  # Check if pdflatex is installed
19
  if not is_pdflatex_installed():
20
+ st.error("pdflatex not found. Debug info:")
21
+ st.code(f"PATH: {os.environ.get('PATH')}")
22
+ result = subprocess.run(["which", "pdflatex"], capture_output=True, text=True)
23
+ st.code(f"which pdflatex: {result.stdout} {result.stderr}")
24
+ result = subprocess.run(["ls", "-la", "/usr/bin/pdflatex"], capture_output=True, text=True)
25
+ st.code(f"ls -la /usr/bin/pdflatex: {result.stdout} {result.stderr}")
26
+ return None, "", "Error: pdflatex is not installed or not in PATH."
27
 
28
  with tempfile.TemporaryDirectory() as temp_dir:
29
  temp_path = Path(temp_dir)
 
35
  f.write(latex_code)
36
 
37
  try:
38
+ # Run pdflatex to compile the LaTeX file
 
 
 
 
39
  process = subprocess.run(
40
+ ["pdflatex", "-interaction=nonstopmode", "-output-directory", temp_dir, str(tex_file)],
41
  capture_output=True,
42
  text=True
43
  )
 
50
  else:
51
  return None, process.stdout, process.stderr
52
  except Exception as e:
53
+ return None, "", str(e)
 
54
 
55
  # Function to display PDF
56
  def display_pdf(pdf_data):
 
302
  </style>
303
  """, unsafe_allow_html=True)
304
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  # Main application
306
  def main():
307
  st.title("LaTeX Editor & PDF Compiler")
308
 
309
+ # Display installation status
310
+ if not is_pdflatex_installed():
311
+ st.warning("⚠️ LaTeX is not installed correctly. The PDF compilation feature will not work.")
312
+ st.info("For Hugging Face Spaces, make sure you have a packages.txt file with the necessary LaTeX packages.")
313
+ else:
314
+ st.success("✅ LaTeX is installed and ready to use!")
315
+
316
  # Create layout with sidebar
317
  col1, col2 = st.columns([3, 2])
318
 
 
421
  for category, commands in latex_commands.items():
422
  with st.expander(category):
423
  for cmd, desc in commands.items():
424
+ st.markdown(f"<div class='latex-command'>{cmd}</div> - {desc}", unsafe_allow_html=True)
425
 
426
  with tabs[1]:
427
  for category, packages in latex_packages.items():
428
  with st.expander(category):
429
  for pkg, desc in packages.items():
430
+ st.markdown(f"<div class='latex-command'>{pkg}</div> - {desc}", unsafe_allow_html=True)
431
 
432
  if __name__ == "__main__":
433
  main()