Giter Site home page Giter Site logo

cebe / pdfpc-latex-notes Goto Github PK

View Code? Open in Web Editor NEW
146.0 12.0 36.0 48 KB

Latex Package that allows creating a pdfpc compatible notes file directly from your latex presentation \notes.

Home Page: http://cebe.github.io/pdfpc-latex-notes

License: MIT License

TeX 69.02% Makefile 30.98%
latex latex-presentation pdfpc tex beamer presentation notes hacktoberfest

pdfpc-latex-notes's Introduction

pdfpc-latex-notes

Build Status

This is a LaTeX Package that allows creating pdfpc compatible notes file directly from your latex presentation \notes.

It was created as a result from a question on stackoverflow.

Usage

Download pdfpcnotes.sty from github and put it somewhere where latex can find it.
The same directory as your .tex file will work.

Add \usepackage{pdfpcnotes} somewhere before \begin{document} in your .tex-file.

You can then use the \pnote{} command like you used \note{} before. Behavior will be the same but it will additionally write notes to file in pdfpc readable format.

When running for example pdflatex you will end up with an additional .pdfpc file that will automatically be recognized by pdfpc and displays your notes nicely in the notes section on your control screen.

Check the demo/ folder for an example .tex file.

Options

It is possible to give the following options for \usepackage:

  • duration=N: Set the duration in minutes. See --duration
  • lastminutes=N: pdfpc will warn during the last N minute. See --last-minutes.
  • starttime=HH:MM: Set the start time of the presentation. See --start-time.
  • endtime=HH:MM: Set the end time of the presentation. See --end-time.

Anything not working yet?

  • It does not preserve newlines, so everything in a \pnote{} will end up in one line of the output file. To replace newlines and paragraphs you may use the following commands:

        sed -i 's/\\\\/\n/g' slides.pdfpc
        sed -i 's/\\par/\n\n/g' slides.pdfpc
    

Contact

I'm happy to receive your feedback! Drop me a line to [email protected] or write in github issue tracker if you find a bug.

pdfpc-latex-notes's People

Contributors

8sd avatar abooij avatar cebe avatar drup avatar lucaswerkmeister avatar mehiel avatar sje30 avatar the-compiler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pdfpc-latex-notes's Issues

Multiple \pnote{} commands per frame

Need to add support for this.
We can have an additional counter to track last frame. if we are still on the same frame, simply skip adding ### \framenumber

Support overlays

Notes created with \pnote[item]<2->{my note} should be visible starting from the second overlay.

(some?) utf8 encoded characters are transformed into latin1

In combination with pdflatex and \usepackage[T1]{fontenc} utf-8 characters in notes are converted to latin1 which is a problem for pdfpc.

With this input (test.tex):

\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{../includes/pdfpcnotes}

\begin{document}
\begin{frame}
  schön
  \pnote{- schön}
\end{frame}
\end{document}

the following output (test.pdfpc) is produced:

[file]
test.pdf
[notes]
### 1
- sch\366n

Note that I have inserted the \366 here manually as my browser converted it to the letter "ö" - hexdump -C test.pdfpc shows that this is latin1:

00000000  5b 66 69 6c 65 5d 0a 74  65 73 74 2e 70 64 66 0a  |[file].test.pdf.|
00000010  5b 6e 6f 74 65 73 5d 0a  23 23 23 20 31 0a 2d 20  |[notes].### 1.- |
00000020  73 63 68 f6 6e 0a                                 |sch.n.|
00000026

With this file pdfpc does not show any notes.

After recode latin1..utf8 test.pdfpc this is indeed utf-8:

00000000  5b 66 69 6c 65 5d 0a 74  65 73 74 2e 70 64 66 0a  |[file].test.pdf.|
00000010  5b 6e 6f 74 65 73 5d 0a  23 23 23 20 31 0a 2d 20  |[notes].### 1.- |
00000020  73 63 68 c3 b6 6e 0a                              |sch..n.|
00000027

And pdfpc correctly shows "schön" as a note.

Note that \usepackage[T1]{fontenc} has an influence on that. Removing that line from test.tex, results in the following test.pdfpc:

[file]
test.pdf
[notes]
### 1
- sch\protect \unhbox \voidb@x \bgroup \U@D 1ex{\setbox \z@ \hbox {\char 127}\dimen@ -.45ex\advance \dimen@ \ht \z@ \fontdimen 5\font \dimen@ }\accent 127\fontdimen 5\font \U@D o\egroup n

... which does not work with pdfpc either. ;-)

This happens with the following version of pdflatex:

> pdflatex -version
pdfTeX 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian)
kpathsea version 6.2.2
Copyright 2016 Han The Thanh (pdfTeX) et al.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.28; using libpng 1.6.28
Compiled with zlib 1.2.8; using zlib 1.2.8
Compiled with poppler version 0.48.0

My current workaround is to (automatically) call recode after each run of pdflatex ... so it's not a big problem.

The framenumber counter isn't necessarily equal to the output frame number

For example, our corporate template starts with framenumber 0 for the title page. I don't know if it's possible to figure this out automatically, but being able to pass a known offset as a package option would be good.

As a workaround, I inserted the following line before the definition of pnote, and replaced theframenumber with pdfpcframenumber:

\newcommand{\pdfpcframenumber}{\the\numexpr\value{framenumber}+1\relax}

That is completely unportable, of course, but could just as well be applied with an offset that defaults to 0.

PNote Does not Work Together with onlyenv

When I try to add an onlyenv-Stuff for 3 slides in one frame, the following notes are two slides too early:

\documentclass[hyperref={pdfpagelabels=false}]{beamer}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{pdfpcnotes}

\begin{document}

\begin{frame}{}
 My Title Slide

 \pnote{Say that this is this title slide!}

\end{frame}

\begin{frame}<1-3>
  \begin{onlyenv}<1-3>
    \begin{center}
      This is a slide
    \end{center}
  \end{onlyenv}
  \pnote{Say that this are three times the same slide}
\end{frame}

\begin{frame}[fragile]

Here comes the wrong positioning

\pnote{This note is displayed wrong}

\end{frame}
\end{document}

The note "This note is displayed wrong" is displayed on slide 3, i.e. on the second slide of frame 2, instead of slide 5, i.e. first and only slide of frame 3. Is there a workaround for this?

Notes associated to wrong frames.

I don't know why this happens. I don't have the time right now to take a look at the problem (I should discuss my thesis in two days), but I will in this holidays. The problem is that in my presentation each pnote is shown with an offset of 1 frame (e.g. the note associated with the frame 4 is shown at frame 3).

I don't know why this happens, probably because I use the metropolis template, probably because I use a title page. Both of them could mess with the frame number.

This is also related to issue #21. Note that my solution is as simple as possible but tested only in my use case.

The solution is simply to reset the counter to a different value:

\setcounter{framenumber}{1}

test suite errors

The test suite errors for me. Am I missing some package?


\033[01mRunning test simple-test...\033[0m
make[1]: Entering directory '/home/auke/dev/pdfpc-latex-notes/tests/simple-test'
TEXINPUTS=.::../.. pdflatex -halt-on-error -file-line-error -shell-escape -interaction=nonstopmode -output-directory=out test.tex > out/pdflatex.log
# exists non-zero if files are different
diff expected.pdfpc out/test.pdfpc
make[1]: Leaving directory '/home/auke/dev/pdfpc-latex-notes/tests/simple-test'
\033[01;32mSuccess!\033[0m

\033[01mRunning test utf8-encoding-test...\033[0m
make[1]: Entering directory '/home/auke/dev/pdfpc-latex-notes/tests/utf8-encoding-test'
TEXINPUTS=.::../.. pdflatex -halt-on-error -file-line-error -shell-escape -interaction=nonstopmode -output-directory=out test.tex > out/pdflatex.log

kpathsea: Running mktextfm ecss0400
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input ecss0400
This is METAFONT, Version 2.7182818 (TeX Live 2017/Arch Linux) (preloaded base=mf)

(/home/auke/.texlive/texmf-var/fonts/source/jknappen/ec/ecss0400.mf
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exbase.mf)
(/usr/share/texmf-dist/fonts/source/jknappen/ec/ecss.mf
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exroman.mf
 Ok (/usr/share/texmf-dist/fonts/source/jknappen/ec/exaccess.mf
 Ok) (/usr/share/texmf-dist/fonts/source/jknappen/ec/expseudo.mf
 Ok) (/usr/share/texmf-dist/fonts/source/jknappen/ec/exruwest.mf
 Ok [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203]
[204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215]
[216] [217] [218] [219] [220] [221] [222] [223])
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exrlwest.mf
 Ok [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235]
[236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247]
[248] [249] [250] [251] [252]
> 0 NNE 1 NNW WNW 2 (WSW) SSW 3 (SSE ESE) ENE NNE ENE ESE SSE SSW 4 5 WSW 0 (WN
W NNW)
! Strange path (turning number is zero).
<to be read again> 
                   ;
<for(%CAPSULE10676)> ...oke.z3e---z5e...{left}z6e;
                                                  pickup.fine.nib;pos6'(bot_...
l.1012 repeat_once
                  ;
[253]
> 0 WSW 1 (WNW) NNW WNW WSW SSW SSE ESE 2 3 SSE 4 SSW 5 WSW 6 WNW NNW 7 (NNE) E
NE 8 (ESE) SSE ESE 9 ENE 10 NNE 11 NNW WNW 12 13 WSW SSW 0
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.1063  &super_arc.e(5,6)&z6e{left}...{up}z7e;
                                                % bowl
[254] [255]) (/usr/share/texmf-dist/fonts/source/jknappen/ec/exrueast.mf
 Ok [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139]
[140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151]
[152] [153] [154] [155] [156] [157])
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exrleast.mf
 Ok
> 0 ENE 1 NNE ENE ESE SSE SSW WSW 2 3 SSW 4 SSE 5 ESE 6 ENE NNE 7 (NNW WNW) WSW
 8 SSW WSW 9 WNW 10 NNW 11 NNE ENE 12 13 ESE SSE 0 (ESE)
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.75  & pulled_arc.e(5,6)...{up}z7e;
                                     % bowl
[158] [160] [161] [162]
>> x50
! Undefined x coordinate has been replaced by 0.
<to be read again> 
                   {
--->{
     curl1}..{curl1}
lc_hachek_accent->...ldraw.z54l--z51l--z51r--z50--
                                                  z53l--z53r--z54r--cycle;fi...
l.257 ...serifs: 0.5[0.5[x3l,x3],x0r] else: x2 fi)
                                                  ;
[163]
> 0 ENE 1 NNE ENE ESE SSE SSW WSW 2 3 SSW 4 SSE 5 ESE 6 ENE NNE 7 (NNW WNW) WSW
 8 SSW WSW 9 WNW 10 NNW 11 NNE ENE 12 13 ESE SSE 0 (ESE)
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.280  & pulled_arc.e(5,6)...{up}z7e;
                                      % bowl
[164]
>> x50
! Undefined x coordinate has been replaced by 0.
<to be read again> 
                   {
--->{
     curl1}..{curl1}
lc_hachek_accent->...ldraw.z54l--z51l--z51r--z50--
                                                  z53l--z53r--z54r--cycle;fi...
l.323 lc_hachek_accent(x2)
                          ;
[165] [166] [167] [168] [169] [170] [171]
>> x50
! Undefined x coordinate has been replaced by 0.
<to be read again> 
                   {
--->{
     curl1}..{curl1}
lc_hachek_accent->...ldraw.z54l--z51l--z51r--z50--
                                                  z53l--z53r--z54r--cycle;fi...
l.566 lc_hachek_accent(1/2[x1r,x.a1])
                                     ;
[172] [173] [174] [175]
>> x50
! Undefined x coordinate has been replaced by 0.
<to be read again> 
                   {
--->{
     curl1}..{curl1}
lc_hachek_accent->...ldraw.z54l--z51l--z51r--z50--
                                                  z53l--z53r--z54r--cycle;fi...
l.679 lc_hachek_accent(0.5[x1,x4])
                                  ;
[176] [177]
>> x50
! Undefined x coordinate has been replaced by 0.
<to be read again> 
                   {
--->{
     curl1}..{curl1}
lc_hachek_accent->...ldraw.z54l--z51l--z51r--z50--
                                                  z53l--z53r--z54r--cycle;fi...
l.764 lc_hachek_accent(0.5[x3l,x1l])
                                    ;
[178] [179] [180] [181] [182] [183]
> 0 NNE 1 NNW WNW 2 (WSW) SSW 3 (SSE ESE) ENE NNE ENE ESE SSE SSW 4 5 WSW 0 (WN
W NNW)
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.989  fill stroke z3e---z5e...{left}z6e;
                                           % arc
[184]
! Square root of -1.16454 has been replaced by 0.
diag_ratio->...((EXPR2)*((EXPR5)++(EXPR4)*sqrt.a_)
                                                  -b_*(EXPR5))/a_/(EXPR4)end...
<for(1)> ...stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3))
                                                  ;penpos1(alpha*(z_stem-tin...
l.1025 repeat_once
                  ;
! Square root of -1.09401 has been replaced by 0.
diag_ratio->...((EXPR2)*((EXPR5)++(EXPR4)*sqrt.a_)
                                                  -b_*(EXPR5))/a_/(EXPR4)end...
<for(%CAPSULE11074)> ...-y3,x2r-x3l-slant*(y2-y3))
                                                  ;penpos1(alpha*(z_stem-tin...
l.1025 repeat_once
                  ;
[185]
! Square root of -1.09401 has been replaced by 0.
diag_ratio->...((EXPR2)*((EXPR5)++(EXPR4)*sqrt.a_)
                                                  -b_*(EXPR5))/a_/(EXPR4)end...
l.1039 ...z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3))
                                                  ;
>> x50
! Undefined x coordinate has been replaced by 0.
<to be read again> 
                   {
--->{
     curl1}..{curl1}
lc_hachek_accent->...ldraw.z54l--z51l--z51r--z50--
                                                  z53l--z53r--z54r--cycle;fi...
l.1053 lc_hachek_accent(1/2[x6r,x1r])
                                     ;
[186]
! Square root of -1.16454 has been replaced by 0.
diag_ratio->...((EXPR2)*((EXPR5)++(EXPR4)*sqrt.a_)
                                                  -b_*(EXPR5))/a_/(EXPR4)end...
<for(1)> ...stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3))
                                                  ;penpos1(alpha*(z_stem-tin...
l.1083 repeat_once
                  ;
! Square root of -1.09401 has been replaced by 0.
diag_ratio->...((EXPR2)*((EXPR5)++(EXPR4)*sqrt.a_)
                                                  -b_*(EXPR5))/a_/(EXPR4)end...
<for(%CAPSULE9288)> ...2-y3,x2r-x3l-slant*(y2-y3))
                                                  ;penpos1(alpha*(z_stem-tin...
l.1083 repeat_once
                  ;
[187] [188]) (/usr/share/texmf-dist/fonts/source/jknappen/ec/exbraces.mf
 Ok [94] [126] [23] [40] [41] [60] [124] [62] [91] [93] [92] [123] [125]
[95] [127] [32]) (/usr/share/texmf-dist/fonts/source/jknappen/ec/expunct.mf
 Ok [14] [15] [19] [20] [13] [18] [33] [39] [42] [43] [44] [46] [47] [58]
[59] [61] [96] [189] [17] [45] [16] [21] [22])
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exaccent.mf
 Ok [0] [1] [2] [3] [4] [5] [6]
>> x50
! Undefined x coordinate has been replaced by 0.
<to be read again> 
                   {
--->{
     curl1}..{curl1}
lc_hachek_accent->...ldraw.z54l--z51l--z51r--z50--
                                                  z53l--z53r--z54r--cycle;fi...
l.70 lc_hachek_accent(.5w)
                          ;
[7] [8] [9] [10] [11] [12])
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exsign.mf
 Ok
> 0 NNE 1 (NNW WNW) WSW 2 SSW 3 SSE ESE 4 5 (ENE) NNE 6 (ENE) ESE SSE 7 8 SSW 9
 WSW 0 (WNW NNW)
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.38  & pulled_super_arc.e(2,3)(superpull);
                                             % left half of lower bowl
> 0 SSW 1 (SSE ESE) ENE 2 NNE 3 NNW WNW 4 5 (WSW) SSW 6 (WSW) WNW NNW 7 8 NNE 9
 ENE 0 (ESE SSE)
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.39 ...troke super_arc.e(3,4) & super_arc.e(4,1);
                                                   % right half of lower bowl
[24] [34] [35] [36] [37] [64] [191] [159])
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exrlig.mf
 Ok [25] [26] [28] [27] [29] [30] [31])
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exromp.mf
 Ok [38] [63] [190])
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exrulett.mf
 Ok [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78]
[79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90])
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exrllett.mf
 Ok [97]
> 0 WSW 1 (WNW) NNW WNW WSW SSW SSE ESE 2 3 SSE 4 SSW 5 WSW 6 WNW NNW 7 (NNE) E
NE 8 (ESE) SSE ESE 9 ENE 10 NNE 11 NNW WNW 12 13 WSW SSW 0
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.83 ...ed_arc.e(4,5)&pulled_arc.e(5,6)...{up}z7e;
                                                   % bowl
[98] [99]
> 0 ENE 1 NNE ENE ESE SSE SSW WSW 2 3 SSW 4 SSE 5 ESE 6 ENE NNE 7 (NNW WNW) WSW
 8 SSW WSW 9 WNW 10 NNW 11 NNE ENE 12 13 ESE SSE 0 (ESE)
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.140  & pulled_arc.e(5,6)...{up}z7e;
                                      % bowl
[100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111]
> 0 WSW 1 (WNW) NNW WNW WSW SSW SSE ESE 2 3 SSE 4 SSW 5 WSW 6 WNW NNW 7 (NNE) E
NE 8 (ESE) SSE ESE 9 ENE 10 NNE 11 NNW WNW 12 13 WSW SSW 0
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.476  &super_arc.e(5,6)&z6e{left}...{up}z7e;
                                               % bowl
[112] [113] [114] [115] [116] [117] [118] [119] [120]
> 0 NNE 1 NNW WNW 2 (WSW) SSW 3 (SSE ESE) ENE NNE ENE ESE SSE SSW 4 5 WSW 0 (WN
W NNW)
! Strange path (turning number is zero).
<to be read again> 
                   ;
l.799  fill stroke z3e---z5e...{left}z6e;
                                           % arc
[121]
! Square root of -1.09401 has been replaced by 0.
diag_ratio->...((EXPR2)*((EXPR5)++(EXPR4)*sqrt.a_)
                                                  -b_*(EXPR5))/a_/(EXPR4)end...
l.817 ...,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3))
                                                  ;
[122]) (/usr/share/texmf-dist/fonts/source/jknappen/ec/exrdigit.mf
 Ok [48] [49] [50] [51] [52] [53] [54] [55] [56] [57])
(/usr/share/texmf-dist/fonts/source/jknappen/ec/exrligtb.mf
 Ok) ) ) )
(see the transcript file for additional information)
Font metrics written on ecss0400.tfm.
Output written on ecss0400.600gf (256 characters, 20732 bytes).
Transcript written on ecss0400.log.
mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input ecss0400' failed.
kpathsea: Appending font creation commands to missfont.log.
make[1]: *** [Makefile:6: test.pdf] Error 1
make[1]: Leaving directory '/home/auke/dev/pdfpc-latex-notes/tests/utf8-encoding-test'
\033[01;31mFailed!\033[0m
make: *** [Makefile:13: test] Error 1

It's better to achieve preserve newlines.

When using notes, I believe put all information in one area might cause terrible trouble.

So why not make it appear in different lines using some newline flag in notes?

I'm using macOS Catalina now, thanks.

Supporting overlays (for handouts).

A slightly different view on #12 is the use of handouts. \note<2>{my note} will show up next to the correct overlay.
However, although \pnote{} is also being shown in the handouts as notes, all the contents of every \pnote on that slide are shown on every overlay.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.