Я использую комбинацию уценки и m4 для создания трех разных версий документа в зависимости от флагов, указанных в начале. Назовем их Золото, Серебро и Бронза.
Проблема, с которой я столкнулся, заключается в том, что если у меня есть раздел, который появляется в операторе ifdef с запятыми, m4 считает остальную часть раздела ложной.
ifdef(`GOLDANDSILVER',dnl
## Here's a subsection header
### Subsubsection about this, that, and the other thing
Aren't examples fun? Here's some punctuation, failure, and misfortune.
)dnl
Интересно, что это происходит не в подразделе, а в основном тексте.
Мое текущее уродливое решение состоит в том, чтобы использовать «фиктивную запятую», которую можно передать и заменить на sed.
ifdef(`GOLDANDSILVER',dnl
## Here's a subsection header
### Subsubsection about thisREPLACE_ME_COMMA thatREPLACE_ME_COMMA and the other thing
Aren't examples fun? Here's some punctuationREPLACE_ME_COMMA failureREPLACE_ME_COMMA and misfortune.
)dnl
Я ищу более чистое, предпочтительно только для m4, решение, которое позволяет мне иметь «,» в теле моих операторов ifdef.
Что я понял методом проб и ошибок:
- m4, кажется, игнорирует любой контент или определения в строках с префиксом #
- [,] не выходит запятая
- [[,]] не выходит запятая