问题:大多数同事使用的 WYSIWYG 文档;我知道我的笔记中有更好的内容,但我无法高效地与他们分享/展示,而不会因过多的内联注释而混淆他们。它们只是我的笔记,所以我不想为了出版质量而对它们进行加工。%...
输出中内联注释 ( ) 是必需的。
目标. 优先考虑来自内联注释的文本内容(%...
)其中不同的子环境(%%...
用于一个内容的开始;%$...
可能更好地标记典型的内联注释)。
- 我需要与非 LaTeX 用户协作。我正在考虑如何从我的笔记中打印 .pdf 以供概览。
- 我也需要评论,因为它们对于理解至关重要。
- 我不想使用任何非完整版 LaTeX 软件包来改变我写笔记的方式。我喜欢完整的语义,但我的同事可能会感到困惑,尤其是对内联注释。
- 评论。我在评论中保存了来源、一些源代码和解释。它们是必需的,因为我多次在其中使用超链接来进一步扩展/可视化案例。
解析完整 LaTeX 语义的可视化方法
- 给内联注释添加颜色/斜体/缩小尺寸 (
%...
)。 - 单独的双重注释环境(
%%...
) - 内联注释等中的新环境(
%$...
) - 我认为 Tikz 可以作为这里的工具。
虚拟内容示例
\section{1.1.2016 Bowel obstruction. Classification. DX. Diff DX}
%% Sources
% http://apps.who.int/iris/bitstream/10665/75146/1/9789241548441_eng.pdf#page=35
% dia.pdf#page=534
% liver 3.pdf
% Localisation of hernias
Bowel obstruction.
Small bowel obstruction (SBO).
\begin{enumerate}
\item DX
Examination.
Percussion. % liver border, has to do
Auscultation.
%
Prognosis of patient: % recommendations
% Serious.
% Cholecystitis with % fistula to skin.
% Cholecystectomy convential; bleeding postoperative (hematoma in abdominal cavity), ...
%% Hypertension
% Level Systolic Diastolic
% normal <120 <80
% pre 120-139 80-89
% I 140-159 90-99
% II >160 >=100
\end{enumerate}
\begin{enumerate}
\item Lorem
Physics:
Diffusion, ultrafiltration, convection.
\end{enumerate}
\begin{enumerate}
\item Procedure
Lorem
\end{enumerate}
\section{19.5.2016}
% Lorem
\section{20.5.2016}
% Lorem
\section{23.5.2016}
% Lorem
\section{24.5.2016}
% Lorem
% Indications.
Treatment
\begin{itemize}
\item Definition.
\end{itemize}
\section{25.5.2016}
% Masi
%% 26.5.-3.6. from 11-14
\section{26.5.2016}
% Masi
\section{27.5.2016}
单独的环境
verbatim
。没有优先考虑内联评论的内容,太原始了。minted
。我认为它不能很好地适用于整个文档。listings
。它是为源代码设计的,不适用于文本和注释。所以我认为它不是适合这里的工具。
1. 缩短内联评论中的长链接
等输入http://apps.who.int/iris/bitstream/10665/75146/1/9789241548441_eng.pdf#page=35who...eng.pdf#page=35
。如果能有类似上面超链接的输出就好了。我认为如果没有额外的语义,这是不可能的。
我认为这也可以通过缩小注释并减小行距来解决。
2. 行内注释中的表格以双注释标记 ( %%
)开头
请参阅输入示例。我认为 Windows 帮助文件 (。H) 这样就可以很好地制作一个关于表格的新文档,并附上指向源的链接。
回顾 UlrikeFischer 的回答
我认为 if-else 结构在设计上很难很好地发挥作用。系统化的方法可以更好地发挥作用:函数带来特定的特性。TODO 函数。
- 测试 1. 匹配
%%
不应匹配%.*%
。数据%\include{8.9.2015.tex} % Masi
。其他测试数据% About 75\% efficiency of transplants work.
此测试数据通过 Ulrike 的第 2 次编辑。
应用双重注释着色 ( %.*%
) 会使许多语义命令 ( \section
, ...) 就%%
在它们之前溢出。
\section{25.5.2016}
% Masi
%% 26.5.-3.6. from 11-14
\section{26.5.2016}
% Masi
\section{27.5.2016}
预期输出:26.5.-3.6. 从 11-14绿色部分2016 年 5 月 26 日黑色*,以及马西为红色。输出:之后全部为绿色%%
证据不完整,因为上面的例子没有显示出来。TODO
\t
插入分页符会导致复杂情况。我认为这可能与单词之前的制表符有关扩散. 测试数据2\begin{enumerate} \item Lorem Physics: Diffusion, ultrafiltration, convection. \end{enumerate}
预期输出是一行:物理学:扩散、超滤、对流。 输出
测试数据3
\begin{enumerate} \item Procedure Lorem \end{enumerate}
预期输出:单词程序黑色。Ulrike 第三次输入后测试通过。
测试数据5
\section{19.5.2016} % Lorem \section{20.5.2016} % Lorem \section{23.5.2016} % Lorem \section{24.5.2016} % Lorem
预期输出:24.5.2016 的评论为红色。在 Ulrike 的第 3 次输入后通过。
测试用例 6
% Indications. Treatment \begin{itemize} \item Definition. \end{itemize}
预期输出:适应症红色的,治疗黑色,以及定义黑色。输出:治疗黑色,以及定义红色的
- 测试用例 7:如何处理内联评论中的下划线/标签?
输入
% http://apps.who.int/iris/bitstream/10665/75146/1/9789241548441_eng.pdf#page=35
预期输出:红色链接,无格式。解决方案
% http://tex.stackexchange.com/a/309617/13173
\catcode`\_=12 % disable function of underscores
\catcode`\#=12 % disable function of hashtags
- 测试用例 8:有百分号的 URL
输入
% http://apps.who.int/%%%iris/bitstream/10665/75146/1/9789241548441_eng.pdf#page=35
输出http://apps.who.int/iris/bitstream/10665/75146/1/9789241548441_eng.pdf#page=35
。预期输出...%%%iris...
。
解决方案:在内联评论中添加链接之前先展开链接。我认为此功能并不重要。
- 测试用例 9:优先考虑同一行中较早的内联注释
输入
% masi is lorem ipsun % this is less important but % even more less important`
当前输出:masi is lorem ipsun this is less important but even more less important
没有优先顺序。
- 测试用例 10:在主文档中包含 .tex 文件
代码
\include{8.9.2015} % this is a comment
预期输出:类似于主文档中的文本。输出:许多错误。\include
可能是内部原因导致的。
如何从 .tex Notes 打印带有可视化内嵌注释的 .pdf 以供非 LaTeX 用户概览?
答案1
好吧,tikz 当然不是这个工具。但是你可以自然地改变 % 的含义。问题是,很难将更改限制在“当前行的末尾”。在我看来,最好的方法是逐行读取文件:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\begin{document}
\makeatletter
\newif\ifdoublecomment
\newif\ifincomment
\newcommand\commentstyle{\ifdoublecomment\color{green}\bfseries\else\color{red}\footnotesize\fi}
\begingroup
\catcode`\%=13
\def%{\@ifnextchar%{\doublecommenttrue\commentstyle\incommenttrue}{\commentstyle\incommenttrue}}
\newread\myread
\openin\myread=testinput.tex
\@whilesw\unless\ifeof\myread\fi{
\read\myread to \dataline
\dataline
\ifincomment\par\fi\color{black}\normalsize\normalfont\incommentfalse\doublecommentfalse}
\closein\myread
\endgroup
\end{document}
测试输入.tex:
Small bowel obstruction (SBO).
\begin{enumerate}
\item DX
Examination.
Percussion. % liver border, has to do
Auscultation.
%
Prognosis of patient: % recommendations
% Serious.
% Cholecystitis with %fistula to skin.
% Cholecystectomy convential; bleeding postoperative (hematoma in abdominal cavity), ...
%% Hypertension
% Level Systolic Diastolic
% normal <120 <80
% pre 120-139 80-89
% I 140-159 90-99
% II >160 >=100
\item blblbl
blblblb
bllblb
\end{enumerate}
输出
我认为可以借助 xstring 等使链接活跃(并且更短)——您只需要检查该行是否包含 http,但您应该知道,虽然设置这样一个简单的案例并为您的所有愿望设计解决方案很容易,但微调和实际实施可能非常耗时。
答案2
这里没有足够的声誉来评论,但我想说你可能可以使用 Markdown 或 Pandoc 之类的东西。
如果这还不够,您可以使用模板引擎在 LaTeX 中设置所有内容,并使用 YAML 或其他语言编写笔记。我使用 Jinja2 和 Python 自动生成我的简历。(https://github.com/masasin/resume)