Макрос: как применить те же правки внутри {} во внешних файлах с помощью команды в LaTeX

Макрос: как применить те же правки внутри {} во внешних файлах с помощью команды в LaTeX

Я использую Overleaf для редактирования некоторых файлов.

Можно ли в LaTeX задать команду, которая связывает части файла с другим? Я имею в виду копирование всего содержимого файла {}в другой внешний файл в том же проекте (применить все изменения там, чтобы мне не нужно было копировать и вставлять этот раздел во второй файл)?

Например, у меня есть два .texфайла с именами A.texи B.tex. Я ожидаю, что если у A.texменя есть:

\documentclass{article}
\newcommand\MycommandA[1]{\textcolor{red}{#1}}
\begin{document}

\MycommandA{This is a text}

\end{document}

и у B.texменя есть как

\documentclass{article}
\newcommand\MycommandA[1]{\textcolor{red}{#1}}
\begin{document}

\MycommandA{This is text}

\end{document}

Поэтому я хочу, чтобы при изменении \MycommandA{This is a text}на A.texLaTeX \MycommandA{This is a book}автоматически применил то же изменение в B.tex.

решение1

Многие настольные редакторы поддерживают редактирование нескольких файлов, но я не думаю, что Overleaf это делает; это не совсем вопрос Latex, поскольку Latex никогда не редактирует свой исходный код.

Оптимальным способом было бы хранить все общие тексты или тексты команд в одном файле, как в примере ниже.

моикоманды.tex

\newcommand\MycommandA[1]{\textcolor{red}{#1}}
\newcommand\textA{This is a shared text}

Для небольших фрагментов, таких как This is a shared textудобно использовать команду, как указано выше. Для более крупных фрагментов, таких как целый раздел, можно использовать отдельный файл.

Тогда текст появляется только в одном месте, и ваш A.texи B.texможет выглядеть так

А.текс

\documentclass{article}
\input{mycommands}
\begin{document}

\section{Intro for A}% not shared

\MycommandA{\textA}% shared

\MycommandA{Text just in A but using the shared command}

\input{sharedsec}% shared
\end{document}

Б.текс

\documentclass{report}
\input{mycommands}
\begin{document}

\section{Intro for B}% not shared

\MycommandA{\textA}% shared

Some text just in B.

\input{sharedsec}% shared
\end{document}

sharedsec.tex

\section{Something}
This text just appears once in the source but appears in A and B

Связанный контент