Для будущих читателей оригинальное предложение (внизу) все еще может быть полезным, если вы знаете, что пути короткие.
Я изменил недавнее предложение, потому что в его исходной форме, когда документ находился не в папке «Релиз», а в папке «Релиз» существовал документ с тем же именем и полями, этот документ будет пытаться включить себя, пока Word не достигнет предела вложенности полей. (около 19/20 уровней), а затем появляется диалоговое окно с сообщением об ошибке. Другая проблема, которая может существовать при таком подходе, заключается в том, что Word в некоторых случаях может вызывать диалоговое окно в любом случае (я обнаружил, что это произошло с Word 2010/Win 7, когда документ находился в пути UNC, но не в буклете: тип пути, но Я не знаю точно, какие обстоятельства и настройки вызовут эту проблему. AFAICS поле все еще работает правильно в этой ситуации, но всплывающее окно диалога почти наверняка будет тревожным (по крайней мере) для конечного пользователя).
Чтобы сделать это, вам нужно вставить закладку, которая не содержит поле {IF}. Чтобы пользователю было сложнее удалить его, вы можете, например, щелкнуть непосредственно перед «Ошибка!msgstr "текст и вставьте туда закладку. Я использовал название закладки "bkmk_release"
В противном случае лучшее, на что я способен, это то, что он использует "хитрость" пути Windows, которая обычно работает в Word и работает за пределами 128-символьного пути (я подозреваю, что следующим ограничением будет общее число из 256 символов).
{ IF "{ INCLUDETEXT "{ FILENAME \p }\\..\\..\\Release\\{ FILENAME }" bkmk_rlease }" = "Error! Include may not refer to itself." "DOCUMENT OUT OF DATE" "OK" }
то есть, вероятно, он не будет работать, если ваш файл может быть законно по адресу http://. В его нынешнем виде он опирается на англоязычную настройку. Вы можете улучшить это, используя
{ IF "{ INCLUDETEXT "{ FILENAME \p }\\..\\..\\Release\\{ FILENAME }" bkmk_release }" = "{ INCLUDETEXT "{ FILENAME \p }" }" "DOCUMENT OUT OF DATE" "OK" }
но я не проверял.
Другими словами, если файл находится в папке Release, он пытается включить себя, и INCLUDETEXT должен вернуть ошибку. Если файл не находится в папке Release, includetext попытается открыть файл с таким же именем в папке Release. Если этого не существует, вы увидите другую ошибку (вероятно, существует более одной возможности), например, не существует, недопустимое имя. Единственная проблема - если он существует и содержит текст «Ошибка! Включить не может ссылаться на себя. ":-)
Могут быть и другие "крайние случаи", например, если документ находится в папке верхнего уровня.
Оригинальное предложение:
До тех пор, пока Release всегда является папкой, содержащей файл, а не папкой, расположенной дальше по иерархии, что-то вроде этого должно делать это:
{ IF "{ INCLUDETEXT "{ FILENAME \p }\\..\\..\\Release\\{ FILENAME }" }" = "{ INCLUDETEXT "{ FILENAME \p }" }" "DOCUMENT OUT OF DATE" "OK" }
Хотя если подумать об этом дальше, может быть проблема с более длинными путями - даже 128 символов могут быть ограничением, что исключало бы это в некоторых сценариях.