diff --git a/scipost_django/journals/forms.py b/scipost_django/journals/forms.py
index 5dc20c62a1ad7b81d47ac1906cb8fe8cedda6c24..28c9184f24f4adb9171c528bcf532d891b67a6b6 100644
--- a/scipost_django/journals/forms.py
+++ b/scipost_django/journals/forms.py
@@ -612,6 +612,7 @@ class DraftPublicationForm(forms.ModelForm):
             "title",
             "author_list",
             "abstract",
+            "author_info_source",
             "acad_field",
             "specialties",
             "approaches",
@@ -625,6 +626,7 @@ class DraftPublicationForm(forms.ModelForm):
             "submission_date": forms.DateInput(attrs={"type": "date"}),
             "acceptance_date": forms.DateInput(attrs={"type": "date"}),
             "publication_date": forms.DateInput(attrs={"type": "date"}),
+            "author_info_source": forms.Textarea(attrs={"rows": 1, "placeholder": "Required for docx files! Add a tex-like file with authors and affiliation information."}),
         }
 
     def __init__(
@@ -667,6 +669,14 @@ class DraftPublicationForm(forms.ModelForm):
         else:
             self.fields["in_issue"].queryset = self.get_possible_issues()
             self.delete_secondary_fields()
+        
+        if self.submission: # For when creating the publication object.
+            repository = self.submission.production_stream.proofs_repository
+        else: # For when Updating the publication object.
+            repository = self.instance.proofs_repository
+        
+        if repository.fetch_tex():
+            self.fields["author_info_source"].required = False
 
     def get_possible_issues(self):
         issues = Issue.objects.filter(until_date__gte=timezone.now())
@@ -725,7 +735,7 @@ class DraftPublicationForm(forms.ModelForm):
         if do_prefill:
             self.first_time_fill()
             # We cannot trust the author associations ordered in Submission.
-            self.instance.reset_author_associations()
+            self.instance.reset_author_associations()                
         
         return self.instance
 
diff --git a/scipost_django/journals/migrations/0136_publication_author_info_source.py b/scipost_django/journals/migrations/0136_publication_author_info_source.py
new file mode 100644
index 0000000000000000000000000000000000000000..3f76951ab0f2fea442ab74813c6dc17859a2613c
--- /dev/null
+++ b/scipost_django/journals/migrations/0136_publication_author_info_source.py
@@ -0,0 +1,18 @@
+# Generated by Django 4.2.10 on 2024-09-02 13:31
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("journals", "0135_alter_publicationresource__type"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="publication",
+            name="author_info_source",
+            field=models.TextField(blank=True, null=True),
+        ),
+    ]
diff --git a/scipost_django/journals/models/publication.py b/scipost_django/journals/models/publication.py
index 503d4017cfa840741bb5fe59bd97e3b09580b57f..5016779bb970ba2b65aecd5596928ad43430f8e5 100644
--- a/scipost_django/journals/models/publication.py
+++ b/scipost_django/journals/models/publication.py
@@ -182,6 +182,7 @@ class Publication(models.Model):
     doideposit_needs_updating = models.BooleanField(default=False)
     citedby = models.JSONField(default=dict, blank=True, null=True)
     number_of_citations = models.PositiveIntegerField(default=0)
+    author_info_source = models.TextField(blank=True, null=True) # To handle docx files better.
 
     # Date fields
     submission_date = models.DateField(verbose_name="submission date")
@@ -618,6 +619,9 @@ class Publication(models.Model):
 
     @cached_property
     def tex_contents(self) -> str | None:
+        if self.author_info_source != "": # For docx files use author_info_source.
+            return self.author_info_source
+        
         return self.proofs_repository.fetch_tex()
 
     def construct_tex_author_info(self) -> tuple[list[str], list[list[int]]]:
diff --git a/scipost_django/production/models.py b/scipost_django/production/models.py
index ae05406e9a7eb2c40cc24496d0a7c24b7380a712..0ed51561c93f1b42cde62d2978c5e61e99a383a0 100644
--- a/scipost_django/production/models.py
+++ b/scipost_django/production/models.py
@@ -16,6 +16,7 @@ from django.db.models import Value
 from django.db.models.functions import Concat
 from django.conf import settings
 import gitlab
+import re
 
 from guardian.shortcuts import assign_perm, remove_perm
 
@@ -551,9 +552,6 @@ class ProofsRepository(models.Model):
         except:
             return None
 
-        publication: "Publication" = self.stream.submission.publications.first()
-        publication_filename = publication.doi_label.replace(".", "_") + ".tex"
-
         # Attempt to fetch the project from GitLab
         try:
             project = gl.projects.get(self.git_path)
@@ -562,6 +560,7 @@ class ProofsRepository(models.Model):
 
         # Attempt to fetch the publication file
         try:
+            publication_filename = [file["name"] for file in project.repository_tree() if re.findall("\d+(_\d+)*.tex", file["name"])][0]
             publication_file = project.files.get(
                 file_path=publication_filename, ref="main"
             )