![Создание пользовательского интерфейса для управления содержимым документа](https://rvso.com/image/353028/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B3%D0%BE%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D1%8B%D0%BC%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0.png)
Я ищу самый простой способ разрешить кому-то (например, не очень владеющему LaTeX) контролировать содержимое определенного документа. Чтобы дать больше контекста, я хочу создать коллекцию «основных» документов с одинаковым форматом, состоящую почти исключительно из различных комбинаций набора из примерно 30 «меньших» документов (каждый из них по сути является разделом или подразделом внутри «основных» документов). Важно отметить, что «меньшие» документы часто подвергаются небольшим обновлениям, поэтому они вызываются в «основных» документах из отдельных файлов (чтобы избежать необходимости вручную изменять множество «основных» документов при возникновении небольших изменений).
То, к чему я пришел на данный момент, — это общий «главный» документ, содержащий переключатели в преамбуле, которые управляют тем, какие «меньшие» документы появляются в «главном» документе. На данный момент все работает нормально, и единственный шаг для человека, создающего «главные» документы, — это прокомментировать « %
» перед \toggletrue
преамбулой, если он не хочет, чтобы этот конкретный «меньший» документ находился в «главном» документе, который он создает (например, ниже «TheFirstDocument» не появится в «главном» документе). Кроме того, то, что я написал ниже, конечно, не предназначено для компиляции (отсутствуют файлы и пакеты), это просто для демонстрации общего примера.
Мой вопрос в том, есть ли способ создать очень дружественный пользовательский интерфейс, где, возможно, человек, создающий "основные" документы, мог бы просто отметить флажки тех "меньших" документов, которые он хотел бы включить? Если это невозможно с самим LaTeX, есть ли у кого-нибудь предложения, как проще всего обратиться отсюда, чтобы добиться этого?
\documentclass{article}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Select Desired Documents %%%
\newtoggle{TheFirstDocument}
%\toggletrue{TheFirstDocument}
\newtoggle{TheSecondDocument}
\toggletrue{TheSecondDocument}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\iftoggle{TheFirstDocument}
{ExecuteMetaData[TheFirstDocument.tex]{tag}
}
{%nothing
}
\iftoggle{TheSecondDocument}
{ExecuteMetaData[TheSecondDocument.tex]{tag}
}
{%nothing
}
\end{document}
решение1
Половина ответа на LaTeX:
Во-первых, можно разделить Main.tex
на три файла:
InitMain.tex
содержит \documentcalss
, некоторые необходимые пакеты для второго файла и все \newtoggle
необходимое.
\documentclass{article}
\usepackage{etoolbox}
\newtoggle{TheFirstDocument}
\newtoggle{TheSecondDocument}
Второй файл ( Main_A.tex
) \input
s InitMain.tex
, затем содержит все \toggletrue
s , которые вам нужны и, наконец, \input
sMain.tex
\input{InitMain}
\toggletrue{TheFirstDocument}
%\toggletrue{TheSecondDocument}
\input{Main}
И Main.tex
может содержать дополнительные \usepackage
s и другие вещи, которые вам нужны. И, конечно, вы условно вводите сюда небольшие документы.
% additional preamble stuff
\begin{document}
\iftoggle{TheFirstDocument}
{\input{TheFirstDocument.tex}
}
{%nothing
}
\iftoggle{TheSecondDocument}
{\input{TheSecondDocument.tex}
}
{%nothing
}
\end{document}
Затем вам останется только скомпилировать Main_A.tex
, чтобы получить окончательный документ.
При этом пользователям нужно будет только редактировать небольшой файл Main_A.tex
, а у вас могут быть файлы и т. д. с различными настройками Main_B.tex
.Main_C.tex
Другая половина ответа зависит от операционной системы, доступных языков сценариев, навыков и многого другого. Вы можете написать сценарий, который читает Main_A.tex
, инициализирует флажки и, наконец, записывает новую версию с добавленными или удаленными %
знаками. Например: в Windows jscript может использоваться для создания GUI, подобного тому, который вы показали. Там вы даже можете добавить кнопку, которая вызывает, например, latexmk (никогда не использовал его) для создания конечного документа непосредственно из диалогового окна, при условии, что на компьютере установлен LaTeX.