후속 조치이 기사나는 사용한다기본 계획마크다운 파서 지원 제공판독일부 매크로와 함께. 불행히도 gpp
모든 공백이 결과에 복사되는 것 같습니다.
예를 들어 파일을 고려하십시오.test.md
% Title
% Raphael
% 2012
\lorem \ipsum
그리고test.gpp
\define{lorem}{Lorem}
\define{ipsum}{ipsum...}
이제 gpp -T --include test.gpp test.md
Yield를 호출하세요.
<empty line>
% Title
% Raphael
% 2012
Lorem ipsum...
이것은 pandoc
내가 사용하는 경우 추가 줄 바꿈은 실제로 정의 사이의 줄 바꿈입니다.
\define{lorem}{Lorem}@@@
\define{ipsum}{ipsum...}
추가 옵션을 사용하면 +c "@@@" "\n"
빈 줄이 사라집니다. 하지만 이 솔루션은 보기에도 좋지 않을 뿐만 아니라 두 가지 치명적인 결함도 안고 있습니다.
첫째, @@@
소스 파일의 주석 표시로도 간주됩니다. @@@
Markdown에서는 금지된 것이 없으므로 ( @@@
또는 선택한 다른 구분 기호) 소스 파일에 나타날 때 의도하지 않은 결과가 발생할 수 있습니다.
둘째, 적절한 들여쓰기로 인해 줄 시작 부분의 공백을 덮지 않습니다. 예를 들어,
\define{lorem}{@@@
\if{a == a}@@@
![some image](test.png)@@@
\endif@@@
}@@@
이러한 모든 이미지 태그가 4개의 공백으로 들여쓰기되어 pandoc
지정된 대로 코드 형식이 지정됩니다.
그렇다면 gpp
파일을 한 줄로 작성하거나 들여쓰기를 하지 않고 보기 흉한 줄 끝 주석을 삽입하는 것보다 gpp
여분의 공백이 모든 곳에서 번지는 것을 방지하기 위해 무엇을 할 수 있습니까?
답변1
모든 쓰레기가 포함 파일에 있다고 가정하면 문서가 시작되기 전에 이를 후처리할 수 있습니다.
테스트.gpp:
\define{lorem}{Lorem}
\define{ipsum}{ipsum...}
----- cut here ------
그런 다음 다음을 수행하십시오.
gpp -T --include test.gpp test.md | sed '1,/----- cut here ------/d'
( gpp
표준 출력으로 출력하시겠습니까? 그렇지 않으면 sed
출력 파일에서 실행하면 됩니다.)
답변2
한 가지 가능성은 포함된 매크로 파일을 전처리하고 한 줄로 축소하는 것입니다 sed
( 결합하다ams 접근 방식, 이 makefile 조각은 문제를 해결합니다.
sed 's/^\s*//;s/\s*?$$//;H;$$!d;:e;x;/^$$/d;s/\n//g' $(MACROFILE) > $(BUILDPATH)/$(MACROFILE);
echo "$(MFENDMARKER)" >> $(BUILDPATH)/$(MACROFILE);
gpp -T -x -Dtarget=pdf --include $(BUILDPATH)/$(MACROFILE) $(MAINFILE) | \
sed '1,/$(MFENDMARKER)/d' | \
pandoc -S -R --toc -f markdown -o $(DISTPATH)/$(NAME).pdf;
이제 그 이면에는 불쾌함이 도사리고 있습니다.