2010-05-27 2 views
2

Я ищу программу для рекурсивно встраивания всех команд \input{} в файл LaTeX. «Рекурсивно», я имею в виду делать inlining итеративно, пока команда \input{} не останется в финальном файле LaTeX.Вложение команды LaTeX input

Я уже столкнулся с пакетом flatten. Но по какой-то причине мой дистрибутив TeXLive не устанавливает его. Когда я выполняю команду sudo tlmgr show flatten, я получаю сообщение об ошибке: tlmgr: cannot find flatten. Итак, я ищу альтернативные инструменты, которые более стандартизированы и проще в установке.

+0

Я не понимаю. Вы хотите создать новый файл, где каждый экземпляр '\ input {FILE}' был заменен содержимым FILE? Этот вопрос может быть лучше обобщен и помечен 'bash' или' shell-scripting' и т. Д. (Если вы это сделаете, вы можете просто вставить кого-нибудь, вставляющего содержимое 'flatten' в конце концов!) – Geoff

+0

@Geoff: Thanks для ваших предложений. Я добавил больше тегов, чтобы привлечь больше внимания. – reprogrammer

+1

@Geoff: будьте осторожны с предложением сценария оболочки. «Некоторые люди, столкнувшись с проблемой, думают:« Я знаю, я буду использовать регулярные выражения ». Теперь у них есть две проблемы ». - Джейми Завински –

ответ

6

Почему бы вам просто не скачать flatten от CTAN (ссылка, которую вы указали в вопросе) и установить его вручную?

EDIT: Примените следующий патч, чтобы исправить ошибки сборки.

commit 4d62b79c5145d2b5556487b483d92df797564a18 
Author: Ken Bloom <[email protected]> 
Date: Thu May 27 12:45:49 2010 -0500 

    fix build errors 

diff --git a/flatten.l b/flatten.l 
index 85ffee5..da12d2d 100644 
--- a/flatten.l 
+++ b/flatten.l 
@@ -62,6 +62,7 @@ char FILE_DATE[] = "October 1995"; 
    */ 


+#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 
@@ -641,7 +642,7 @@ FILE *f3; 
char *strsave(s) 
char *s;       /* string to be saved */ 
{ 
- char *p, *malloc(); 
+ char *p; 

    if ((p = malloc(strlen(s)+1)) != NULL) { 
     strcpy(p, s); 
@@ -834,4 +835,4 @@ void initialise_senv() 
    strcpy(path_sep," :;");    /* path seperators */ 
    dir_cat = '/';       /* directory catenation char */ 
    senv_debug = 0;      /* debugging off */ 
-}          /* end INITIALISE_SENV */ 
\ No newline at end of file 
+}          /* end INITIALISE_SENV */ 
diff --git a/getopt.c b/getopt.c 
index 5131cfa..b35cf51 100644 
--- a/getopt.c 
+++ b/getopt.c 
@@ -6,6 +6,7 @@ 
/* getopt() from Don Libes "Obfuscated C" */ 


+#include <string.h> 
#include <stdio.h> 

/* getopt() -- parse command line arguments */ 
@@ -21,10 +22,6 @@ 
     fprintf(stderr, s, (unsigned)strlen(s));\ 
     fprintf(stderr, errbuf, 2);} 

-extern int strcmp(); 
-extern char *strchr(); 
-extern int strlen(); 
- 
int opterr = 1; /* getopt prints errors if this is one */ 
int optind = 1; /* token pointer */ 
int optopt;  /* option character passed back to user */ 
diff --git a/srchenv.c b/srchenv.c 
index fa3e8d8..f8acd48 100644 
--- a/srchenv.c 
+++ b/srchenv.c 
@@ -4,6 +4,7 @@ 
/* strtol() from C standard library (not all compilers find this) */ 


+#include <string.h> 
#include <stdio.h> 
+0

Я мог бы сделать это, если никто не знает никаких альтернатив. – reprogrammer

+2

@reprogrammer: Вы можете выполнить эту задачу за 5 минут, если не будете ждать альтернатив. –

+0

@ Ken Bloom: Как я и ожидал, пакет сплющин не имеет высокого качества. Полагаю, именно поэтому он не был включен в дистрибутив TeXLive. Когда я пытаюсь сделать пакет, я получаю ошибки компиляции (см. Ошибки в http://drop.io/bcwnlwl) – reprogrammer

0

В качестве альтернативы вы можете использовать FLaP. Он поддерживает директивы \input и \include и поддерживает использование \includeonly. Кроме того, он перемещает графические файлы вокруг, так что полученный «объединенный» проект LaTeX содержится в одном плоском каталоге. Он поддерживает \graphicspath, \includesvg и обрабатывает изображения SVG, EPS и PDF.

Смежные вопросы